2020-02-29
阿里 平头哥比赛培训:
软件开发:
cdk:win下的集成开发环境
toolchain和debug server:linux下的编译和调试
sdk:
board:板级的启动文件支持 内有board_init实现 开启时钟和调试以及printf用的串口
csi_kernel: rhino: 实时操作系统内核(是另一个开源项目alios things的最小操作系统内核),类似ucosii,可以在cdk里配置工程支持与不支持操作系统,实现了信号量,邮箱,互斥量,软件定时器。
csi_core:cpu核心信息的头文件
csi_driver:硬件设备的驱csi_kernel:动文件,包括pwm,timer和i2cspi串口,注意平头哥的i2c、spi、uart都共享一个usi接口,而默认的处理只包含三个usi接口,所以如果不改动verilog代码可用的串行接口只有三个(uart spi i2c加起来)
csi_driver里还包含启动文件,在main执行前先执行了system_init和board_init初始化系统时钟和调试printf打印用的串口
启动文件projects:
有各个设备驱动的代码样例。用cdk打开可分析。
一般启动一个设备包括引脚分配,初始化以及配置
比如gpio:
先分配引脚:
drv_pinmux_config(EXAMPLE_GPIO_PIN, EXAMPLE_GPIO_PIN_FUNC);
再初始化设备:
定义句柄
gpio_pin_handle_t pin = NULL;
调用初始化函数
pin = csi_gpio_pin_initialize(gpio_pin, gpio_interrupt_handler);
这里的pin是gpio的设备句柄,句柄是win32编程风格里标识资源的一种特殊的指针
然后是调用配置的函数各种外设的配置函数不同可以查csi_driver中的驱动代码
其他的编码风格与stm32无异
utilities:
这里有使用linux+riscv-tools编译工程用的调试和下载flash的组件,用cdk集成开发环境可以忽略
硬件设计:
以后再更