【ARM】MDK如何生成指定大小的bin文件,并指定空区域的填充数据

1、 文档目标

解决MDK如何生成指定大小的bin文件,并指定空区域的填充数据

2、 问题场景

客户有这样的需求,客户本身的工程编译生成bin文件后,bin文件大小为200k。整体芯片的内存有512k。客户想要最终生成的bin文件可以达到512k的一个情况,并且,对于空白内存区域可以指定数据进行填充用于区分。

3、软硬件环境

1)、软件版本:Keil MDK 5.38a

2)、电脑环境:Windows 11

3)、外设硬件:无

4、解决方法

1)、首先,想要达成目的,需要对于散步(.sct)文件进行自定义修改。想要修改散步(.sct)文件需要在options->Linker中取消勾选Use Memory Layout from Target Dialog选项,然后,scatter file的Edit选项会使用,点击就可以编辑散步(.sct)文件了。(如图4-1)

图4-1

2)、在散步(.sct)文件中使用Fixed关键字在接近内存区域的地址位置创建一个根区域。创建之后,对于地址之前的全部空的内存区域都会用"0x00"进行填充。(如图4-1)

复制代码
LR_IROM1 0x08000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
//因为芯片的其实地址是0x08000000,大小是0x00080000,所以在散步文件中在0x08080000创建一个根区域。
  ER_INIT 0x0807FFFF FIXED ; load address and execution address of this
                           ; execution region are fixed at 0x80000
    {
        init.o(+RO)        ; all RO sections from init.o
    }
  
}

图4-2

3)、如果想要对于空白区域的指定填充的数据的话,可以在option->Linker的Misc controls中输入参数"-pad=num"来指定(如图4-3)。建议指定0xff(注意:在某些情况下,未初始化的内存可能会包含随机数据,这些数据可能会与程序中的预期数据发生冲突,导致程序运行不稳定或出现错误。通过填充0xFF,可以避免这种情况的发生)

图4-3

4)然后,去生成bin文件。文件的大小就变成的512K。(如图4-4)

图4-4


​ 版权声明:本文为亿道电子技术有限公司原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关推荐
FreakStudio9 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
zd84510150014 天前
RS485 总线详解
单片机·嵌入式硬件
牛根生同志14 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
goldenrolan14 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展14 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
AndyHeee14 天前
【SVC、PendSV(系统异常) 与 外设 IRQ 、NVIC笔记】
arm开发
集芯微电科技有限公司14 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑14 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习