| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> linux下STM32开发环境搭建 -> 正文阅读 |
|
[嵌入式]linux下STM32开发环境搭建 |
目录 参考:?JAVA环境下载:Java SE Runtime Environment? STM32CUBEMX下载:STM32CUBEMX gcc-arm工具链下载1:gcc-arm-none-eabi gcc-arm工具链下载2:gcc-arm-none-eabi openOCD下载:openOCD 前言:? ? ? ? 本文最终目的是在 ubuntu 16.04 系统下开发STM32。 ????????用到了 STM32CUBEMX 去生成带有?Makefile 的代码,然后使用 gcc-arm-none-eabi 工具对程序进行编译。再通过 openocd 加 CMSIS-DAP的方式连接到目标板(这里是一块STM32F103C8T6)加下载程序。最终使用 GDB 工具进行调试程序。? 安装 JAVA 环境? ? ? 安装 STM32CUBEMX 是需要JAVA的环境的,下载的地址详见文首“参考”项。下载 linux 版本的压缩包。将其放到 linux 系统下进行解压,注意你文件放的路径。 1:使用下面命令打开 profile
2:在 profile 文件最后添加如下代码,其中 JAVA_HOME 后面的路径写你解压包放的地方。?
3:重启 linux 系统 4:输入 java -version ,若上述在 profile 中添加环境变量无误,就会出现相应的版本信息 安装STM32CUBEMX? ? ? ? 下载地址详见文首“参考”项,下载 linux 版本的包。注意上一步安装的 java 版本,不要将 CUBEMX 的安装包的版本选的太高,我用的是 5.5 的版本。将其放到 linux 系统下进行解压,可能linux 的环境下没有安装解压 .zip 的工具。可以在 windows 下解压后再搬到 linux 系统中。 ? ? ? ? 在解压包中找到?SetupSTM32CubeMX-5.5.0.linux,注意不同版本名称不同。执行下面命令,给与最高的权限
????????然后再运行?SetupSTM32CubeMX-5.5.0.linux
? ? ? ? 接下来的操作就和 windows 里面一样了。正常安装即可。安装完成之后在你的安装目录下就有一个名为 STM32CUBEMX 的 executable 类型的文件,双击就可以运行了。 安装gcc-arm-none-eabi? ? ? ? 下载地址详见文首“参考”项,我是在第一个地址下载,听说第二个地址才是官网,不太清除两个网站的关系。有知道的大神可以在评论告诉我下。 ? ? ? ? 将下载好的 gcc 包放到 linux 下解压。记下文件路径。执行以下命令打开 /etc/profile
?????????在文件最后添加如下代码,将软件的路径置于系统的环境变量之下,注意不同版本的把路径中版本名替换掉。
????????重启系统 linux 系统? ????????输入arm-none-eabi-gcc -v,正确安装就会显示出版本信息 ? ? ? ? 若遇到其它情况,可能是有些依赖没有安装,可以尝试下面两条指令安装。
编译STM32代码? ? ? ? 做好上述准备步骤之后,就可以编写编译 STM32 了。对 STM32CUBEMX 感兴趣的,我后面会着手写相关的内容 戳这 ????????打开 STM32CUBEMX,选择芯片,配置参数生成代码。注意生成类型选择为 Makefile 类型· ????????生成完后在工程目录中打开终端,输入 make 即可对其进行编译。编译成功后就会生成 build 文件夹,里面就会有 .bin .elf .hex文件 ? ? ? ? 至于代码的编写,可以使用 vscode。网上有很多关于 vscode 的使用。 安装openocd? ? ? ? openocd 可以在 linux 上运行并且支持几乎所有的 arm 调试器。下载地址详见文首“参考”项。解压之后进入目录输入如下命令进行配置
????????等待配置完成后,就会弹出如下提示 ? ?????????可以看到 CMSIS-DAP 这行是 yes 。 ? ? ? ? 然后再输入如下指令编译并安装
? ? ? ? ?在安装完成之后将 contrib 目录中的 60-openocd.rules 文件复制到 /etc/udev/rules.d目录下
????????因为这个文件中包含了所有支持调试器的 USB 接口描述,还需要删除以前复制进入这个文件内的规则文件,比如 49-stlinkv1.rules 49-stlinkv2.rules 49-stlinkv2-1.rules 99-jlink.rules 等 ,没有就不用理会。 ? ? ? ? 重启系统来加载规则 ????????若安装成功则在?/usr/local/share/openocd 路径下会出现 openocd 的文件夹。其中在 scripts 文件夹下就会有 interface 和 target 这两个文件。分别是调试器的配置文件和目标芯片的配置文件。其中内容会在配置连接时用到。 ? ? ? ? 使用 DAP 连接上目标板使用如下指令
? ? ? ? 上述是简写路径,openocd 会自动在其 script 路径下搜索脚本?,连接成功后,会出现以下界面 ? ? ? ? 然后另外启一个终端,输入 telnet localhost 4444 用来连接?openocd,这个在上图中就有提示。 ? ? ? ? 然后输入如下指令,即可下载程序
? ? ? ? 下载程序过程有些麻烦,但一般是用 GDB 调试程序,需要时才下载程序。 安装GDB调试工具? ? ? ? GDB调试工具作为 GNU 编译器下标准的调试工具,在编写调试过程中会频繁被使用到。我实验过两种方式安装 GDB, 一种是下载单独的 GDB 源码包进行安装,详见文首“参考”项。第二种简单一些,在安装 gcc-arm-none-eabi 工具链时就会有 GDB 的存在。我这里使用第二种方法。 ? ? ? ? 启动 GDB 进行调试之前,需要使用前面提到的 openOCD 连接到目标开发板。可以在上图倒数第二行看见提供了 3333 端口给 GDB。输入如下命令,即可将 GDB 与调试器连接上,同时 openOCD 端也会收到连接信息。
? ? ? ? 接下来还需要输入如下代码来完成所有的初始化操作
? ? ? ? 接下来就可以正常的使用 GDB 进行调试了,具体的命令不做阐述。? ? ? ? ? 上述使用 GDB 调试的步骤有点麻烦,但我们可以写一个 “.gdbinit” 的文件来简化每次连接输入的代码量。如下图,是我在 ".gdbinit" 文件中写入的内容。以后连接就只需要输入?arm-none-eabi-gdb xxx.elf 就好。GDB 会自动去执行 “.gdbinit” 中的文件。
? ? ? ? 但在当前工程目录下写 “.gdbinit” ,在打开 GDB 程序时会出现以下问题
? ? ? ? 观察 GDB 输出信息,发现是“安全路径保护”会禁止当前目录下的 “.gdbinit” 执行。有多种解决办法,这里说一种最方便的。在/home/xxx 目录下新建一个 “.gdbinit” 文件,在其中输入如下代码
? ? ? ? 这样就允许了你工程目录中 .gdbinit 的执行。 ? ? ? ? 还可以进一步减少连接 GDB 调试时的执行代码量,对于?arm-none-eabi-gdb xxx.elf 这条指令 ,我们可以在工程的 Makefile 文件中以添加目标的方式来简化,如下?
? ? ? ? 其中 PREFIX 环境变量就是 “arm-none-eabi-”,后面的 build 是 STM32CUBEMX 生成 .elf 文件所在的目录。 ? ? ? ? 然后在终端输入 make debug 就可以加载调试文件并打开 GDB 程序,若前面关于 “.gdbinit” 的操作无误的话,就会自动执行连接到本地 3333 端口,然后 reset,halt,load程序。一步搞定。 ? ? ? ? 兴趣使然,以上内容都是本人亲测过的。若有什么错误的地方,非常欢迎大家在评论区留言。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:35:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |