linux下RP2350芯片rt-thread开发(一)环境准备

一、前言

        rt-thread是国内市场占用率最高的本土操作系统,RP2350是树莓派 pico 2开发板的主控mcu。现已有非常多的基于RP2350的开发板,但软件上很少见跑rt-thread操作系统的。其实,rt-thread从V5.2.2版本开始提供RP2350 bsp,下面摘录了该BSP的README。


Raspberry RP2350

产品介绍

image-20250804204324351

  • 高性能树莓派RP2350芯片
    • 双核双架构设计,可选择Arm Cortex-M33或Hazard3 RISC-V内核
    • 150MHz主频
    • 520KB RAM,2MB flash
  • 高度集成,超小尺寸
    • 尺寸仅25*20.5mm
    • 集成锂电池充电管理、电池电压监测
    • 引出11个IO
  • 低功耗,休眠功耗仅25uA
  • 支持C/C++、MicroPython编程
  • 单面布局,半孔工艺,可用于贴片生产

程序烧写

  • 注意:当前bsp需要在linux环境下才能编译

  • 测试环境:Ubuntu21

Step 1: 下载sdk

menuconfig
pkgs --update

Step 2: 编译

scons -c
scons

gcc version >= 6.x.x

Step 3: 烧写

编译会生成uf2文件

按住boot键,再短按重启进入u盘烧写模式,此时将rp2350插入电脑会显示一个u盘

elf2uf2

  • 复制 rtthread-pico.uf2 文件到u盘中
  • 自动重启运行

或者进入boot模式后输入以下命令烧写

picotool load rtthread-pico.uf2
picotool reboot

运行结果

输出的信息如下

 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Jan 28 2021
 2006 - 2021 Copyright by rt-thread team
Hello, RT-Thread!
msh >

支持的外设

DriveSupportRemark
UARTSupportUART0/1
GPIOSupport0-29

        看了这个README,来了一堆问题:

        linux环境编译开发怎么弄??环境怎么搭?

        RP2350在rt-thread上的性能怎么样?

        外设只支持uart和gpio吗?这不能够吧?

        怎么用上usb接口?

        怎么用上spi接口?

        。。。。。。

        这些问题有答案吗?

        rt-thread出了名的坑多,这些问题只能尝试和填坑了。喜欢尝试新东西的朋友们可以和我一起来折腾。

        这篇文章先来解决编译开发环境的建立问题。

二、准备系统环境

        README中有这样句话——“注意:当前bsp需要在linux环境下才能编译”。

        所以不要在windows下瞎折腾(已经折腾过了,没成!!),我选择了Ubuntu22.04.4作为开发平台。

三、从下载rt-thread源码开始

        先得有个git工具,以下命令安装

sudo apt install git

        从https://gitee.com/rtthread/rt-thread下载源码

git clone https://gitee.com/rtthread/rt-thread.git --branch v5.2.2 --depth=1

        执行后得到rt-thread目录,RP2350 bsp目录是rt-thread/bsp/raspberry-pico/RP2350。

四、建立开发环境

1、安装scons

        rt-thread使用scons编译工具(而非make/cmake  )编译工程, scons编译工具基于Python。Python在系统上是默认安装的,而scons在linux系统上非默认安装。使用以下命令安装scons

sudo apt install scons

2、安装env环境

        README提到的menuconfig和pkgs工具需要建立env环境才能使用,操作步骤

        Step1:先要有pip再安装个kconfiglib模块    

apt-get install python3-pip
pip install kconfiglib

        Step2:进入RP2350 bsp目录,执行scons --menuconfig

        会自动下载安装env哦(执行这一步的目标就是为了它...)。

        然后进入menuconfig界面,这时直接不保存配置退出就行。

        Step3:但这时menuconfig和pkgs命令还是用不了,执行下

