前言
由于电子设备的普及,越来越多人拥有树莓派,不管是作为电子极客,还是作为普通普通人,很多人都会玩一下树莓派,可以学习一些c语言,也可以学习嵌入式。下面我来介绍一下如何在树莓派上运行rt-thread rtos。
01
准备条件
本文主要介绍如何快速高效的搭建树莓派rt-thread的开发环境。按照文章的步骤,可以很方便的将rt-thread运行起来。
准备条件:
1.树莓派3b
2.usb转ttl模块(树莓派串口输出)
3.一台装有Ubuntu16.04的电脑
当准备好这些东西后,就可以开启我们的树莓派rt-thread之旅了。
02
源代码编译
源代码仓库在可以从rt-thread的官网上查看
git clone git@github.com:RT-Thread/rt-thread.git
其中bsp包下已经有三个文件
raspi2:针对树莓派2的bsp,目前功能较少
raspi3-32:树莓派3b,基本上比较完善,支持多核
raspi3-64:树莓派3b 64位版本
目前我们通过raspi3-32来进行相关的演示。
03
开发环境搭建
Linux下推荐使用gcc工具 gcc-arm-none-eabi-5_4-2016q3,如果还没有编译工具,下载后,解开文件。
tar vxf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
Linux环境下需要修改编译器目录设置,修改bsp/raspi3-32/rtconfig.py中的
EXEC_PATH = r'/opt/gcc-arm-none-eabi-5_4-2016q3/bin'
为编译工具的实际所在目录,这里注意要加上后缀 /bin
进入到rt-thread/bsp/raspi3-32目录中,运行以下命令:
scons
可以看到生成对应的kernel7.img,该文件就是可执行文件。
04
树莓派SD卡的制作
要想编译出来的kernel文件正常的运行在树莓派上,需要制作SD卡镜像。
格式化SD卡
首先准备一张SD卡,然后格式化
这里推荐一个格式化工具gparted。利用这个工具将SD卡格式化成未分配的即可。
此时点击绿色的对勾就可以完全将SD卡格式化了。
烧录树莓派官方镜像
然后从树莓派官网上下载树莓派的镜像,解压后烧录到sd卡上。
sudo dd if=2019-09-26-raspbian-buster-full.img of=/dev/sda bs=4M
当然,官网上下载很慢,所以我将这个镜像也传到了百度网盘上了。
链接: https://pan.baidu.com/s/1IqFiGdZXmLzWgqHTL3B8Vw
提取码: i6wi
去掉Linux镜像
打开制作好的官方的文件,可以看到有几个kernel,这几个最好都删掉。
然后用刚才编译的kernel7.img复制到这里。
准备好串口线
目前版本是使用raspi3的 GPIO 14, GPIO 15来作路口输出,连线情况如下图所示:
串口参数:115200 8N1 ,硬件和软件流控为关。
按上面的方法做好SD卡后,插入树莓派3B,通电可以在串口上看到如下所示的输出信息:
05
通过YMODEM下载RTT
上述步骤中,修改代码后每次都需要重新上电断电。并且每次都需要将电脑上的镜像转移到sd卡上。非常不方便开发调试,为了解决这些问题。可以借助uboot的TFTP和Ymodem将内核镜像转移到树莓派的内存中。
树莓派uboot的制作
编译树莓派的uboot
下载地址https://ftp.denx.de/pub/u-boot/
解压后可以进行相关的操作:
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
make rpi_2_defconfig
输入make后编译uboot。
当然,为了如果不想自己编译,可以用我已经制作好的uboot即可。
链接: https://pan.baidu.com/s/1U3QjIqQDA1lvp236RpRaWA
提取码: 938e
uboot启动设置
将编译好的u-boot.bin放到sd卡中,然后修改树莓派的启动文件
修改config.txt文件
kernel=u-boot.bin
enable_uart=1
通过ymodem下载程序并启动
然后将sd卡放在树莓派上,上电即可看到树莓派正常的启动了。
接着输入loady 0x00008000 115200
然后输入Ctrl A 然后 s的组合键
选择刚才生成的kernel7.img文件即可
下载完成后输入go 0x8000即可看到正常运行
06
总结
通过以上的步骤,可以完全的将树莓派运行起来。并且通过uboot作为下载工具,完全的省去了每次都要用读卡器转移镜像的烦恼,提高工作效率,让开发变得更加高效简洁。
rt-thread的树莓派引入了多核和64位体系架构,可玩性非常的高,而且基本的外设也已经实现,后续开发更加便捷,对于学习嵌入式与rtos多核操作非常方便。