Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用

描述

前言

 

Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核组件软件包进行自由裁剪,使系统以搭积木的方式进行构建。

先楫 RT-Thread BSP v1.10.0不仅支持基于RT-Thread Studio的应用开发,也支持通过RT-Thread ENV来生成不同工具链和IDE进行应用开发。

本文介绍如何在Windows上基于RT-Thread ENV使用如下工具链来开发RT-Thread应用。包括:

使用RT-Thread ENV生成gcc工具链编译工程

使用RT-Thread ENV生成zcc工具链编译工程

使用RT-Thread ENV生成Segger Embedded Studio工程


 

1.环境搭建

 

1.1 相关软件安装

在segger官方下载并安装Segger Embedded Studio IDE。链接:https://www.segger.com/downloads/embedded-studio/,选择Embedded Studio for Arm and RISC-V最新版本即可。建议安装到无中文和空格的目录下。

--按如下链接申请License(非商用可跳过这一步) https://license.segger.com/hpmicro.cgi

按照 https://www.rt-thread.org/document/site/#/development-tools/env/env 搭建安装RT-Thread ENV,推荐阅读Env 的使用方法中的在文件夹中通过右键菜单打开 Env 控制台的部分。

--注意:先楫 RT-Thread BSP v1.10是基于RT-Thread v5.0.2开发的,必须使用RT-Thread Env v1.5.2来开发。下载RT-Thread官方env_release网盘时需要选择env-windows-v1.5.2.7z


 

1.2 相关编译工具链安装

下载RISC-V gcc工具链

下载链接:

https://github.com/helloeagleyang/riscv32-gnu-toolchain-win/archive/2022.04.12.zip 
https://gitee.com/hpmicro/riscv-gnu-toolchain/releases/download/2022.04.12/riscv32-gnu-toolchain-win-2022.04.12.7z

解压到无中文和空格的目录下,记住解压后的路径的bin目录。

若不想使用gcc工具链只需要用Segger Embedded Studio可忽视此步骤

下载zcc工具链

从兆松科技的官网下载zcc工具链为4.0.0或者4.1.1及更高的版本

下载链接:https://www.terapines.com/download/zcc

解压到无中文和空格的目录下,记住解压后的路径的bin目录。

若不想使用zcc工具链只需要用Segger Embedded Studio可忽视此步骤

segger工具链

从上述软件安装好Segger Embedded Studio IDE之后,记住Segger Embedded Studio的安装路径下的bin目录。

ENV设置环境变量

右键打开Env控制台,点击右上角的system menu,选择settings

mcu

点击Environment,在编辑框分别按需输入RTT_RISCV_TOOLCHAINZCC_TOOLCHAIN_PATH还有SEGGER_TOOLCHAIN_PATH变量,变量值为上述的工具链路径。设置完毕点击Save settings保存。

mcu

RTT_RISCV_TOOLCHAIN对应上述的riscv32-gnu-toolchain-win-2022.04.12/bin目录

ZCC_TOOLCHAIN_PATH对应上述的zcc-4.0.0/bin目录

SEGGER_TOOLCHAIN_PATH对应上述的Segger Embedded Studio/bin目录

重启ENV,使环境变量生效。

注意:set =中的 = 前后不允许出现空格


 

2.基于RT-Thread ENV编译开发应用

 

2.1 下载安装先楫BSP包

根据自己的开发板下载对应的BSP包

开发板

仓库链接

hpm6750evkmini

https://github.com/hpmicro/rtt-bsp-hpm6750evkmini/archive/v1.10.0.zip

hpm6750evk2

https://github.com/hpmicro/rtt-bsp-hpm6750evk2/archive/v1.10.0.zip

hpm6300evk

https://github.com/hpmicro/rtt-bsp-hpm6300evk/archive/v1.10.0.zip

hpm6200evk

https://github.com/hpmicro/rtt-bsp-hpm6200evk/archive/v1.10.0.zip

hpm5300evk

https://github.com/hpmicro/rtt-bsp-hpm5300evk/archive/v1.10.0.zip

hpm5301evklite

https://github.com/hpmicro/rtt-bsp-hpm5301evklite/archive/v1.10.0.zip

hpm6800evk

https://github.com/hpmicro/rtt-bsp-hpm6800evk/archive/v1.10.0.zip

hpm6e00evk

https://github.com/hpmicro/rtt-bsp-hpm6e00evk/archive/v1.10.0.zip

hpm6p00evk

https://github.com/hpmicro/rtt-bsp-hpm6p00evk/archive/v1.10.0.zip

hpm5e00evk

https://github.com/hpmicro/rtt-bsp-hpm5e00evk/archive/v1.10.0.zip


 

2.2 导出BSP包的例程

需要安装python,推荐版本为Python 3.10以上

解压下载的BSP包,可以使用BSP包里的bsp_utils.py脚本导出例程

在BSP包的目录下,使用PowerShell或者git bash运行bsp_utils.py,当前该脚本支持的命令如下:

-v/--version Show version 获取脚本版本

-l/--list Show supported examples in this BSP 查看当前BSP支持的所有例程

-e/--export_proj Export project from this BSP to specified destination directory 导出生成工程到指定目录

blink_led例程为例,假定需要导出的路径为D:\rtt_proj,可通过如下命令导出该例程。

python .\bsp_utils.py -e --project_name=blink_led --output=D:\rtt_proj

当导出成功后,会提示以下,并且在D:\rtt_proj目录下生成一个blink_led目录,该目录下就是导出的工程。

Successfully exported project 'blink_led' to 'D:\rtt_proj\blink_led'

注意:确保导出的路径存在。


 

