前言
-
最近打算系统地研究一下 RT-Thread,包括 RT-Thread BSP 的移植,由于一直在使用 QEMU 进行一些软件功能的验证,qemu 支持很多的CPU 与 开发板,所以想移植一个新的 qemu board 到 RT-Thread,掌握BSP 移植的方法
-
当前主线 RT-Thread BSP Qemu 有三大系列:
qemu-vexpress-a9
qemu-virt64-aarch64
qemu-virt64-riscv
,所以打算搞个简单的ARM Cortex-M3
的 qemu board:mps2-an385
,验证下来类似于 STM32F103 系列的 MCU -
开发环境暂时为 :Linux 环境, ubuntu 20.04,后面尝试适配到 Windows 上
- ubuntu 20.04 中 默认安装的 qemu 版本
qemu-system-arm --version
,应该是4.2.1
,支持这个 ARM Cortex-M3 的 MCU :mps2-an385
$ qemu-system-arm --version
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.27)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
开发环境
-
win10 64位 + VS Code,ssh 远程连接 ubuntu
-
VMware Workstation Pro 16 + Ubuntu 20.04
-
RT-Thread v5.0.1(备注:当前 RT-Thread BSP 占用较大的空间)
-
qemu
qemu-system-arm
mps2-an385
开发板,qemu 版本QEMU emulator version 4.2.1
或更高 -
arm gcc 交叉编译工具链:当前使用 gcc 编译环境,
gcc-arm-11.2-2022.02-x86_64-arm-none-eabi
,gcc version 11.2.1 20220111
搭建工程
- 由于当前 RT-Thread 的代码体积有点臃肿,RT-Thread v5.0.1 解压后 整体接近 1.8GB, 而BSP 包占用 : 1.7GB 左右,所以打算建立独立的工程,不包括其他的 BSP,降低工程管理的复杂度,也方便代码阅读
- 重新创建工程,然后移除 bsp,改为 rt-thread 目录,新建 qemu-mps2-arm 目录,作为 移植 qemu mps2 的 bsp
配置arm gcc 交叉编译环境
-
下载 arm gcc 交叉编译工具链:ARM 官方提供 各个版本的下载地址 https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
-
当前验证 较新的版本,如
gcc-arm-11.2-2022.02-x86_64-arm-none-eabi
,可以正常编译并运行 -
设置 ubuntu 环境变量,
qemu-mps2-arm
目录下 新建setup.sh
,内容如下
#!/bin/bash
export RTT_CC=gcc
export RTT_EXEC_PATH=/home/zhangsz/linux/tools/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin
export RTT_CC_PREFIX=arm-none-eabi-
export PATH=$PATH:$RTT_EXEC_PATH
echo "CC => ${RTT_CC}"
echo "PREFIX => ${RTT_CC_PREFIX}"
echo "EXEC_PATH => ${RTT_EXEC_PATH}"
-
增加执行 权限
chmod +x setup.sh
-
编译前 运行:
source setup.sh
即可 -
自此,初步的开发环境应经准备就绪,但是 bsp
qemu-mps2-arm
目录下,只有一个setup.sh
设置交叉编译工具链的脚本,bsp 还没有正式开始移植
mps2-an385 介绍
-
此 qemu 开发板 mps2-an385,资料特别的少,之所以使用 mps2,可能源于之前 调试过 FreeRTOS 中的 qemu,用到就是这个
mps2-an385
-
当前能获取的资料,基本上是 ARM 官方的 mps2 相关的 sdk,下载后,有 Keil 版本的,可以获取一些启动文件、部分寄存器的使用:如定时器、uart 串口
-
由于 mps2 基于 ARM Cortex-M3,所以打算连接脚本、启动文件等,都基于 STM32F103系列 进行修改适配,这部分内容放在下一篇进行讲解
小结
-
本篇注意梳理 RT-Thread BSP 移植前的环境搭建,选择 windows 开发还是 Linux 环境(如 ubuntu)中开发,这里使用 Linux 环境开发,使用 arm gcc 交叉编译工具链,代码阅读、编辑、gdb 调试,使用 Win10 下 VS Code ssh 远程连接 ubuntu
-
由于 RT-Thread 整体 BSP 代码占用较大的体积,不利于功能的管理,所以新建最小 RT-Thread 工程,用于代码的管理,当前使用 RT-Thread 发布版本:
RT-Thread v5.0.1
,可以在 https://github.com/RT-Thread/rt-thread/releases/tag/v5.0.1 上下载