source ~/.env/env.sh

        env环境才真正建立。注意,这一步只对当前终端有效。可以把这个命令加到~/.bashrc文件末尾,让终端自动加载env。

3、安装arm-none-eabi-gcc

        README上说:“gcc version >= 6.x.x”

        负责任的说:

        “gcc6绝对用不了!”

        ubuntu自带的arm-none-eabi-gcc 版本是10.3.1也不建议使用!!

        该用哪个版本???

        RP2350软件底层基于pico-sdk,最新版本是2.2.0。rt-thread rt2350 bsp用的pico-sdk是基于2.1.1版本改造的。

        根据vscode中raspberry-pi-pico插件内的工具版本文件,得用gcc14.2.1以上才能完美适配。

        gcc14.2.1可以从以下地址下载

https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz

        我用了新一点的gcc14.3.1,防止pcio-sdk更新时又要换编译器。

https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi.tar.xz

        然后将gcc解压到自己喜欢的位置,并在/etc/profile设置PATH变量。

4 下载rt-thread的pico-sdk(raspberrypi-pico-rp2350-sdk-latest)

        进入RP2350 bsp目录,执行下

pip install tqdm

        pkgs工具需要这个模块哦。

        然后

menuconfig -s

        选择gitee源(国内用户建议更改,否则用默认的github源的话......自己试试)。

        最后

pkgs --update

        才能快速下载raspberrypi-pico-rp2350-sdk-latest包。

        好了~有了pico-sdk可以建立工程。

五、建立工程

        rt-thread完整项目过于庞大,里面包含了各种板子的bsp。(来看看有多大。。。)

        如果不嫌弃完整项目庞大可以跳过建立工程这一步。但对于单个板子的应用开发,一般建议生成只包含rt-thread操作系统和对应板子bsp的工程。

        进入RP2350 bsp目录,然后执行scons --dist,在bsp目录下会新生成一个dist目录,里面有project目录及其压缩包

        一般的项目生成至此为止了,但制作rp2350bsp的兄弟可能没想到过要建立工程。得手动把rt-thread/bsp/raspberry-pico目录的Drivers目录拷到RP2350/dist目录后,project才能正确编译。

        dist目录现在是这样的。

        现在可以把dist目录移动到自己喜欢的工程目录下(project.zip可以不要),改个名字就叫rt-thread-rp2350吧。

        看看现在项目是不是瘦身了很多。

六、编译工程

        现在可以编译工程了吧?No。。。这里还有个大坑要填。(PS如果使用ubuntu自带的arm-none-eabi-gcc就没这个问题)

        直接scons编译,会出现一个arm-none-eabi-gcc找不到的情况,可后面又能正常编译出.o文件。

        rp2350固件其实有两个工程,一个是RP2350的bootloader工程,一个是应用工程。bootloader工程出现了找不到gcc的问题。

        需要修改rt-thread-rp2350/project/packages/raspberrypi-pico-rp2350-sdk-latest下的SConstruct文件,把EXEC_PATH设上gcc路径。

         然后才可以愉快的编译bootloader工程。

        编译后得到可以下载到芯片的rtthtread-pico.uf2固件。

七、固件下载与运行

        Step1 使RP2350进入BOOTSEL模式:

        对于原版pico2,一般是板子以上电的话先下电,然后按着板子上的boot按键并同时将板子的usb口连上电脑上电,可以实现RP2350进入BOOTSEL模式;

        对于pico2的兼容板,一般板子会增加复位键,可以像pico2一样操作;也可以在已通过usb线连主机的板子上,同时按复位键和boot键,然后先放开复位键,再放开boot键,也可实现实现RP2350进入BOOTSEL模式。

        RP2350进入BOOTSEL模式后会把自己模拟成名为RP2350的U盘。Ubuntu会自动挂载。

        Step2 直接把rtthtread-pico.uf2固件文件拷入该U盘,传输完RP2350会自行复位并运行固件。

以下是默认配置的系统输出。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值