手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境

一、开发环境

操作系统:Ubuntu 22.04

二、环境搭建

更新软件源索引缓存(非更新软件本身)


sudo apt update

图片[1] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马
安装
git 、wget


sudo apt install git wget

安装
env


wget https://raw.githubusercontent.com/RT-Thread/env/v1.5.2/install_ubuntu.sh

脚本内容


#!/usr/bin/env bash

sudo apt-get update
sudo apt-get upgrade -y

sudo apt-get -qq install python3 python3-pip gcc git libncurses5-dev gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch qemu qemu-system-arm -y
python3 -m pip install scons requests tqdm
python3 -m pip install -U pyocd

url=https://raw.githubusercontent.com/RT-Thread/env/v1.5.x/touch_env.sh
if [ $1 ] && [ $1 = --gitee ]; then
    url=https://gitee.com/RT-Thread-Mirror/env/raw/v1.5.x/touch_env.sh
fi

wget $url -O touch_env.sh
chmod 777 touch_env.sh
./touch_env.sh $@

脚本赋权限,执行脚本。


./install_ubuntu.sh --gitee


./touch_env.sh --gitee

图片[2] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马
如果失败,可将脚本中的版本号改为指定版本

环境变量设置:
方案A:
每次启动Ubuntu系统时,都需要输入命令
source ~/.env/env.sh
以激活环境变量。

方案B:
打开
~/.bashrc
文件,并在文件末尾添加命令
source ~/.env/env.sh
,这样当登录Ubuntu时它会自动执行,无需再手动输入该命令。

三、测试指令

查看
pkgs/menuconfig 等命令

四、代码拉取

查看远程仓库的标签(无需先克隆)


git ls-remote --tags https://gitee.com/rtthread/rt-thread.git

克隆指定的版本


# 只克隆最近一次提交的特定版本
git clone --depth 1 -b v4.1.1 https://github.com/RT-Thread/rt-thread.git

进入下载的仓库目录下,查看当前版本


# 查看当前检出的版本信息
git describe --tags  # 输出当前标签(如 v4.1.1)
git log --oneline -1 # 查看最新提交哈希和信息

图片[3] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马

五、工程 bsp 打包

进入 指定的bsp 目录,如
rt-thread/bsp/stm32/stm32f407-atk-explorer
文件下。


source ~/.env/env.sh

scons --dist

图片[4] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马

指定相关路径


# export ENV_ROOT=${HOME}/.env
source ~/.env/env.sh
export RTT_ROOT=${PWD}/rt-thread
export BSP_ROOT=${PWD}

测试指令


menuconfig 

报错


scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
scons: done building targets.
/home/user/.env/packages/packages/system/rti/Kconfig:88: 'endif' in different file than 'if'
/home/user/.env/packages/packages/system/rti/Kconfig:9: location of the 'if'
/home/user/.env/packages/packages/system/Kconfig:61: 'endmenu' in different file than 'menu'
/home/user/.env/packages/packages/system/rti/Kconfig:9: location of the 'menu'
/home/user/.env/packages/packages/Kconfig:15: 'endmenu' in different file than 'menu'
/home/user/.env/packages/packages/system/rti/Kconfig:9: location of the 'menu'

修改此文件即可,末尾增加新行,改动如下:

测试,开启测试demo

图片[5] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马
更新下载相关文件

图片[6] - 手把手教 – 基于 Ubuntu 系统搭建 RT-Thread 开发环境 - 宋马
编译报错,提示如下:


scons: Reading SConscript files ...
Newlib version:unknown
Error: the toolchain path (C:UsersXXYYZZ) is not exist, please check 'EXEC_PATH' in path or rtconfig.py.

解决办法,查找使用的工具链位置。


which arm-none-eabi-gcc

修改
rtconfig.py
脚本文件,工具链的指定目录。


# cross_tool provides the cross compiler
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
if  CROSS_TOOL == 'gcc':
    PLATFORM    = 'gcc'
    # EXEC_PATH   = r'C:Usersuser' 
    # 修改如下,根据实际修改
    EXEC_PATH   = r'/usr/bin'  
elif CROSS_TOOL == 'keil':
    PLATFORM    = 'armcc'
    EXEC_PATH   = r'C:/Keil_v5'
elif CROSS_TOOL == 'iar':
    PLATFORM    = 'iccarm'
    EXEC_PATH   = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3'

重新编译,查看编译后的文件信息


scons

file rt-thread.elf

六、下载测试

将代码下载到开发板,测试如下:

参考

Ubuntu 平台使用 QEMU 运行 RT-Thread qemu-vexpress-a9 BSP 工程

https://gitee.com/RT-Thread-Mirror/env

quick_start_qemu_linux

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容