AM335X-移植RTThread

前言

RTThread的BSP部分对于TI官方的BeagleBone AM3358开发板有一点点支持,因此同为AM335X系列的蚂蚁矿板可以参考rtthread/bsp/beaglebone下的底层代码。

下载源码

打开RTThread的github,传送门: https://github.com/RT-Thread/rt-thread

此处注意不要直接去下载master分支下的代码,这个分支是开发版,详情见官网说明。

找到左边的 release TAG,点进去

下载4.X的版本,截至当前,最新的版本是4.0.3

下载后得到一个zip压缩文件,约223MB,这里可以删除掉bsp文件夹下的其他处理器支持,减少文件数量,这里我只留下beaglebone的bsp代码,其余的均删除。

导入eclipse

修改下C/C++ build -> build settings和C/C++ General -> Path and Symbols,让eclipse不是满屏的红色波浪线报错就可以,可以看到bsp部分只提供了gpio和uart驱动,还是比较简陋的...

添加CPU支持包

这样直接编译肯定是无法运行的,默认的bsp在rt_hw_board_init中没有完成mmu,interrupt,和heap的初始化,所以上电串口输出完rtt的logo后,rt_application_init时就挂掉了。
首先在bsp/beaglebone新建一个libcpu的包,用于存放处理器相关代码,接着把rt-thread-4.0.3/libcpu/arm/am335x文件夹内的所有文件复制进去。
然后删除rt-thread-4.0.3/libcpu/整个文件夹,这里面还有其他处理器的支持包,没啥用处,直接全部删除。

tools/building.py 442行可以看到这里has_libcpu包含了默认的libcpu文件夹,因此需要在bsp的SConstruct中声明下has_libcpu=True,这样libcpu包就不会到默认路径去找了。

修改bsp的SConstruct中的PrepareBuilding配置

修改编译/连接脚本

默认提供的连接脚本是beaglebone_ram.lds,这里需要对连接地址进行修改,原先是0x80002000,这里我用了自己修改过的二级引导(SPL)来启动rtthread,因此连接器首地址就是ram首地址。
在移植的时候务必确保启动地址被正确配置,顺便重命名为link.lds

检查rtconfig.py对于编译选项的配置,如果后续要添加编译选项,可以在此文件修改

添加SConstruct的clean选项,默认情况是没有的,可以按需求添加进去。

修改启动文件

打开libcpu/start_gcc.S,在stack_setup之后,clear bss之前添加开启分支预测和NEON VFPv3协处理器的代码,启动文件的修改可以参考StarterWare\system_config\armv7a\gcc\init.S

posted @ 2021-08-15 15:31  Yanye  阅读(582)  评论(0编辑  收藏  举报