2.3 配置工程

根据上述教程新建的工程,以blink_led为例

在工程的主目录下右键打开,选择ComEmu here,会弹出env窗口

mcu

env敲击menuconfig打开板级的kconfig相关配置,完成以下操作:

RT-Thread Kernel RT-Thread内核配置

RT-Thread Components RT-Thread组件配置

RT-Thread online package RT-Thread软件包配置

Hardware Drivers Config 板级硬件配置

操作示例如下:

mcu

该操作和基于RT-Thread Studio中的图形化操作很类似。

关于RT-Thread构建与配置系统,包含Kconfig和scons。请参考如下链接:

https://www.rt-thread.org/document/site/#/development-tools/build-config-system/summary


 

2.4 按需更改工具链参数

1、配置RV_ARCHRV_ABI 架构指令集

用户可在工程目录下的env命令行执行如下操作完成ABI的配置,若无该操作,默认值为RV_ABI=ilp32

set RV_ABI=

用户可在工程目录下的env命令行执行如下操作完成ARCH的配置,若无该操作,默认值为RV_ARCH=rv32imac

set RV_ARCH=

支持的RV_ARCH和RV_ABI的组合有:

rv32imac + ilp32

rv32imafc + ilp32f

rv32gc + ilp32d

注意:

此变量只对gcc和zcc生效


 

2、配置 RTT_BUILD_TYPE编译选项

用户可在工程目录下的env命令行执行如下操作,若无该操作,默认值为flash_debug。

set RTT_BUILD_TYPE=

通常支持的RTT_BUILD_TYPE选项为:

flash_debug

flash_release

ram_debug

ram_release

flash_hybrid_debug

flash_hybrid_release

详细支持的选项可从rtconfig.py中查询。

注意:

当使用segger工具链时,RTT_BUILD_TYPE选项可不设置,相关编译选项可在Segger Embedded Studio IDE进行切换


 

3、切换工具链

用户可以工程目录下使用如下操作完成工具链的切换,或无该操作,默认工具链为gcc

set RTT_TOOLCHAIN_PLATFORM=

其中,platform支持的选项为:

gcc

zcc

segger


 

2.5 生成、编译、调试工程

1、生成cmake工程

当使用gcczcc工具链时,可通过如下命令生成cmake工程

scons --target=cmake

之后,可使用自己熟悉的支持cmake的IDE(如vscode, CLion) 来打开cmake工程完成后续的开发和调试。
注意: 在该模式下,如果需要重新更改RT-Thread相关的配置,可能需要反复执行如下操作:

menuconfig

scons --target=cmake


 

2、生成Segger Embedded Studio工程

当使用segger工具链时,可通过如下命令生成Segger Embedded Studio工程。

set RTT_TOOLCHAIN_PLATFORM=segger 

scons --target=ses

注意:在该模式下,如果需要重新更改RT-Thread相关的配置,可能需要反复执行如下操作:

menuconfig

scons --target=ses

在生成工程后,可以在工程目录下打开project.emProject文件,即可使用Segger Embedded Studio进行开发和调试。可在左上角不同的配置窗口选择不同的编译选项窗口

mcu

注:默认生成的proj.emProject中的RISC-V ISA和RISC-V ABI的组合为rv32imac及ilp32,如下图所示。用户可根据需要自己调整为相应的配置。

mcu

之后,可通过Segger Embedded Studio实现开发和调试。调试的体验和使用hpm_sdk一致。


 

3、基于env环境编译工程

Env 中携带了 Python & scons 环境,用户可在工程目录下的env命令行执行如下操作完成工程的编译。

使用scons 直接编译, 其中:N代表线程数。

scons -jN

编译完成后,会在工程目录下生成一个rtthread.elf文件,该文件就是可执行文件。

调试上,可以使用openocd + riscv32-unknown-elf-gdb 实现基于命令行的调试或者使用vscode的相关调试插件。也可使用jlink调试器配合Ozone来调试。


 

2.6 典型示例

使用 rv32imac+ilp32 + gcc基于scons完成代码的编译,编译选项为flash_release

按如下示例脚本所示:

set RTT_BUILD_TYPE=flash_release   

set RTT_TOOLCHAIN_PLATFORM=gcc   

set RV_ARCH=rv32imac   set RV_ABI=ilp32   

scons -j16


 

使用 rv32gc+ilp32d + gcc基于 scons完成 cmake工程的生成

按如下示例脚本所示:

set RTT_TOOLCHAIN_PLATFORM=gcc   

set RV_ARCH=rv32gc   

set RV_ABI=ilp32d   

scons --target=cmake


 

使用 rv32imac+ilp32 + zcc基于scons完成代码的编译,编译选项为ram_debug

按如下示例脚本所示:

set RTT_BUILD_TYPE=ram_debug   

set RTT_TOOLCHAIN_PLATFORM=zcc   

set RV_ARCH=rv32imac   

set RV_ABI=ilp32   

scons -j16


 

使用 rv32gc+ilp32d + zcc基于 scons完成 cmake工程的生成

按如下示例脚本所示:

set RTT_TOOLCHAIN_PLATFORM=zcc   

set RV_ARCH=rv32gc   

set RV_ABI=ilp32d  

scons --target=cmake


 

使用 segger基于 scons完成 segger embedded studio工程的生成

按如下示例脚本所示:

set RTT_TOOLCHAIN_PLATFORM=segger   

scons --target=ses


 

3.小结

 

本文提供了在Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用的简要流程,实际体验下来,整个过程和体验还是简单和直观的。大家如果在使用过程中有任何疑问和建议,欢迎在公众号下留言,或者在相应的github仓库提issue。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分