亚洲国产成人av在线观看,777米奇色狠狠狠888影视,一二三四在线视频观看社区,小荡货奶真大水真多紧视频

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

1、 文檔目標(biāo)

在嵌入式開(kāi)發(fā)中,生成符合特定需求的二進(jìn)制文件(bin文件)是常見(jiàn)的任務(wù)之一。本文檔旨在解決以下問(wèn)題:如何在使用Keil MDK工具鏈時(shí),生成指定大小的bin文件,并對(duì)未使用的內(nèi)存區(qū)域進(jìn)行自定義數(shù)據(jù)填充。這一需求在某些特定場(chǎng)景下尤為重要,例如芯片固件升級(jí)、調(diào)試過(guò)程中區(qū)分有效代碼與空白區(qū)域等。

通過(guò)本文檔,讀者將掌握如何利用MDK的鏈接腳本(scatter file)和鏈接器選項(xiàng)實(shí)現(xiàn)上述功能,確保最終生成的bin文件滿足特定的大小要求,并對(duì)空白區(qū)域進(jìn)行可控的數(shù)據(jù)填充。



2、 問(wèn)題場(chǎng)景

在實(shí)際開(kāi)發(fā)中,客戶提出了以下需求:

1. 當(dāng)前工程編譯生成的bin文件大小為200KB,但目標(biāo)芯片的總存儲(chǔ)空間為512KB。

2. 客戶希望生成的bin文件能夠擴(kuò)展到512KB,以充分利用芯片的存儲(chǔ)空間。

3. 對(duì)于未使用的空白內(nèi)存區(qū)域,客戶希望能夠指定填充數(shù)據(jù)(例如0xFF),以便在后續(xù)分析或調(diào)試中區(qū)分有效代碼與未初始化區(qū)域。

此類需求常見(jiàn)于以下場(chǎng)景:

● 固件升級(jí):某些硬件平臺(tái)要求固件文件必須達(dá)到特定大小,否則無(wú)法正確加載。

● 調(diào)試與驗(yàn)證:通過(guò)填充特定數(shù)據(jù),可以更直觀地識(shí)別有效代碼范圍和未使用區(qū)域,便于問(wèn)題定位。

● 安全性考慮:未初始化的內(nèi)存可能包含隨機(jī)數(shù)據(jù),這些數(shù)據(jù)可能會(huì)與程序中的預(yù)期值發(fā)生沖突,導(dǎo)致運(yùn)行不穩(wěn)定。通過(guò)填充固定值(如0xFF),可以有效避免此類問(wèn)題。


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

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

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

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


4、解決方法

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



圖4-1

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





圖4-2


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


圖4-3


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


圖4-4