日韩中文在线观看-欧美性综合-伊人视频在线观看-亚洲免费在线视频观看-国产偷人视频-人妻丰满熟妇岳av无码区hd-国产一级淫片a视频免费观看-国产精品交换-国产精品1区2区3区4区-美女日批视频在线观看-欧美日韩一区二区三区自拍

【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

主站蜘蛛池模板: 横山县| 枝江市| 延川县| 榆中县| 邯郸县| 鹤壁市| 和静县| 云浮市| 三都| 桂东县| 秦安县| 乌苏市| 和政县| 来凤县| 临泽县| 库尔勒市| 土默特右旗| 长汀县| 辛集市| 高碑店市| 舟曲县| 水城县| 广南县| 古丈县| 隆昌县| 和平区| 游戏| 遂平县| 呼伦贝尔市| 外汇| 大余县| 泉州市| 沅陵县| 黄大仙区| 广平县| 清镇市| 淳安县| 宁城县| 老河口市| 颍上县| 日照市|