单片机如何分散加载文件

news2024/11/23 16:31:24

本篇文章将通过实际操作介绍如何实现分散加载文件的方法。开发工具为:mdk;开发板:野火stm32f407

一、建立工程

通过实现简单的加法计算的软件算法,来了解分散加载image 的方法。

建立工程,创建文件夹以及相应的文件,设置路径;

c09394d530c7c44878582f2f6a1089ec.png

对应的c文件如下:

4802d7e316532de262785b45535c03bf.png

对应的h文件如下:

b44737a8a1d9e221c1a2801dc8e12a85.png

主函数,测试函数如下:

7e522b9df52f1039bc0d36ab42d585b2.png

编译之后,查看map文件信息,如下:

238fa6e1340404d55a45e67201859842.png

查看工程输出是否正确,结果正确,如下:

d4df290a83ab9b495d14cd8adf0b2341.png

二、设置分散加载的方法

①打开工程的选项页面,设置去掉 Linker 下默认的选项,使用分散加载文

件来分配工程的内存位置。分散加载文件的文件后缀名为sct

ed30d65d4b5c4951c5433b0662131b93.png

修改前内容如下:

4bc6aaabea2b63b010058016e67743d2.png

修改分散文件,因为单片机的rom大小这里是1M,分成了2部分,每部分大小为0x0007FFFF,区域大小需要根据实际进行配置。在默认的分散加载文件中做如下修改,将第一个加载区域LR_IROM1的大小改为0x0007FFFF,将其第一个执行区ER_IROM1大小也改为0x0007FFFF,同时新建一个 LR_MY_ADD 的加载区,其起始地址紧接着 LR_IROM1,大小也是 0x0007FFFF,在其中定义一个执行区 ADD_TEST起始地址与 LR_MY_ADD 一致,并将 myadd.o 所有的代码都放置到该区域。

490c745c4b4a025491cc02e3d0c07434.png

③编译,查看map信息

ca4e01abfa5b833a3e51cefba7f13b94.png

在线仿真,函数地址如下,和map中的信息相匹配

08b73019f8f07584da101041a8ca801d.png

三、总结

    编译器在生成可执行文件时,先将每个.c文件编译成.o文件(此过程叫编译),然后将很多个.o文件链接成可执行文件(此过程叫链接)。在链接的过程中,通过链接文件来指定链接时的行为。通过修改分散加载文件sct,可以将不同的文件放到指定的位置上。

欢迎关注公众号:嵌入式学习与实践

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

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

相关文章

设计师都会用哪些在线设计工具?

在效率为王的时代,在线设计是设计的未来,为设计师提供了更节省时间、精力和成本的解决方案。在线设计工具可以通过打开浏览器使用,大多数操作界面比传统设计工具更简单,入门门槛很低。此外,它还为云存储提供了便利&…

通俗讲解-动量梯度下降法原理与代码实例

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录 一.动量梯度下降法介绍 1.1 动量梯度下降法简介与思想 1.2 动量梯度下降法的算法流程 二.动量梯度下降法代码实例 2.1 动量梯度下降法实例代码 一.动量梯度下降法介绍…

7-3 查询水果价格

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00…

mysql-事务特性以及隔离机制

一.ACID 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。 1.逻辑架构和存储引擎 如上图所示,MySQL服务器逻辑架构从上往下可以分…

浪潮信息赵帅:多元算力时代 开源开放的OpenBMC成为服务器管理优先解

“多元算力时代下,大规模的异构服务器设备面临多种处理器架构、多种设备协议、不同管理芯片兼容的系统化设计挑战,管理固件也迎来新的变革。开源开放的OpenBMC,以创新的分层解耦软件架构,兼容不同处理器架构、算力平台和管理芯片&…

Python爬虫——scrapy_工作原理

引擎向spiders要url引擎把将要爬取的url给调度器调度器会将url生成的请求对象放入到指定的队列中从队列中出队一个请求引擎将请求交给下载器进行处理下载器发送请求获取互联网数据下载器将数据返回给引擎引擎将数据再次给到spidersspiders通过xpath解析该数据,得到数…

