Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BSP
MAC/Linux环境下STM32H743基础BSP搭建
发布于 2019-08-26 22:59:39 浏览:6108
订阅该版
[tocm] 目前RTT主流的开发环境是Windows+Keil,如果一些朋友喜欢用linux或者macOS又该如何去做RT-Thread+STM32的硬件开发呢?我看整个论坛这样的帖子就非常少,所以今天决定写一篇基于macOS环境下的STM32H743,rt-thread移植教程,希望能在rt-thread的推广上做出自己的一点小小贡献,给大家抛砖引玉。Linux环境下与macOS基本一致。 ## 一、素材准备 * Armfly-V7 STM32H743XIH6开发板 * RT-Thread 长期支持版 lts-v3.1.x * Macbook Pro * scons * macOS下的ARM交叉编译工具 ## 二、MAC下开发环境搭建 * 安装scons 在Windows环境下,有官方直接制作好的[ENV工具](https://pan.baidu.com/s/1cg28rk#list/path=%2F),按照工具内的使用说明基本上就是开箱即用。 在MAC环境下,需要自己安装scons软件,才能达到Windows下的效果。MAC下在终端内输入如下命令安装scons: ``` brew install scons ``` 目前最新的scons版本应该是3.1.1,安装好可查看socns版本:  ### * 安装ARM交叉编译工具链 在MAC下编译STM32的程序,要用ARM-GCC交叉编译工具,这里直接从ARM官网下载。[点我下载](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) 我用的是8-2-18-q4-major,记得选Mac OSX-64bit版本。下载好之后自己定义一个目录解压之,然后把它添加到环境变量(PATH) 这是我的解压目录位置:  将上述目录添加到用户的环境变量里,即在用户目录下的.bash_profile文件中加上如下语句:  重启终端或者在用户目录下(~ 目录,懂Unix的应该都懂 ~)执行 source .bash_profile 即可 在终端内执行如下命令即可看到arm-gcc的版本号: ``` arm-none-eabi-gcc -v ```  ### * 安装VS Code (可选) 至此,MacOS下所用的软件和环境都已经准备好了 ## 三、RT-Thread在STM32H743XI上的移植 ### * rt-thread源代码瘦身大作战 下载 [rt-thread-lts-v3.1.x](https://github.com/RT-Thread/rt-thread) 并解压,进入到bsp目录内,除了保留stm32文件夹外,删掉所有其他不相关的bsp文件,你会发现rtt会清爽很多 进入stm32目录下,除保留doc、libraries和stm32h743-atk-apollo文件夹外,其余全部删除,你会发现又清爽很多 ### 继续瘦身+换血 进入libraries目录,除保留HAL_Drivers文件夹、Kconfig文件、STM32H7xx_HAL文件夹 和 templates文件夹外,其余全部删除,又清爽很多 更新STM32H7最新的HAL库文件,目前能从STM32CubeMX下载下来最新的HAL文件版本是1.5.0 。 进入STM32H7xx_HAL文件夹内,删除CMSIS和STM32H7xx_HAL_Driver文件夹,将从STM32CubeMX中下载的最新CMSIS和STM32H7xx_HAL_Driver拷贝至该目录内。删除 `../STM32H7xx_HAL_Driver/Src/`目录下带template名的4个.c文件(那是给STM32官方板用的,我们基本无用); 删除`../STM32H7xx_HAL_Driver/Inc/`目录下stm32_assert_template.h头文件。至此,HAL库更新完毕 其他部分参考stm32/doc目录下的BSP制作教程基本上就可以了,但是还是不能用,有些坑我来教大家填平!!! ### 填坑之路 - 参考文档,将template文件夹内的全部文件拷贝至自己新建的文件夹姑且叫stm32h743xi-armfly内,该目录以下简称bsp开发目录 - 我们开发用的是GCC环境,所以你可以把bsp开发目录下所有keil和IAR相关的工程文件全部删掉,真的会清爽很多很多 - 修改bsp开发目录下的rtconfig.py文件内的第20行,指定ARM-GCC编译链的目录,如下图所示,此路径在MAC环境搭建条目下有设置,不要忘了哦。  - 此处是天坑,官方文档没有说明(我的同事没有改,你可以认为我也是官方人士:lol) 天坑来了! 在`bsp\stm32\libraries\STM32H7xx_HAL\CMSIS\Device\ST\STM32H7xx\Source\Templates\gcc`目录下,打开startup_stm32h743xx.s文件,作如下修改:  注释掉第95行,__libc_init_array这个是libc的初始化,我们不用libc 第97行,将 bl main 改为 bl entry ,entry是rtt的入口 如果你不做上述修改,真的,你编译绝对不会报错,但是下载进板子,板子没任何反应起不来,跟砖头没两样 - 基本就这些操作,我不打算上传我做好的BSP,我真心希望您自己走一遍,这里面可能有些点我没有提到,但都是小问题,看下sconscript或者是kconfig文件都能解决,如果实在不能解决,欢迎留言,我一一解答 ## 四、BSP配置、编译、烧录下载 ### 配置 进入bsp开发目录(看上文,确认请我说的是哪个目录),执行 scons --menuconfig 就可以实现在Windows下ENV中menuconfig命令的作用  配置完保存,会自动生成rtconfig.h文件,非常方便 ### 编译 在bsp开发目录,输入 scons ,此时会自动开始编译链接,输入 scons -j32 ,相信我,你的编译速度会飞起来的:lol 编译成功如下图所示:  编译完自动会生成rtthread.elf和rtthread.bin文件,这两个文件都是可以直接下载使用的,但是唯独没有hex文件,如下有两个方法生成hex文件 1. 修改rtconfig.py文件第63行,将其中的binary改为ihex即可,如图:  2. 这是第二种方法,我自己写了个脚本,可以适用于多种开发条件,不仅仅是编译rtt可以用到,做其他ARM相关开发直接能用。 ``` #!/bin/sh # Author: Wei Zhou if [ $# -ne 1 ] then echo "Usage: You need specify a format to transform -> hex or bin" exit 1 elif [ $1 = hex ] then arm-none-eabi-objcopy -O ihex *.elf frimware.hex exit 0 elif [ $1 = bin ] then arm-none-eabi-objcopy -O binary *.elf frimware.bin exit 0 else echo "Usage: You need specify a format to transform -> hex or bin" exit 1 fi ``` 把上述代码保存为elf2hex-bin文件,给与其可执行权限,并加入到环境变量中(PATH路径),您在任何地方只要执行上述脚本命令即可。 比如,在bsp开发目录下,scons命令编译完成后,执行 elf2hex-bin hex 命令,即可生成frimware.hex文件用于下载  ### 烧录 下载SEGGER的MacOS下的[Jlink驱动](https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack),完成安装 可下载.bin文件或者是.hex文件。这里要注意一点,下载.bin文件要制定烧录地址为0x08000000, .hex不用指定   至此,享受MacOS下RT-Thread开发给您带来的快感吧 DaZhou 2019年8月26日23:00
查看更多
15
个回答
默认排序
按发布时间排序
tyustli
2019-08-26
这家伙很懒,什么也没写!
6666
来一颗糖
2019-08-27
这家伙很懒,什么也没写!
666666 我这里还有篇帖子讲 linux 下 如何使用 vscode 调试 stm32 的。 - [教程:ubuntu 下 vscode 编译 下载 调试 rt-thread stm32 程序](https://club.rt-thread.org/ask/question/9ae9f889db643afc.html)
我夏了夏天
认证专家
2019-08-27
Life isn't about finding yourself, life is about creating yourself.
楼主厉害,为了省事,我还是在 pd 下装 ubuntu 虚拟机 ;P
bernard
2019-08-27
这家伙很懒,什么也没写!
这个是scons --dist不能用了?
我夏了夏天
认证专家
2019-08-27
Life isn't about finding yourself, life is about creating yourself.
dist 好使不? 另外启动文件的修改有没有提交到主线呀?
我夏了夏天
认证专家
2019-08-27
Life isn't about finding yourself, life is about creating yourself.
[i=s] 本帖最后由 Summer_gift 于 2019-8-27 17:09 编辑 [/i] >666666 >我这里还有篇帖子讲 linux 下 如何使用 vscode 调试 stm32 的。 --- 推荐楼主再出一篇 mac 下的调试贴 :D
DaZhou
2019-08-29
这家伙很懒,什么也没写!
>推荐楼主再出一篇 mac 下的调试贴 正在准备中。。。
我夏了夏天
认证专家
2019-08-29
Life isn't about finding yourself, life is about creating yourself.
>这个是scons --dist不能用了? 实测可用 ;P
superopt
2019-11-09
这家伙很懒,什么也没写!
pkgs更新软件包能用吗?
qg_
2019-11-14
这家伙很懒,什么也没写!
同楼上问 mac平台 pkgs更新软件包 怎么使用
撰写答案
登录
注册新账号
关注者
0
被浏览
6.1k
关于作者
DaZhou
这家伙很懒,什么也没写!
提问
10
回答
49
被采纳
0
关注TA
发私信
相关问题
1
STM32 407 串口接收数据 系统卡死
2
RTT nrf24l01 设备驱动程序
3
stm32f10x串口只能发送数据,无法接收
4
第一次尝试移植rt-thread 到stm32F103系列问题
5
有人把stm32L07xx的bsp移到rtt上来了吗?求一个
6
rt-thread线程调度异常在stm32f103芯片上
7
RTT是否支持STM32F429
8
请问谁有 STM32F40x HAL + RT-THREAD 模板
9
rt-thread在stm32f411下的移植问题
10
针对STM32F7系列平台的MPU,Cache特性,需要注意哪些问题?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
10年开发后,我后悔坚持的8个技术信仰,不知你踩中几个
2
MCAX-156 ADC测评
3
【FRDM-MCXA156测评】- CherryUSB与hid鼠标设备模仿
4
【FRDM-MCXA156测评】- 硬件SPI模块
5
【NXP-MCXA156】恩智浦A156上的 IIC(硬件) 实践
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
GD32
ADC
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
SFUD
C++_cpp
at_device
本月问答贡献
出出啊
1520
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
178
次被采纳
crystal266
554
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部