RT-Thread的开发方式
RT-Thread有两种开发方式,RT-Thread Studio和ENV工具+传统的开发工具(IAR或Keil)。
RT-Thread Studio
Stdio的好处是直观,对新手比较友好。不过经过试用,发现其对新处理器支持受限比较严重,由于我们需要为F460的驱动和BSP增加许多改进,因此没有采用Studio的方法进行开发。
https://www.rt-thread.org/document/site/#/development-tools/rtthread-studio/README
Env 工具 + Keil
Env是一个使用Kconfig系统的配置和包管理工具,修改Kconfig、SConstruct可以方便扩展现有的BSP和驱动。Env工具使用方法参考官方的文章:
开发过程中需要注意的问题
RT-Thread 4.X和3.X建立工程的区别
之前3.x版本的bsp是和硬件(开发板)强关联的,因此在新硬件上使用RT-Thread都需要一个增加bsp,然后编译和提交git的时候都要带着整个RT-Thread的源代码,非常臃肿。
4.x版本的bsp更佳倾向于为使用这款处理器的所有硬件提供一个供修改的基础,使用scons --dist命令可以把所用芯片的bsp和系统组件打包成一个dist.zip。后续的开发直接基于这个打包后的dist目录进行开发就可以了。
有一篇介绍如何制作新bsp的文章对理解bsp的结构非常有意义,建议参考https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32%E7%B3%BB%E5%88%97BSP%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B.md
ddl_config.h需要手工开启用到的函数库
hc32f460标准库中的ddl_config.h文件中有一些了DDL_XXX_ENABLE的宏,默认都是DDL_OFF,这样即使包含了对应的头文件在编译的时候还是会报错。需要手工修改该文件,把用到的外设库打开。
Libraries\SConscript中需要添加用到的函数库
Libraries\SConscript中默认仅包含了部分外设函数库,在使用新函数库时需要自行加入需要用到的函数库。系统公共组件,比如GPIO、DMA建议直接添加到文件中,RT-Thread中有独立配置开关的外设库,建议使用编译选项的方式加入,减小代码编译时间。
J-Tag引脚当作普通IO使用时的初始化
如果需要把用不到的J-Tag引脚当作普通IO使用,需要对其进行额外的初始化,参考其他驱动的例子,应该把初始化参数放在board_config.c中,然后在drv_gpio.c中引用。
如果不幸把当前调试用到的引脚改掉,导致没法进行调试,需要修改CPU的启动引脚电平,让CPU不运行Flash中的代码,然后再次修改代码烧录程序。
用尽CPU提供的内存(修改board.h)
hc32f460的bsp默认只使用了32kb的内存,对于rt-thread全功能不是很宽裕。hc32f460提供了四段共188kb的SRAM,虽然分了四段,但是地址是连续的,如果没有特殊需求的话四段可以作为一个整体使用。
修改board.h中的SRAM内存结束地址,以使用全部内存。
开发资料
HC32F460用户手册
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0
HC32F460数据手册
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/46/key/0
HC32F460驱动库
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/9
HC32F460驱动库帮助
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/8
HC32F460IDE支持包
https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/58/key/2