当前位置: 首页 > news >正文

基于ubuntu的STM32嵌入式软件开发(四)——应用软件工程的修改、Makefile及编译脚本的编写

        本文主要介绍基于标准库函数移植的STM32的应用软件工程的修改,主要涉及到文件内容修改、Makefile文件编写、编译脚本编写等内容,其中编译脚本是基于arm-none-eabi-gcc的交叉编译器撰写的。程序亲测可以正常编译,生成.bin和.hex的可烧录镜像文件。

1.首先修改project_m4/user目录下的main.c函数,将多余代码删除,修改如下所述:

图1 user/main.c文件修改

2.将project_m4/fwlib/src目录下的stm32f4xx_fmc.c文件删除。

图2 删除fwlib/src目录下的stm32f4xx_fmc.c文件

3.将project_m4/user/目录下的stm32f4xx_it.c文件第25行的main.h头文件引用删除,137行的延时函数调用删除,如下图所示:

图3 user/stm32f4xx_it.c文件修改

4.将project_m4目录下的stm32_flash.ld链接文件的75行添加_exit段,否则编译会报错(注意:这是由于交叉编译器版本的问题)。

图4 stm32_flash.ld链接文件修改

5.在project_m4目录下新建Makefile的文件,如下图所示:

图5 应用软件工程目录新建Makefile文件

 6.Makefile的内容如下所示:

图6 Makefile文件内容

 7.新建编译脚本build.sh,并编写build编译脚本如下所示:

图7  build.sh编译脚本内容

8.给编译脚本build.sh添加可执行权限,并运行编译脚本build.sh进行应用软件工程的编译。

图8 给编译脚本添加可执行权限并运行编译脚本build.sh

9.编译完成,生成可烧录的hex、bin格式的镜像文件,如下所示:

图9 编译完成,生成可烧录文件

 

相关文章:

基于ubuntu的STM32嵌入式软件开发(四)——应用软件工程的修改、Makefile及编译脚本的编写

本文主要介绍基于标准库函数移植的STM32的应用软件工程的修改,主要涉及到文件内容修改、Makefile文件编写、编译脚本编写等内容,其中编译脚本是基于arm-none-eabi-gcc的交叉编译器撰写的。程序亲测可以正常编译,生成.bin和.hex的可烧录镜像文…...

MQTT协议分析

目录 一、前言 二、MQTT协议概述 概念 基本原理 MQTT协议的结构 MQTT的QoS机制 QoS 0:最多一次传输 QoS 1:至少一次传输 QoS 2:恰好一次传输 三、MQTT的应用场景 四、MQTT的优点和缺点 五、MQTT协议的实现 六、实战体验MQTT …...

基于树莓派4B设计的音视频播放器(从0开始)

一、前言 【1】功能总结 选择树莓派设计一款家庭影院系统,可以播放本地视频、网络视频直播、游戏直播、娱乐直播、本地音乐、网络音乐,当做FM网络收音机。 软件采用Qt设计、播放器引擎采用ffmpeg。 当前的硬件选择的是树莓派4B,烧写官方系统,完成最终的开发。 本篇文章主…...

MSF手机渗透实验(未成功)(CVE-2019-2215 Binder UA)

1. 前言 最近想利用metasploit对手机进行依次渗透实验。 通过查看最近三年的安卓漏洞,我对CVE-2019-2215这个漏洞很感兴趣。 幸运的是,metasploit里就有这个漏洞的攻击payload,于是我就开始试试了。 msf6 > search binderMatching Mod…...

系列十二、MySQL管理

一、系统数据库 Mysql数据库安装完成后,自带了一下四个数据库,具体作用如下:二、常用工具 2.1、mysql 2.1.1、概述 该mysql不是指mysql服务,而是指mysql的客户端工具。 2.1.2、语法 # 语法 : mysql [options] [dat…...

[游戏架构] 有限状态机的实际应用

