嵌入式交叉编译与烧录-基于STM32实战
嵌入式交叉编译与烧录-基于STM32实战1.CMake和Makefile以及CMakeLists.txt相关知识1.1关于三个名词的理解。CMakeLists.txt——唯一与开发者交互它是一个文本文件里面写的是CMake语法的高级代码。它的核心作用是用更人性化的语句比如add_executable声明项目叫什么名字、包含哪些.c源文件、要链接哪些库、头文件在哪里。开发者通常只需要会修改文件即可不需要从零手写。CMake——一个连接CMakeLists.txt和Makefile的软件它不是脚本而是一个软件程序在终端里敲的cmake命令。它的主要作用是读取 CMakeLists.txt并根据当前系统环境Linux/Mac/Windows和指定的工具链自动生成底层的 Makefile。Makefile——面向编译管理工具的文件它是由 CMake 自动生成的、面向编译管理工具的文件。它里面极其繁琐地记录了哪一个.c文件依赖哪一个.h文件以及编译它需要执行哪一条具体的 arm-none-eabi-gcc 编译命令。因为它太难手写所以现代开发都交由CMake自动生成。1.2三者之间的关系。总的来说这三者是层层递进的关系流程是开发者编写CMakeLists.txt——CMake读取后生成Makefile——编译器根据Makefile进行编译——生成.elf文件(最终编译的结果)。但是这三者的目的仅仅是在为编译器做准备工作相当于在写最终的执行方案Makefile只是Makefile太过于复杂所以用了中间工具CMake读取MakeLists.txt生成Makefile.2.核心开发流程四个阶段配置阶段(找到那个.cmake文件)目的生成Makefile。命令cmake -DCMAKE_TOOLCHAIN_FILE…/cmake/gcc-arm-none-eabi.cmake …关键指定了“交叉编译器工具链”告诉 CMake 我们是为 ARM Cortex-M 芯片编译而非PC。cmake-DCMAKE_TOOLCHAIN_FILE../cmake/gcc-arm-none-eabi.cmake..编译阶段目的将 C 语言源码翻译成芯片能懂的机器码。命令cmake --build .关键属于“增量编译”。如果只修改了 main.c只会重新编译改变的文件节省时间。如果清空了build文件夹则需要重新运行“配置阶段”命令。cmake--build.//注意目录转换到build文件夹下(这里统一存放编译生成的.elf/.map文件等等)产物分析.elf 文件包含完整的机器码和调试信息用于烧录和 GDB 调试。.map 文件内存映射文件记录了每个函数和变量在 Flash/RAM 中的具体绝对地址与大小例如main 函数成功定位在 Flash 的 0x080004b0 地址。烧录运行目的将固件写入芯片并让它跑起来。命令openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c “program CM_LED.elf reset exit”关键使用 OpenOCD 工具。program 负责写入必须加上 reset 芯片才会重新启动并执行新程序。openocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg-cprogram CM_LED.elf resetexit3.注意3.1注意编译环境上述编译过程均是基于linux环境下进行因此在STM32CubeMX中选择CMake或者Makefile。在windows环境下交叉编译可以借助现成的编译器比如CLion和STM32CubeMX结合使用本例中是将STM32CubeMX生成的模板代码进行添加相应功能后在CMakeLists.txt文件中添加相应逻辑。3.2注意工具链的位置和文件管理在工程目录下创建一个build文件夹每次重新编译前将该文件夹清空然后编译的产物全部放在一个文件夹中方便调试把工具和结果分开防止分不清。

相关新闻

HarmonyKit | 鸿蒙新特性应用:颜色转换 HEX↔RGB↔HSL 三色空间互转算法

HarmonyKit | 鸿蒙新特性应用:颜色转换 HEX↔RGB↔HSL 三色空间互转算法

HarmonyKit | 鸿蒙新特性应用:颜色转换 HEX↔RGB↔HSL 三色空间互转算法 引言 在开发者工具箱中,颜色格式转换是一个看似简单实则涉及较多数学细节的功能。前端开发者经常需要在 CSS 的 HEX 表示法、RGB 函数表示法和 HSL 函数表示法之间进行切换。Har…

