日志记录——单片机可执行文件合并

news2024/10/7 10:22:22

一:需求场景

现在有一片单片机,执行程序包括自定义boot和应用程序app, 在将打包好的固件给到生产是有以下问题,由于要通过jlink烧录boot,然后上电启动boot,通过boot烧录初始化程序,过程过于复杂,流程步骤比较多,于是产生了现在这个需求再给到生产前直接将boot可执行文件与app可执行文件合并成一个固件,直接通过jlink一次性烧录完成。

二:文件格式分析(合并bin文件还是hex文件)

        1.bin文件

bin文件是一种通用的二进制文件格式,它包含了机器代码和数据,可以直接被计算机执行。它的特点是小巧、快速,并且易于在不同的计算机架构之间移植。然而,由于它没有记录符号信息,所以调试起来相对困难。

binary file中只有代码+数据,没有地址信息,所以在使用Binary file烧录/刷写时,需要指定地址,这一过程一般在烧录/刷写在上位机工具上完成。

特点:程序大小即文件大小;

           不包含地址信息,烧录需要指定起始地址。

        2.hex文件

hex文件是Intel公司提出的按地址排列的数据信息格式,用于将编译后的程序代码存储在单片机等设备中。它的每一行都以冒号开头,表示记录的开始,然后是数据地址和数据内容。Hex文件的特点是易于阅读和编辑,因为它是以ASCII码的形式表示的。同时,它也包含了符号信息,方便调试和程序移植。

hex是用于文件格式是intel规定的标准,总体来说,hex是文本文件,经常在微控制器的固件开发中看到hex的身影,例如基于GD32法50硬件,使用MDK开发的话,该软件就可以生成hex文件;如下图所示;

Hex文件是一种特定的文本文件格式,用于存储机器代码和数据,特别是用于单片机等嵌入式系统。Hex文件通常以行为单位,每行包含一串字符,以冒号(:)开头,表示记录的开始。

Hex文件的结构通常包括以下部分:

  1. 地址域(Address Field):地址域指定了数据在内存中的地址。对于某些类型的Hex文件,地址域可能不包含实际地址,而是包含相对地址或空值。
  2. 长度域(Length Field):长度域指定了记录中数据的字节数。长度域占据两位数,表示数据的长度。
  3. 类型域(Type Field):类型域指定了记录的类型。Hex文件有多种类型,例如数据记录、结束记录、扩展段地址记录等。类型域占据两位数,表示记录的类型。
  4. 数据域(Data Field):数据域包含了记录中的实际数据。数据域的长度可变,取决于记录的类型和长度域的值。数据域中的每个字节都用两个十六进制数字表示。
  5. 校验和域(Checksum Field):校验和域用于检查记录的完整性。校验和域占据一个字节,用于计算记录中所有字节的总和,取反后得到校验和值。

Hex文件的每一行都遵循上述结构,从冒号开始,然后是地址、长度、类型、数据和校验和,以回车换行符结束。这种结构使得Hex文件易于阅读、编辑和调试,同时也方便将程序代码烧写到单片机等设备中。

直接将hex文件烧入MCUFlash还是不行的,除非烧录软件可以把hex文件转成bin文件,然后再进行烧录;

三:执行程序文件格式选择

最终还是选择了bin文件格式,bin文件格式更直接,修改文件即修改flash内容。

这boot设置大小为0x4000(16k)

1.工具图标

2.使用步骤

1)运行程序选中对应boot文件

2)选择对应app应用程序

3)选择生成路径

4)电机合成按钮,出现合成100%,表示在指定路径下可执行文件生成成功。

四:工具开源下载链接

已绑定文章,文章开头下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IT业务的卓越服务

要想实现卓越服务,就必须对当前的服务成熟度进行全面分析。然而,这种评估可能会令人望而生畏,尤其是在现有评估框架不明确的情况下。这些方法要么考虑实践的成熟度,要么考虑技术的成熟度,为团队提供了狭隘的视野。 为…

移动机器人激光SLAM导航(三):Hector SLAM 篇

参考引用 Hector_Mapping ROS-Wiki从零开始搭二维激光SLAM机器人工匠阿杰wpr_simulation 移动机器人激光SLAM导航(文章链接汇总) 1. 基于滤波器的 SLAM 问题 1.1 什么是 SLAM 什么是SLAM SLAM 就是为了构建地图用的,这个地图可以保存下来&…

【python接口自动化】- DDT数据驱动测试

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

第一讲:入门python

