本文由RT-Thread论坛用户@happycode999 原创发布:https://club.rt-thread.org/ask/article/3002.html
一、引言
有幸参加国产MCU的移植活动,本次需要移植的是珠海泰为的TAE32F5300,是一颗带硬件加速器(ERPU)的用于电力产品的32位MCU,为满足电力行业的要求内置了4路独立的IIR滤波器用于工业滤波算法,内置一个电能计量模块ECU。之所以选择这款芯片,是因为珠海泰为提供的开发板板载了许多外设,是一块非常适合学习的国产MCU的开发板,我也很看到其他小伙伴移植到了其他国产mcu上,大家都有各自的理由吧。
一开始也觉得移植任务是比较困难的,于是在rtthread的论坛搜索国产MCU移植,发现了两篇,看到一篇移植华大的,看到移植流程比较简单,于是自己就按照他的方法来移植,希望这篇文章对移植国产MCU的过程有个比较详细的记录,帮助各位想移植RT-Thread到国产MCU的小伙伴解决疑惑。到目前为止,我也仅是完成了keil的移植和实现了pin和uart驱动。发个贴记录一下。
二、BSP制作前准备:了解bsp结构、了解scons的使用、了解kconfig的使用
2.1、RT-Thread中的BSP结构
applications:主要为main.c文件,用户应用的源码放在该文件。
build:存放编译出的目标文件
drivers:存放外设驱动,如后文说的pin驱动和uart驱动
figures:存放readme.md使用的图片文件
Libraries:芯片的固件库,包括CMSIS和标准外设库。
两个标准工程:一个是iar的标准工程、一个是keil的标准工程,工程里没有任何源文件,主要指明了芯片型号、编译的配置,在使用scons --target=mdk5命令时,将按照sconscript脚本的要求将源码和头文件放到keil工程中。
scons构建脚本sconscript:根目录下的该脚本为顶层的脚本,由下面的代码可以看到通过os.path.isfile来判断子目录下是否有sconscript文件,有的话就将执行子目录下的构建脚本,构建脚本主要指明了源码和头文件的路径。
list = os.listdir(cwd)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, &