什么是有限状态机 有限状态机(Finite State Machine,简称FSM)是一种常用的计算机科学中的建模工具,用于描述由离散状态和状态之间的转换组成的系统。它主要由一个有限的状态集合、一个初始状态、一个输入事件集合、状态之间的转换…...

【站外SEO】如何利用外部链接来提高你的网站排名

随着互联网的快速发展,越来越多的企业开始注重SEO优化,以提升自己的网站排名,增加流量和曝光度。 而站外SEO作为SEO的重要组成部分,对于提升网站排名具有不可忽视的作用。 站外SEO主要是通过外部链接来提高网站的排名。而GPB外链…...

OSCP-课外4(修复web访问、Mysql UDF提权)

目录 难度 一、主机发现与端口扫描 二、Web信息收集 站点目录扫描 搜索phpmailer的漏...

深信服面经---云计算方向(附问题知识点解析)

深信服面经---云计算高级开发一、一面问题概览二、实操相关三、复盘对问题答案进行整理(查漏补缺)3.1、go语言简单了解3.2、项目中成就感最大或挑战最大的地方3.3、项目问题---协议头引入之后,包的大小增加了多少3.4、如何建立缓存3.5、cache…...

MySQL面试题-基础篇

目录 前言 数据库基础 1.什么是关系型数据库和非关系型数据库? 2.什么是 SQL? 3.MySQL 有什么优点? 4.MySQL 的基础架构? 存储引擎 1.MySQL 支持哪些存储引擎?默认使用哪个? 2.MySQL 存储引擎架构了解吗&…...

高通平台开发系列讲解(摄像头篇)QCM6490 上摄像头驱动开发

文章目录 一、Camera 硬件简介二、内核驱动移植2.1、确定设备树2.2、增加 camera 节点2.3、配置相关 GPIO沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 qcm6490 摄像头驱动开发。 一、Camera 硬件简介 摄像头连接器一般会包含 Mipi 信号、mclk、供电、re…...

MOV压敏电阻应用推荐及选型要点说明

ESD器件-MOV压敏电阻是一种非线性的电阻元器件产品,具有瞬态电压抑制功能,能够吸收电路中多余的电流,可保护一些敏感电路及其他电子产品设备的电路不受ESD、雷击瞬态浪涌电流的危害。对于它的一些应用范围,优恩小编在这里举例说明…...

Pytorch学习笔记(8):正则化(L1、L2、Dropout)与归一化(BN、LN、IN、GN)

目录 一、正则化之weight_decay(L2正则) 1.1 正则化及相关概念 1.2 正则化策略(L1、L2) (1)L1正则化 (2)L2正则化 1.3 L2正则项——weight_decay 二、正则化之Dropout 2.1 Dr…...

Azure OpenAI 官方指南 01|GPT-3 的原理揭秘与微调技巧

Azure OpenAI 服务在微软全球 Azure 平台正式发布后,迅速成为众多用户最关心的服务之一。 Azure OpenAI 服务允许用户通过 REST API 访问 OpenAI 的强大语言模型,包括 GPT-3、Codex 和 Embeddings 模型系列。本期,我们将为您揭秘 Azure Open…...

神垕古镇景区三方背后的博弈,争夺许昌第一家5A景区主导权

钧 瓷 内 参 第37期(总第368期) 2023年3月2日 神垕古镇景区景域,建业,孔家三方背后的博弈,争夺许昌第一家5A景区主导权 在博弈论(Game Theory)经济学中,“智猪博弈”是一个著名的…...

【C++】vector的模拟实现(SGI版本)

吃不了自律的苦,又接受不了平庸的罪。想让自己变好,但又想舒服些。 你啊你……要么就不要去想,想了又不去做,犹犹豫豫,徘徊不前,患得患失… 文章目录一、四种构造函数1.vector的框架和无参构造2.构造函数调…...

