本帖最后由 会飞的猪_2020 于 2022-6-29 19:51 编辑
昨天看到硬汉哥帖子《为何像JetBrains公司做IDE就可以养活自己,而国内做大型对公软件都很难养活公司》,心血来潮买了一个月的CLion,所以今天在网络上找了一下相关资料,怎么编译仿真stm32工程。
花了我60多块大洋好心痛。然后就去向技术支持发邮件,问有没有相关的教程文档,毕竟是花了钱的,要硬气。
然后根据下面这两篇文档,成功编译仿真了一个最小工程。
https://www.jetbrains.com/help/clion/embedded-development.html
https://zhuanlan.zhihu.com/p/145801160
这里对整个过程进行一个记录。
下面是最后实现的效果图:
具体过程我也同步到我的个人博客里了 https://beeeeeelazy.github.io/2022/06/29/using-clion-develop-stm32/(还没完全写完)。
目前体验下来,感觉MDK是最好用的,主要有很多东西我不知道在这个Clion里如何配置,如果有大佬知道,可以告诉我。
1.Window Terminal的安装
使用gcc -v和arm-none-eabi-gcc -v检测是否存在编译环境。
根据参考链接,安装好Terminal之后,在桌面右键open in terminal打开一个Window PowerShell ,键入
[C] 纯文本查看 复制代码 arm-none-eabi-gcc -v
如果当前环境已经存在gcc和arm-none-eabi-gcc的开发环境,则可以看到它们的安装路径,如果已经存在了,则直接跳到第3节。
2.MinGW和arm-none-eabi-gcc的安装
https://osdn.net/projects/mingw/releases/
打开上面这个链接,点击图片里的按钮下载Mingw设置工具。
安装方式为一路next,不需要更改配置,默认路径直接安装在C盘里,如果要个更改安装路径,注意安装进目录不要有空格。
在Basic Setup界面,左键单击小方框,再勾选 Mark for installstion。把Basic Setup里的选项都勾上。
然后点击installation - Update Catalogue,在弹出的界面中点击 Review Change,再点击 Apply。等待更新完成。
2.1编辑环境变量
在这里我们需要把MinGW的路径添加到系统环境变量里,如果知道如何添加直接看下一节。
这里简单赘述一下,win10系统下为如下方式,win11同理。
右键我的电脑-属性在设置界面里输入环境变量,选择编辑系统环境变量
单击环境变量,双击Path,
点击新建,然后把gcc.exe的位置添加进去
2.2安装arm-none-eabi-gcc
https://developer.arm.com/downloads/-/gnu-rm
打开上面的链接,把窗口往下拉,找到这个,我们下载.exe的安装包。
下载完成后,安装它,一路next,安装完成之后勾选Add path to enviroment varibale
然后重启电脑
3.Clion相关配置
默认你已经安装好CLion
3.1生成CubeMX并添加
使用STM32CubeMX新建一个工程,注意工程名字路径中不要带 ()。如果找不到Cmke Moudle,可能是你工程名字中带了括号的原因。
在IDE选项里,选择 STM32CubeIDE。其他的配置就和平时大家玩CubeMX一样,没有什么特殊的地方。
打开CLion,选择File-Open
然后选择.ioc文件,它会弹出提示,选择open as Project,然后信任这个文件夹。
然后该工程就会被添加到工作区。
3.2 配置编译器并build工程
在界面的右上角点击小齿轮按钮然后选择设置
在Build Execution ...里选择Toolchains,点击+号,增加一个新的环境,命名为MinGW-STM32,然后在Toolset里面选择MinGW的路径,C Compiler 和 C++ Compiler选择你下载的arm-none-eabi-gcc.exe的路径。
都选择好之后,点击下方的cmake ,再点击 Reload按钮(那个小圆圈按钮)。
如果一切配置没有问题,那么会提示构建成功。
这时候右上方的 Build按钮已经可以使用了。
点击这个小锤子。
如果配置没问题会提示编译成功,生成了elf文件。
3.3配置OpenOCD并单步调试
https://gnutoolchains.com/arm-eabi/openocd/
打开上面的链接,下载Open OCD,解压到你喜欢的目录。
点击右上角齿轮图标进入Settings,点击Embedded..,把你的Open OCD的路径填入。
点击TEST,如果没问题,会出现以下界面。‘
点击Edit Configurations,新建一个OpenOCD配置文件.
在你的工程目录下,新建一个 .config文件夹,里面放入一个OpenOCD的配置文件,笔者这里用的是Dap-Link,所以这个.cfg文件命名为daplink.cfg。实际上这个叫什么都是无所谓的。
在Board config file 里,把这个配置文件的路径填入。
现在的关键就是.cfg文件里面如何填写,如果是和笔者一样的dap-link如下方式填写,然后修改flash_size大小和下载速度即可。
[Python] 纯文本查看 复制代码 #选择下载器类型为DAPLINK
adapter driver cmsis-dap
transport select swd
#设置目标工程的FLASH大小
set FLASH_SIZE 0x20000
source [find target/stm32l0.cfg]
#下载速度10M
adapter speed 10000
实际上我们需要修改的是三点:1.下载器类型 2.目标FLASH大小 3.目标芯片型号
在 scripts文件夹下 board是一些开发板的cfg文件,interface是不同的编译器,target是目标芯片。
下面这张图片是一些官方开发板的cfg配置
下面这张图片是不同的下载器
下面这张图片是不同的目标芯片
因为笔者对这个语法并不是很熟悉,具体cfg的配置也是从网络上抄袭别人的。手头上没有别的型号的下载器只有一个DAP-LINK,DAP-LINK我尝试了是没问题的。
4.疑问
这里我发现了几个问题,但是还没鼓捣明白,如果有知道的大佬可以告诉我
1.第一个就是openOCD调试的时候貌似无法动态观察变量,就是每次查看变量的值必须是暂停的时候才可以?不知道这个怎么改动可以让他像MDK一样,能够动态观察。
2.第二个就是这么改分散加载文件,比如我有一个boot一个app,那我怎么让app的程序下载的地址产生偏移?
3.另外不知道为什么论坛里排版完毕后,在最后面会多一些我没添加的图片。。比如下面这些图片都是我不想添加的,但是不知道怎么删除.. |