前言:
现在开发stm32已经有很多人性化的ide了,像常用的keil,以及后面ST新推出的跨平台的STM32cubeide,都可以搭建自己的工程来开发。
但是本猿有时候就喜欢玩点另类的,比如这次我在ubuntu上搭建了stm32的开发环境,用vscode来开发,脚本编译甚至用来仿真(j-link),虽然整体功能上没有keil这些配套ide来的强大,但是有vscode的加持与开放的环境,整体用起来还是有一些独到的好处的。
比如整体会搞清楚很多东西,像工程的编译过程,生成最后烧写文件,最后程序执行;以及makefile与shell的使用;编译的参数是什么意思(对应到keil ide里面就是工程的配置)等。
本篇目标:了解ubuntu如何开发stm32,以及相关的一些内容。
资料准备:
1. 工程功能:
支持linux下stm32f407一键编译烧写,支持jlink。 支持vscode进行一键编译,jlink烧录、甚至仿真。 硬件方面已支持以太网lan8720、后续将支持rtl8189无线芯片。 工程已经或将支持的一些第三方开源库:freertos、lwip、logger、flash存储、cjson、http、mqtt、mbedtls等。 后续将支持自己编写的应用组件:智能灯泡、智能插座、智能红外遥控器等组件。 后续将安排在此工程上创建更多的关于物联网、智能家居相关的工程。2. 先将工程clone到本地:
git clone https://github.com/jinhaotutu/stm32f4_linux_prj.git
.
├── LICENSE
├── README.md
└── stm32f4_linux_mk
├── doc //相关文档
├── fwlib //STM32库函数文件
├── misis //STM32相关配置头文件
├── obj //编译相关文件夹
│ ├── makefile //makefile文件
│ ├── objects.mk
│ ├── sources.mk
│ ├── STM32F407ZGTX_FLASH.ld //stm32的flash映射文件
│ ├── subdir.mk //编译规则
│ └── tools //arm-linux编译器
├── Startup
│ └── startup_stm32f407zgtx.s //stm32启动文件
├── sys //stm32外设、接口文件
├── thirdlib //第三方开源库
└── user
├── build.sh //编译脚本
├── load.sh //jlink烧写脚本
├── stm32_lwip_withos //stm32+lwip+freertos工程
├── stm32_rtos_single //stm32+freertos工程
├── stm32_single //stm32示例工程
└── stm32_socket //stm32+lwip+freertos+socket工程
.____ 待更新
3. 编译烧写stm32工程:
# 单编译
# 1. 进入工程根目录
cd stm32f4_linux_prj/stm32f4_linux_mk/user/
# 2. 调用build.sh脚本进行编译:第二入参user目录下工程名(stm32_single)、第三入参固件版本号(1.0.0) -- 生成bin文件在工程output文件夹
sh build.sh stm32_single 1.0.0
# 使用 j-link进行烧写
# 1. 单烧录:第二入参,烧录bin文件相对路径,使用jlink-swd模式下载,所以保证烧录前安装了jlink驱动以及连接了stm32
sh load.sh ./stm32_single/output/1.0.0/stm32_single_app_v1.0.0.bin
# 2. 编译+烧写:在单编译加入第三入参loadbin,进行一键编译+烧写
sh build.sh stm32_single 1.0.0 loadbin
# 清除
sh build.sh stm32_single 1.0.0 clean #加入第三入参clean进行编译中间文件清除
4. 编译过程解析:
你以为就以上编译一个demo工程就完了吗?那就太没意思了,来点其他好玩的:
1. 使用vscode进行一键编译烧写(可通过ctrl+shift+b来快速执行任务,具体配置在 tasks.json 中,有兴趣的同学可以参照):
2. 使用vscode进行jlink仿真(可通过F5来快速进入仿真,具体配置在 launch.json 中,有兴趣的同学可以参照):
上述的所有以及之前已有的一些功能我也希望通过后续的文章进行仔细介绍,比如移植rtos、移植lwip,mqtt与http等必要的知识点。
物联网可能在持续爆发,但是知识一直在那里,要时刻进行学习~
借此推广一下自己的公众号,与博客一样,推送一些关于物联网的知识、技术、产品介绍~希望能帮到有需要的人:
原创文章 18获赞 62访问量 6万+
关注
私信
展开阅读全文
作者:图图Tuu