青青av-亚洲激情一区二区-欧洲色综合-看片网址国产福利av中文字幕-成人精品毛片-亚洲黄色免费观看-国产夫妻在线观看-69av电影-久久性片-中文字幕av影片-色综合久久久久无码专区

【ARM】MDK如何生成指定大小的bin文件,并指定空區(qū)域的填充數(shù)據(jù)

1、 文檔目標(biāo)

解決MDK如何生成指定大小的bin文件,并指定空區(qū)域的填充數(shù)據(jù)


2、 問題場景

客戶有這樣的需求,客戶本身的工程編譯生成bin文件后,bin文件大小為200k。整體芯片的內(nèi)存有512k。客戶想要最終生成的bin文件可以達(dá)到512k的一個(gè)情況,并且,對于空白內(nèi)存區(qū)域可以指定數(shù)據(jù)進(jìn)行填充用于區(qū)分。


3、軟硬件環(huán)境

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

2)、電腦環(huán)境:Windows 11

3)、外設(shè)硬件:無


4、解決方法

1)、首先,想要達(dá)成目的,需要對于散步(.sct)文件進(jìn)行自定義修改。想要修改散步(.sct)文件需要在options->Linker中取消勾選Use Memory Layout from Target Dialog選項(xiàng),然后,scatter file的Edit選項(xiàng)會使用,點(diǎn)擊就可以編輯散步(.sct)文件了。(如圖4-1)



圖4-1

2)、在散步(.sct)文件中使用Fixed關(guān)鍵字在接近內(nèi)存區(qū)域的地址位置創(chuàng)建一個(gè)根區(qū)域。創(chuàng)建之后,對于地址之前的全部空的內(nèi)存區(qū)域都會用“0x00”進(jìn)行填充。(如圖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)

}

//因?yàn)樾酒钠鋵?shí)地址是0x08000000,大小是0x00080000,所以在散步文件中在0x08080000創(chuàng)建一個(gè)根區(qū)域。

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)、如果想要對于空白區(qū)域的指定填充的數(shù)據(jù)的話,可以在option->Linker的Misc controls中輸入?yún)?shù)“-pad=num”來指定(如圖4-3)。建議指定0xff(注意:在某些情況下,未初始化的內(nèi)存可能會包含隨機(jī)數(shù)據(jù),這些數(shù)據(jù)可能會與程序中的預(yù)期數(shù)據(jù)發(fā)生沖突,導(dǎo)致程序運(yùn)行不穩(wěn)定或出現(xiàn)錯(cuò)誤。通過填充0xFF,可以避免這種情況的發(fā)生)



圖4-3


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


圖4-4

主站蜘蛛池模板: 鹰潭市| 元朗区| 馆陶县| 广元市| 浦北县| 西畴县| 临沂市| 建昌县| 阳山县| 怀远县| 山西省| 贞丰县| 铅山县| 秦皇岛市| 湘乡市| 井陉县| 怀远县| 广昌县| 会理县| 鹤峰县| 瑞昌市| 黎城县| 灵石县| 鄂托克前旗| 满洲里市| 青河县| 合作市| 威海市| 德江县| 扶风县| 连江县| 江安县| 平武县| 墨竹工卡县| 松溪县| 双峰县| 阜宁县| 松溪县| 苍山县| 桐城市| 临泉县|