2026/7/9 1:27:51 阅读更多 →
YOLOv8 数字仪表读数:180张数据集构建与 PyQt 界面读数结果实时显示

YOLOv8 数字仪表读数:180张数据集构建与 PyQt 界面读数结果实时显示

YOLOv8数字仪表读数识别:从数据集构建到PyQt界面开发的实战指南 在工业自动化和设备监测领域,数字仪表的自动读数一直是个既基础又关键的挑战。传统的人工记录方式不仅效率低下,还容易引入人为误差。而现代计算机视觉技术,特别是基…

2026/7/9 1:19:48 阅读更多 →
MemRef Dialect:内存引用与多维数组抽象

MemRef Dialect:内存引用与多维数组抽象

MemRef Dialect:内存引用与多维数组抽象 在控制流有了 SCF 支撑之后,数据在内存中的存储与访问便成为了下一个需要解决的核心问题。在底层编译中,直接操作扁平的一维指针(如 float*)会丢失大量的高维空间信息。为了在底…

2026/7/9 1:15:47 阅读更多 →

最新新闻

终极Emby Premiere解锁指南:免费享受所有高级功能的完整教程

终极Emby Premiere解锁指南:免费享受所有高级功能的完整教程

终极Emby Premiere解锁指南:免费享受所有高级功能的完整教程 【免费下载链接】emby-unlocked Emby with the premium Emby Premiere features unlocked. 项目地址: https://gitcode.com/gh_mirrors/em/emby-unlocked 想要完全免费地获得Emby Premiere所有高级…

2026/7/9 2:11:59 阅读更多 →
ERM振动马达和LRA区别:工程师如何选择适合的振动反馈方案?

ERM振动马达和LRA区别:工程师如何选择适合的振动反馈方案?

在智能终端、可穿戴设备、医疗电子、工业控制以及机器人设备快速发展的今天,振动反馈技术已经成为人机交互的重要组成部分。其中,ERM振动马达和LRA振动马达是目前应用最广泛的两类振动执行器。那么ERM振动马达和LRA区别究竟在哪里?工程师在产…

2026/7/9 2:09:59 阅读更多 →
亲测!知名视频号团购服务商实践分享

亲测!知名视频号团购服务商实践分享

在视频号团购蓬勃发展的当下,视频号团购服务商的重要性日益凸显。求索未来(日照)人工智能有限公司旗下的小圆视频号POI团购就是其中颇具代表性的存在。一、行业痛点与服务商的价值传统团购平台存在诸多痛点,行业报告显示&#xff…

2026/7/9 2:09:59 阅读更多 →
AI驱动浏览器自动化:从原理到实战,构建智能爬虫与RPA工具

AI驱动浏览器自动化:从原理到实战,构建智能爬虫与RPA工具

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 大家好,我是专注于技术实战分享的博主。在探索自动化测试、数据抓取或RPA(机器人流程自动化)领域时…

2026/7/9 2:05:58 阅读更多 →
题目一:基础Logistic混沌流加密(CTN入门必考)1.题目描述

题目一:基础Logistic混沌流加密(CTN入门必考)1.题目描述

1.题目描述 比赛萌新使用经典Logistic混沌映射生成密钥流异或加密Flag,加密方式简单,但他忽略了计算机浮点精度缺陷。已知密文,试还原Flag。 已知条件:密文:0x7d,0x2e,0x1f,0x45,0x0a,0x3b,0x28,0x14,0x5c,0x10&…

2026/7/9 2:03:58 阅读更多 →
piecewiseSEM 2.3.1 实战:处理5类非正态数据(二项/泊松分布)与混合效应模型整合

piecewiseSEM 2.3.1 实战:处理5类非正态数据(二项/泊松分布)与混合效应模型整合

piecewiseSEM 2.3.1 实战:非正态数据与混合效应模型整合指南 1. 理解非正态数据在生态研究中的挑战 生态学和社科研究中的数据往往呈现出复杂的分布特征。当响应变量是计数型数据(如物种个体数)或二元数据(如有/无)时…

2026/7/9 2:03:58 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