springboot集成ES

1.引入pom依赖2.application 配置3.JavaBean配置以及ES相关注解 3.1 Student实体类3.2 Teacher实体类3.3 Headmaster 实体类4. 启动类配置5.elasticsearchRestTemplate 新增 5.1 createIndex && putMapping 创建索引及映射 5.1.1 Controller层5.1.2 service层5.1.3 ser…

飞天使-jenkins进行远程linux机器修改某个文件的思路

文章目录 jenkins配置的方式jenkins中执行shell的思路 jenkins配置的方式 jenkins中执行shell的思路 下面的脚本别照抄,只是一个思路 ipall"$ips"# 将文本参数按行输出为变量 while IFS read -r line; doecho "$line" if [[ ! -z $line ]] &…

linux——mysql的高可用MHA

目录 一、概述 一、概念 二、组成 三、特点 四、工作原理 二、案例 三、构建MHA 一、基础环境 二、ssh免密登录 三、主从复制 master slave1 四、MHA安装 一、环境 二、安装node 三、安装manager 一、概述 一、概念 MHA(MasterHigh Availability&a…

Spring Boot 知识集锦之actuator监控端点详解

文章目录 0.前言1.参考文档2.基础介绍默认支持的端点 3.步骤3.1. 引入依赖3.2. 配置文件3.3. 核心源码 4.示例项目5.总结 0.前言 背景: 一直零散的使用着Spring Boot 的各种组件和特性,从未系统性的学习和总结,本次借着这个机会搞一波。共同学…

10 - 把间隔的几个commit整理成1个

查看所有文章链接:(更新中)GIT常用场景- 目录 文章目录 把间隔的几个commit整理成1个 把间隔的几个commit整理成1个

Elisp之获取PC电池状态(二十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

BTC转移案例分析

比特币 / 地址 / 3LyBT9iuka23wgRnYS88QggNw8gC15ntTC — Blockchair 涉及金额:10BTC 案例背景:存入了一定数量的BTC,前几天发现钱包空了,里面预存的BTC丢失了 解决方案:跟踪交易记录,交易所协助查询&am…

xarray 简易体会与实现

1 基础原理 xarray1主要由 xarray 结点组成,xarray 结点主要由槽位(即指针)、父节点指针等组成。xarray 根据整型索引组织 xarray 结点实现对目标值的高效存、查、删操作。 此文以 存查删等流程对应源码2具体实例 —— xarray 结点槽位数 …

Databend 开源周报第 106 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 数据脱敏 Data…

spring Initializr快速创建项目

spring Initializr快速创建项目 创建创建完成后 创建 勾选依赖 创建完成后

【2022吴恩达机器学习课程视频翻译笔记】3.3代价函数公式

忙了一阵子,回来继续更新 3.3 代价函数公式 In order to implement linear regression. The first key step is first to define something called a cost function. This is something we’ll build in this video, and the cost function will tell us how well…

SMART PLC 64位双精度浮点数转32位单精度浮点数(Double_TO_Float)

有关博途PLC对位、字节、字元素的拆分和合并,请参看下面文章链接: 博途PLC 位/字/字节 Bit/ Word/Byte拆分与合并_博途的bit_RXXW_Dor的博客-CSDN博客有时候我们需要将分散分布的开关量信号组合为一个整体比如一个字节再完成发送,或者一些报警联锁控制,组合为一个字方便触…

原型模式 Prototype Pattern 《游戏编程模式》学习笔记

原型的定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 举个例子 假设我现在要做一款游戏,这个游戏里有许多不同种类的怪物,鬼魂,恶魔和巫师。这些怪物通过“生产者”进入这片区域,每种敌人…

VR/AR眼镜方案,MTK联发科平台智能眼镜安卓主板设计方案

随着人工智能在不同领域的逐渐深入,人们对一款产品的需求不再局限于某种单一的功能或单一场景,尤其是在工业医疗等专业领域,加快数字化转型才能实现产业的升级。 AR智能眼镜,是一个可以让现场作业更智能的综合管控设备。采用移动…