gd103+gnu+rt-thread
gd103+gnu+rt-thread
本文旨在使用makefile管理嵌入式单片机工程,程序编辑器采用VSCODE或其他形式,编译器采用arm-none-eabi-gnu编译器,同时在工程移植支持rtos,采用比较流行的rt-thread,本文借鉴了网络上大量资源,可以算是个整合,仅做开发参考使用。
VSODE的安装
vscode是微软的程序编辑器,插件比较多,对于写代码,调试代码还是能提高效率的:
-
程序下载
:
https://code.visualstudio.com/
;,选择
-
安装时请勾选以下几个按钮,这样下次就可以从文件夹直接打开工程了;
3.安装完毕后,建议在商店中搜索 Chinese (Simplified) Language Pack for Visual Studio Code 插件,这个是汉化插件,其余插件看需求安装。安装完毕后,重启应用,页面汉化完成。
编译环境的搭建
编译环境可以采用windows加MinGW,同时本地配置ARM GCC交叉编译工具链的方式,但是windows的shell不符合开发习惯,本文不做探讨,采用虚拟机加windows主机方案太重量级,本文探讨wsl+windows的方式搭建开发环境。
需要是win10系统
win10版本至少是2004
主板需要开启虚拟化支持
主板需要开启虚拟化支持
关于wsl2的安装,请参考文章
https://blog.csdn.net/dangelzjj/article/details/109267163
1.Ubuntu换源:此步骤请参考文章
WSL换源
2.编译器安装:执行
$ sudo apt-get update
$ sudo apt-get install libmpc3
$ sudo apt-get install gcc-arm-none-eabi
$ sudo apt install make
3.测试下,出现以下内容,正常。
$ sudo apt-get update
$ sudo apt-get install libmpc3
$ sudo apt-get install gcc-arm-none-eabi
$ sudo apt install make
移植1个GD32工程
移植工程,需要重点关注启动文件,
.s汇编文件
.ld链接脚本文件
makefile管理make文件
已经移植好的工程,请参考实例
https://gitee.com/lgkgkfg/gd103-gnu-rt-thread
启动文件
启动文件可直接用stmcube生成的文件修改,比如需要用GD32F103的,可以直接修改STM32F103的启动文件。
一般生成的文件不建议直接用,需要修改中断向量表名称,STM32和GD的中断向量名称有差异,但是偏移地址相同。
更多细节请参考实例中的
startup_gd32f103xb.s
链接脚本文件
链接脚本文件可直接用stmcube生成的文件修改,可不做修改。
makefile文件
makefile文件用cube生成的文件做简单修改,因为修改了主芯片类型,同时有增添了rt-thread,需要修改makefile的包含路径、宏定义与启动文件选项,详细还是参考实例
Makefile
rt-thread移植
rt-thread移植主要完成 \bsp,\include,\libcpu,\src几个目录的移植即可,注意,在移植 context_gcc.S文件时需要将此文件重命名为context_gcc.s。
根据目录架构修改makefile。
编译
打开vscode,打开工程。
新建一个终端。
执行
$ bash
$ make -j8
会生成一个build文件夹,里面有生成的bin文件。
烧录
烧录可采用segger j-flash烧录,但是此法需要每次都打开更新bin文件,本文采用烧录脚本完成。
-
新建1个burn文件夹,在里面新建以下两个文件夹。
├── burn │ ├── download.jlink │ └── jlinkload.bat
-
download.jlink
此文件用用于装载bin文件,以下内容请根据情况修改。
erase
loadfile C:\Users\taylor\Desktop\gd103-gcc - only gnu\build\gd103.hex 0x08000320
r
qc
其中bin的路径需要修改成本机地址。
C:\Users\taylor\Desktop\gd103-gcc - only gnu\build\gd103.hex
-
jlinkload.bat
此文件用用于连接jlink,以下内容请根据情况修改。
cd c:\
cd Program Files (x86)\SEGGER\JLink\
.\JLink.exe -autoconnect 1 -device GD32F103RC -if swd -speed 1000 -commandfile C:\Users\taylor\Desktop\gd103-gcc - only gnu\burn\download.jlink
TIMEOUT /T 2
其中以下地址路径请修改成本机地址。
cd Program Files (x86)\SEGGER\JLink\
C:\Users\taylor\Desktop\gd103-gcc - only gnu\burn\download.jlink
qc
- 新建一个bat脚本,用于windows下调用,放在工程最顶层文件夹,内容如下,命名为 burn.bat。
./burn/jlinkload.bat
- 下载,直接再新建个终端,在windows下执行即可
.\burn.bat