1.本文目的
本⽂主要介绍如何快速⾼效的搭建树莓派rt-thread的开发环境。按照⽂章的步骤,可以很快速的将rt-thread运⾏起来。
2.准备条件
1.raspberry-pi 3b/3b+均可,本文使用的是3b+版本
2.usb转ttl串口模块,本文使用的是ch340
3. ubuntu系统的电脑, 本文使用的是ubuntu18.04
准备好上述资源后,就可以开始raspberry-pi的rt-thread多核之旅了
3. rt-thread源码编译
1.以下链接获取rt-thread源码
git clone [email protected]:RT-Thread/rt-thread.git
2.下载工具链,这里使用的是
gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
网上有很多资源地址可以下载.
3. 编译源码
1),解压工具链,gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2,
2)RT-Thread源码包中,BSP 包下有三个目录
raspi2:针对树莓派2的bsp,⽬前功能较少
raspi3-32:树莓派3b,基本上⽐较完善,⽀持多核
raspi3-64:树莓派3b 64位版本
⽬前我们通过 raspi3-32 来进⾏相关的演⽰。
3) 编译
Linux环境下需要修改编译器⽬录设置,修改 bsp/raspi3-32/rtconfig.py 中的
EXEC_PATH = r'/home/czl/WorkSpace/melis/shumeipai/tools/gcc-arm-none-eabi-5_4-2016q3/bin'
进入到rt-thread/bsp/raspberry-pi/raspi3-32
执行scons
等待片刻,编译结束后,kernel7.img即是最终的内核文件
清除编译过程,请执行
scons --clean
4.raspberry-pi 3b+ 启动SD卡的制作
要想编译出来的kernel⽂件正常的运⾏在树莓派上,需要制作SD卡镜像。
首先准备一张SD卡,然后格式化,这⾥推荐⼀个格式化⼯具gparted。利⽤这个⼯具将SD卡删除分区,变成未分配的即可
点击对钩, 对所做的操作进行执行保存即可完成
然后从树莓派官⽹上下载树莓派3b+的镜像,解压后烧录到sd卡上
sudo dd if=2019-09-26-raspbian-buster-full.img of=/dev/sdc bs=4M
5.去掉Linux内核
打开制作好的官⽅的⽂件,可以看到有⼏个kernel,这⼏个最好都删掉
然后把刚才编译的kernel7.img复制到这⾥
6.⽬前版本是使⽤raspi3的 GPIO 14, GPIO 15来作路⼝输出,连线情况如下图所⽰
3b/3b+均是如此,下图应该是3b的,但也适用于3b+
按上⾯的⽅法做好SD卡后,插⼊树莓派3B,通电可以在串⼝上看到如下所⽰的输出信息:
7:通过YMODEM下载rtt内核
xmodem, ymodem,zmodem是一个非常高效的文件传输协议,可以在无网络的情况下,使用SecureCRT或者MiniCOM软件输入loady命令进行串口传输内核和文件系统,u-boot支持ymodem协议进行数据传输
上述步骤中,修改代码后每次都需要重新上电断电。并且每次都需要将电脑上的镜像转移到sd卡上。⾮常不⽅便开发调试,为了解决这些问题。可以借助uboot的TFTP和Ymodem将内核镜像转移到树莓派的内存中。
8.树莓派uboot的制作
https://ftp.denx.de/pub/u-boot/
下载u-boot源码
wget -c https://ftp.denx.de/pub/u-boot/u-boot-2020.01.tar.bz2
依次执行
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make rpi_2_defconfig
make
编译结束后,得到u-boot.bin
9:u-boot启动流程设置
1)拷贝u-boot.bin到 sd卡 boot目录下
2)编辑config.txt
10. 通过ymodem下载程序并启动
接着输入
loady 0x00008000 115200
启动ymodem接收历程
字符'C'是ymodem协议的一部分
然后在minicom输⼊Ctrl+A
然后选择S,发送文件,选择ymodem
输入内核路径
传输结束后,
执行
go 0x8000
即可看到内核输出运行