【平头哥RVB2601-demo解析和内核分析】YOC架构+三色指示灯
[复制链接]
本帖最后由 sljzyjj 于 2022-7-3 20:07 编辑
RVB2601开发板采用CDK软件开发,适配YOC操作系统,不是裸机编程。
编写应用程序前,熟悉YOC操作系统,是非常重要的事。
熟悉以下几点:1、YOC操作系统架构;2、系统程序入口;3、应用程序调用架构。
一、YOC操作系统架构
YOC分四个层次:1、硬件规范层;2、核心服务层;3、应用组件层;4、业务框架层。
1、硬件规范层:定义SOC的统一接口;
2、核心服务层:包含了 Rhino 操作系统内核、设备管理框架、低功耗框架、高级安全可信计算(TEE)、网络协议、蓝牙协议栈、虚拟文件系统、网络管理器等。核心服务层采用独立模块化设计,用户可以根据应用需求,自由组装。Rhino操作系统内核是必须的。
3、应用组件层:支持用户定制化配置、独立编译、统一安装。
4、业务框架层:YoC 平台中提供了 IoT 上云框架、智能语音框架、视觉AI框架。
对于不同芯片的移植需求,只需要根据芯片驱动接口层(CSI)的定义,即可以将YoC 移植到该芯片上。
二、三色指示灯驱动
三色指示灯驱动就是操作3个GPIO口,CH2601_PA7 LED_RED (三色灯-红灯)、CH2601_PA25 LED_GREEN (三色灯-绿灯)、CH2601_PA4 LED_BULE (三色灯-蓝灯)。
将对应J1位置的插针用跳线帽连接到一起。
现在CH2601的设备驱动接口已升级为CSI2。CSI2的架构如下:
CSI 的具体内容包括:
CSI-CORE:定义了CPU和相关紧耦合外设的接口规范
CSI-DRIVER:定义了常用的驱动的接口规范
CSI-KERNEL:定义实时操作系统的接口规范。
三、代码分析
三色指示灯应用到了CSI2中的GPIO文件,包括gpio.h、gpio.c。
gpio.h在sdk_chip_ch2601(v7.4.3)/csi/csi2/include/drv目录下。
gpio.h在sdk_chip_ch2601(v7.4.3)/hal_csi(v7.4.3)/csi2目录下。
主程序main,先初始化RVB2601,再新建任务“demo_task"。
#include "csi_core.h"
/**
* main
*/
int main(void)
{
board_yoc_init();
printf("===%s, %d\n", __FUNCTION__, __LINE__);
printf("===%s, %d\n", __FUNCTION__, __LINE__);
aos_task_new("demo", demo_task, NULL, 10 * 1024);
return 0;
}
demo_task如下:初始化lv、oled、led的io口。在while(1)循环内,每隔1s刷新一次三色指示灯。
static void demo_task(void *arg)
{
lv_init();
oled_init();
lable_test();
led_pinmux_init();
while (1)
{
lv_task_handler();
udelay(1000 * 1000);
lv_tick_inc(1);
led_refresh();
}
}
led_pinmux_init()初始化3个io口,代码风格同stm32不一样。先设置io的功能,再设置输入输出方向。不像stm32,每次初始化需先打开外设时钟。
#ifdef CONFIG_GPIO_MODE
static uint32_t g_ctr = 0;
static csi_gpio_pin_t r;
static csi_gpio_pin_t g;
static csi_gpio_pin_t b;
void led_pinmux_init()
{
csi_pin_set_mux(PA7, PIN_FUNC_GPIO);
csi_pin_set_mux(PA25, PIN_FUNC_GPIO);
csi_pin_set_mux(PA4, PIN_FUNC_GPIO);
csi_gpio_pin_init(&r, PA7);
csi_gpio_pin_dir(&r, GPIO_DIRECTION_OUTPUT);
csi_gpio_pin_init(&g, PA25);
csi_gpio_pin_dir(&g, GPIO_DIRECTION_OUTPUT);
csi_gpio_pin_init(&b, PA4);
csi_gpio_pin_dir(&b, GPIO_DIRECTION_OUTPUT);
g_ctr = 0;
}
void led_refresh()每次只打开1个LED,实现三色指示灯跑马灯效果。
|