既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
不多介绍, Stack Overflow对2018年的IT生态调查显示:Visual Studio Code超过Visual Studio一跃成为榜首,成为“最受欢迎的开发环境”, 前端后端全栈程序员必备. 当然嵌入式工程师也不能少.
一 .安装软件
1. Mingw-w64 GCC for Windows 64 & 32 bits
第一步, 安装Mingw-w64, 推荐使用离线安装包安装,其实就是解压到方便找到的目录
推荐不要使用Online Installer, 会比较慢,虽然整个软件只要10MB,非常小,
注意我们使用软件要在官方提供的地址进行下载,警惕百du网盘(除非明确知道来源)和其他下载站. 官方链接一般是
官方项目主页,SourceForge ,或者官方项目Github release页面进行下载. SourceForge
是全球最大的开放源代码软件开发平台和仓库。它集成了很多开放源代码应用程序,为软件开发提供了整套生命周期服务
下面红框里任选, 都是可以用,区别是Windows下实现的系统调用细节不一样.
我选的是i686-posix-dwarf
,可能是最佳兼容性,这个是在线下载器默认安装的版本.
下载地址:
https://sourceforge.net/projects/mingw-w64/files/
上图不同版本区别的参考文章 :
https://blog.csdn.net/AMDDMA/article/details/111600238
Mingw-w64 包含了Windows下的本机GCC编译器套件, 编译产物一般是原生 Windows 应用, 学习C/C++语言,不使用微软的VC的话,就可以使用GCC进行编译windows下的程序.
安装(或解压缩)完毕, 会得到一个bin目录(后面要放入系统环境变量里面Path), 里面有很多exe,都是是windows系统的GCC软件套装.
记住这个bin文件夹,这个是我们make安装目录
为了方便以后在命令行执行make指令,而不是输入较长的"mingw32-make", 要把mingw32-make.exe 复制为make.exe.
一些题外话:
在嵌入式开发上,我们只要用到Mingw-w64提供的make.exe程序,make是用于解析Makefile文件的软件,可以认为Makefile文件是自动调用gcc,把目录里一个个*.c .*h文件喂给gcc去编译的一个自动脚本文件,用户可以自由决定那些文件是需要编译的,哪些是不用编译的,还可以设置编译的选项,比如"编译优化等级",“宏定义”,"警告等级"等等.
更多Makefile相关资料,参考: GNU Make 使用手册(中译版),
内容较多仅作查阅,实际使用时我们只要输入make这四个字母就行.
https://blog.csdn.net/weixin_40535588/article/details/89336051
到此make安装完毕.
2. 安装 ARM-GCC 交叉编译器
进入ARM开发者官网下载编译器安装包,下面一个是压缩包,另外一个是安装包,本文章软件都是不需要"安装"的,都是win32可执行二进制文件,是一个解压的动作即可.
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
安装解压完成后,可以找到一个bin文件夹,这个就是我们编译器安装目录.
到此GCC交叉编译器安装完毕
3. 安装 Debug 调试工具 openocd 0.10.0
有了以上两个工具, 已经可以编译出Bin 或者 Hex文件, 但是编写程序遇到Bug,就免不了使用Debug功能, 实时加入断点,获取某个内存的数值, 或者查看系统Hardfault前的调用,快速找到出错代码. 可以大大加快排除Bug的速度.
Debuger 的硬件可以是: CMSIS-DAP / STlink V2 / Jlink OB V8 V9 , 这里更加推荐ARM官方开源的CMSIS-DAP. 接口速度和兼容的型号上是超过了Jlink V8, 本身软硬件也是开源的,可以直接上网购买别人做好的模块, 实际CMSIS-DAP硬件上就是一片带usb的stm32而已,价格30元以内,带接口隔离或者无线调试的可能贵一些.
官网 http://openocd.org
最新版本是2017年发布的 OpenOCD 0.10.0, 加入ARM Cortex-M7 支持,以及当年推出的STM32F7等一些列的支持, 这个开源项目更新比较慢 一般2-3年一更.
有了硬件,使用openocd (Open On-Chip Debugger/) 可以驱动CMSIS-DAP硬件,最终实现GDB服务,这样借助IDE的图形界面发送指令给GDB server, 我们就可以一键获得芯片内部的内存,一键操作代码的流程,打断点, 同时也支持烧写Flash到指定地址.
下载地址
找到sysprogs公司网站上(是卖一个叫做VisualGDB软件的 )提供的win系统编译版本,版本新,下载速度比较快:
https://sysprogs.com/getfile/1364/openocd-20201228.7z
解压到想要安装的地方, 记住bin文件夹得目录. 后面我们设置环境变量的时候需要用到.
4. Visual Studio Code
https://code.visualstudio.com/
直接点击下载exe安装即可
二. 配置Path 环境变量
以上有三个工具是需要设置到Win系统得环境变量里面, 在Ubuntu / Linux 里面也是一样的操作,是需要在用户bash脚本内写入Path变量.
win10下也是写入Path,但是比较方便一些. 如下操作:
在 桌面"此电脑"图标, 右键 - >属性 -> 高级系统设置 -> 环境变量 -> Path ->编辑, 增加 3条我们的bin目录,分别是:
- 执行 make脚本的 mingw32 的bin目录
- 交叉编译器 GNU-ARM-… 下的 bin目录
- 调试器 openOCD 的 bin 目录
完毕, 运行cmd , 或者在vscode界面下面的终端, 就可以直接输入指令查询这些工具的版本.
查询make版本
make -v
查询交叉编译器版本
arm-none-eabi-gcc -v
查询openOCD版本
openocd -v
如果显示诸如: “不是内部或外部命令,也不是可运行的程序或批处理文件” , 说明环境变量不正确, 系统无法在环境变量的路径列表里找到我们需要的工具. 就需要回到上面步骤进行检查. 在Linux下也是如此是Path路径的问题.
上图三个命令都已经可以在cmd内调用,响应-v参数返回自己版本号.
在VScode内使用 Ctrl + ~
快捷键, 打开内置的power shell终端, 也可以顺利看到命令返回版本.
VScode的终端显示效率高,支持代码高亮. 建议以后就在项目内直接使用, 不再使用 Win10 那个黑色cmd.
到此我们的Win10 已经拥有了和Linux下交叉编译一样的环境, 可以编译任意arm-gcc ,makefile 的工程了.
甚至可以编写本机电脑执行的C++程序
只要输入:gcc main.x -o main.exe
一句代码即,0.1秒 一瞬间可完成编译得到可以直接执行的exe文件.
接下来我们编译一个STM32 CubeMX生成的makefile工程. 直接编译单片机程序.
三. 编译STM32代码
1.获取STM32CubeMX工具,直接生成模板
也可以不使用,直接下载文章最后我提供的模板
STM32CubeMX是目前单片机界最强配置工具, 支持Mac,Linux,Win 系统, 可以查询型号, 配置引脚和外设,直接生成代码. 其他厂家还有非常长的路要追赶.
下载地址:
https://www.st.com/zh/development-tools/stm32cubemx.html#get-software
2.生成 STM32F103的Makefile工程
( 熟悉CubeMX兄台的请略过)
在起始页面, 点击MCU SELECTOR
选择芯片后, 如是第一次选择F1的芯片的话, ,需要一点时间下载F1芯片的支持包,弹框点击YES下载 ,下载速度还可以.
(上图) 然后可以根据需要配置一下时钟,引脚外设, 接下来就找到: Project Manager, 进行设置.
注意要选择:Mekefile环境,否则是生成Keil或者IAR工程, 最后点击生成即可.
生成完毕, 可以自动打开目录, 看到生成结果如上. 右键选择Open with Code. 打开VScode 进行查看.
3.编译代码
先不细看, 直接编译, 按 Crtl + ~, 调出命令行, 输入: make -j
1秒后, 编译完成, 生成了 .hex 文件 和 bin文件. 位于自动生成的./Build文件夹内.
由于使用了-j 指令, 会使用多线程编译. 编译速度非常快只要一瞬间就完成了HAL库和main文件的编译并生成 Bin 和 Hex文件.
如果要清理Build目录, 只要运行make clean
命令, 由于这个Makefile文件只考虑到Linux系统, 我们需要把clean的命令 -rm -fR $(BUILD_DIR)
改为Windows下的-del /q $(BUILD_DIR)
.
至此STM32工程编译完成.,STM32工程的芯片
4.下载 Bin文件到目标板
方法1: 使用STLink v2 硬件,SWD接口,用官方STM32 ST-LINK Utility软件下载Bin文件.
方法2: 使用Jlink OB/V8/V9 使用J-flash下载Bin文件.
方法3. 使用芯片内置的ISP功能,手动把BOOT0脚拉高,使用mcu-isp软件,uart1串口烧写.
方法4(推荐). 使用OpenOCD, 硬件使用CMSIS-DAP/STLink v2.
命令行执行:
用CMSIS-DAP:
openocd -f cmsis-dap.cfg -f stm32f1x.cfg -c init -c halt -c "program my_gcc_test.bin 0x8000000" -c reset -c shutdown
用STLink v2:
openocd -f stlink-v2.cfg -f stm32f1x.cfg -c init -c halt -c "program my_gcc_test.bin 0x8000000" -c reset -c shutdown
需要先把接口配置,和芯片配置文件从openocd安装目录/拷贝到工程目录下,
cmsis-dap.cfg 或 stlink-v2.cfg 位于 : 安装目录\share\openocd\scripts\interface
stm32f1x.cfg位于 : 安装目录\share\openocd\scripts\target
参考
https://blog.csdn.net/u011011827/article/details/102643360
芯片 Debug 单步调试步骤参照下面步骤的Debug部分.
四. 编译GD32工程, 并使用OpenOCD进行Debug.
2020年的特殊情况, 导致ST芯片的缺货潮的到来, ST单片机芯片一片难求, 上面举例的STM32F1系列的价格由原先的8-10元直接飙升到30-100元,某些型号甚至2021年全年无货.
以下以GD32单片机为例,MM32 ,AT32,APM32类似, 选用一个ST替代芯片进行Debug部分记录.
1 . 关于获取GD32工程模板.
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
链图片转存中…(img-mNedP8GX-1715687718498)]
[外链图片转存中…(img-O4TF10Lr-1715687718499)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新