1693|2

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【平头哥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,实现三色指示灯跑马灯效果。

最新回复

感谢分享,希望YOC操作系统,越来越好!  详情 回复 发表于 2022-7-4 07:43
点赞 关注
 
 

回复
举报

6807

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

看楼主的介绍,平头哥的YoC平台搞这些三色指示灯控制还挺方便

 
 
 

回复

6973

帖子

11

TA的资源

版主

板凳
 
感谢分享,希望YOC操作系统,越来越好!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表