第一讲:入门python1.安装Python1.下载2.安装3.运行4.代码 2.安装VS code 第一讲:入门python 本讲任务: 安装python安装VS code Python初学者通常首次面临的主要问题是需要在计算机上安装Python和一个适用的代码编辑器(比如VSco…

龙芯--自主架构先驱者

🛑 这是ren_dong的第23篇原创 1、概述 自主可控最高的 MIPS 架构 CPU 龙芯是我国最早研制的高性能通用处理器系列,拥有 MIPS 指令的永久授权,并拓展出了自己的指令集loong ISA。龙芯采用自主 Loong ISA 指令系统,兼容 MIPS 指令&a…

OpenCV学习记录——形态学处理

文章目录 前言一、腐蚀和膨胀二、高级形态学运算三、具体应用代码 前言 形态学是图像处理中最常用的技术之一,它主要用于从图像中提取有意义的形状信息,例如边界和连通区域,以便后续的识别工作能够捕捉到目标对象最重要的形状特征。此外&…

为什么飞凌嵌入式的FET527N-C核心板更值得期待?

在高度数字化的智能时代,嵌入式系统在各个领域都发挥着重要作用,因此在项目的选型与开发中选择与需求更为匹配的核心板主控至关重要。飞凌嵌入式最新发布的FET527N-C核心板是一款值得特别关注的产品,具有许多令人瞩目的优势。下面小编将从四个…

arcgis自定义dem高程实现地形抬高 - 操作矢量,转tin、adf(tif),cesiumlab切高程服务

这次记录分享一下arcgis自定义高程全过程 /(ㄒoㄒ)/~~ 我的场景:前端实现地面抬高效果 自定义高程实现地形抬高 一、数据处理 - arcgis操作矢量1、准备工作(可选)2、绘制外围矢量(可选)3、操作矢量数据 二、创建tin - …

第8章 磁盘管理

第8章 磁盘管理 8.1 标准磁盘管理 8.1.1 两种分区格式 MBR(Master Boot Record,主引导分区),支持 4 个主分区或者 3 个主分区 1 个扩展分区,分区的空间最大支持 2.2 TB。 GPT(GUID Partition Table&…

IS-ISv6配置

正文共:1024 字 12 图,预估阅读时间:1 分钟 上篇文章中(OSPFv6配置),我们介绍了OSPFv3的基本配置方式,文中提到,OSPFv3是基于链路运行的,和IS-IS协议比较像。那既然和IS-…

中二少年工具箱(PC端)简介

同学们可以私信我加入学习群! 正文开始 简介一、功能模块1.node版本管理工具 总结 简介 中二少年开发的中二少年工具箱,相信博主,功能不孬。 辅助自己开发工作,帮助新人快速入门,提供交互式文档辅助学习……如果还不…

⑩电子产品拆解分析-家用无线遥控开关433Mhz

⑩电子产品拆解分析-家用无线遥控开关433Mhz 一、功能介绍二、电路分析以及器件作用1、433发射控制端2、433接收应答端三、Get到的点一、功能介绍 ①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;二、电路分析以及器件作用 1、43…

Spring Bean 定义常见错误

Spring 的核心是围绕 Bean 进行的。不管是 Spring Boot 还是 Spring Cloud,只要名称中带有 Spring 关键字的技术都脱离不了 Bean,而要使用一个 Bean 少不了要先定义出来,所以定义一个 Bean 就变得格外重要了。 当然,对于这么重要…

Node.js 目录穿越漏洞(CVE-2017-14849)

文章目录 Node.js 目录穿越漏洞(CVE-2017-14849)1. 漏洞原理2. 漏洞复现3. 漏洞验证4. 漏洞分析 Node.js 目录穿越漏洞(CVE-2017-14849) 1. 漏洞原理 原因是 Node.js 8.5.0 对目录进行normalize操作时出现了逻辑错误&#xff0c…

01- k8s基础网络知识 之 underlay与overlay网络

前言: 我们在学习k8s网络之前,必须要了解k8s网络相关的一些基础知识,比如什么是underlay网络、overlay网络等,只有把基础知识掌握之后,后续学习k8s网络的时候,一些知识点就不会再云里雾里了。 1 underlay与…

架构整洁之道-组件构建原则

5 组件构建原则 大型软件系统的架构过程与建筑物修建很类似,都是由一个个小组件组成的。所以,如果说SOLID原则是用于指导我们如何将砖块砌成墙与房间的,那么组件构建原则就是用来指导我们如何将这些房间组合成房子的。 5.1 组件 组件是软件的…

IntelliJ创建一个springboot工程

安装jdk mac教程 windows教程 安装maven mac教程 windows教程 建议: 在本地磁盘新建一个文件夹叫maven,然后把下载的maven安装到这里。在后续的IntelliJ操作中,配置maven的settings.xml和repository地址为这个目录下的地址。 创建sprin…

stack和queue及优先级队列和适配器(包括deque)的介绍

stack stack的介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组…

【INTEL(ALTERA)】为什么 F-tile Serial Lite IV FPGA IP 设计示例会失败

说明 由于Intel Agilex 7 FPGA I 系列收发器-SoC 开发套件的时钟控制器 GUI 存在问题,当您需要配置芯片 Si5332 的 OUT1 时钟频率时,您可能会发现 F-tile Serial Lite IV 英特尔 FPGA IP设计示例失败。这是因为此 Si5332 GUI 存在问题;无法准确配置 OUT…

【算法】约数之和(数论)

题目 给定 n 个正整数 ai,请你输出这些数的乘积的约数之和,答案对 1097 取模。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一个整数 ai。 输出格式 输出一个整数,表示所给正整数的乘积的约数之和,答案需…