【9】SCI易中期刊推荐——工程技术-计算机:软件工程(中科院4区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…...

SOTA!目标检测开源框架YOLOv6 3.0版本来啦

近日,美团视觉智能部发布了 YOLOv6 3.0 版本,再一次将目标检测的综合性能推向新高。YOLOv6-L6 检测精度和速度超越 YOLOv7-E6E,取得当前实时目标检测榜单 SOTA。本文主要介绍了 YOLOv6 3.0 版本中引入的技术创新和优化,希望能为从…...

svn使用

一、SVN概述 1.1为什么需要SVN版本控制软件 1.2解决之道 SCM:软件配置管理 所谓的软件配置管理实际就是对软件源代码进行控制与管理 CVS:元老级产品 VSS:入门级产品 ClearCase:IBM公司提供技术支持,中坚级产品 1.…...

LeetCode 1487. Making File Names Unique【字符串,哈希表】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

Vivado 2023.1 与 Questasim 2024.1 协同仿真环境搭建全攻略

1. 环境准备:安装与版本确认 在开始搭建Vivado 2023.1与QuestaSim 2024.1的协同仿真环境前,首先要确保两个软件都已正确安装。我最近在搭建这个环境时发现,新版本对系统环境的要求比旧版本更严格。建议使用Windows 10 64位专业版或企业版&…...

基于ResearchClaw构建学术论文监控爬虫:配置驱动与模块化设计实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫“ResearchClaw”。这名字听起来就有点意思,直译过来是“研究之爪”,我第一眼看到这个标题,就感觉它应该是个能帮你从互联网上“抓取”研究资料的工具。果不其然&#x…...

Speechless:你的微博时光机,一键备份珍贵回忆

Speechless:你的微博时光机,一键备份珍贵回忆 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字时代,我们的社…...

如何快速解锁网易云音乐NCM格式:ncmdumpGUI完整免费解决方案指南

如何快速解锁网易云音乐NCM格式:ncmdumpGUI完整免费解决方案指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的困扰&…...

手把手教你用Matlab R2018a为TI C2000 DSP安装Embedded Coder支持包(含账户与版本避坑)

从零搭建Matlab与TI C2000 DSP的嵌入式开发环境:避坑指南与实战解析 当Matlab R2018a遇上TI C2000系列DSP处理器,工程师们便获得了一个从算法设计到硬件部署的完整解决方案。不同于传统的CCS开发模式,这种基于模型的设计(Model-Ba…...

AI应用框架Weam:微服务化架构与工作流编排实战

1. 项目概述:一个面向未来的AI应用框架 最近在AI应用开发领域,一个名为“Weam”的项目开始引起不少开发者的注意。它不是一个具体的AI模型,而是一个旨在构建、管理和部署AI应用的开源框架。简单来说,你可以把它想象成一个“AI应用…...

120MHz Cortex-M3+150DMIPS+ART加速器:STM32F205RBT6的性能参数解析

STM32F205RBT6:120MHz Cortex-M3工业互联MCU的技术解析在工业控制、电机驱动以及物联网网关等嵌入式应用中,微控制器往往需要同时兼顾高算力、实时响应与丰富的工业通信接口。STM32F205RBT6是意法半导体基于ARM Cortex-M3内核的高性能系列产品&#xff0…...

Python爬虫实战:手把手教你如何采集开源许可证 FAQ 文章归档!

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐ (中级) 🉐福利: 一次订阅后,专栏内的所有文章…...

面试官问KMP?别慌!用这道LeetCode 28题(实现strStr())现场给你讲明白

面试官问KMP?别慌!用这道LeetCode 28题(实现strStr())现场给你讲明白 当面试官在白板上写下"实现strStr()"这道题时,许多候选人的第一反应是暴力匹配——直到被追问"有没有更优解?"才意…...

AI智能体持久化记忆系统Plumb:混合检索与本地化部署实践

1. 项目概述:为AI智能体构建持久化记忆 如果你和我一样,深度使用过Claude、Cursor这类AI编程助手,或者正在探索OpenClaw这类更复杂的AI智能体框架,一个核心痛点会反复出现: 对话没有记忆 。每次开启一个新会话&#…...