五月色综合_娇妻卧室含辱迎接领导h_美女ppp_亚洲欧美aaa_天天在线综合_91午夜激情_裸体裸乳免费看_国产精品无码99re_日韩午夜视频在线观看_色爽 av_欧美大奶子视频_美女被爆操_国内久久_日本免费福利视频_苏语棠在线电视剧在线高清在线观看

【ARM】MDK如何將變量存儲到指定內(nèi)存地址

1、 文檔目標

在嵌入式系統(tǒng)開發(fā)中,通過MDK(Microcontroller Development Kit)進行工程配置,將指定的變量存儲到指定的內(nèi)存地址上是一項非常重要的技術(shù)。這項操作不僅能夠滿足特定硬件架構(gòu)的需求,還能優(yōu)化系統(tǒng)的性能和資源利用率。本文將詳細探討如何通過MDK的工程配置實現(xiàn)這一目標,并從多個角度分析其背后的原理、應(yīng)用場景以及注意事項。


2、 問題場景

在項目工程的開發(fā)過程中,通常需要對Flash、SRAM等存儲器進行分區(qū)規(guī)劃,以滿足不同的功能需求。例如:

● Bootloader與應(yīng)用程序分離:為了支持固件升級,通常需要將Bootloader代碼與應(yīng)用程序代碼分別存儲在不同的Flash區(qū)域。

● 關(guān)鍵數(shù)據(jù)存儲:某些關(guān)鍵變量(如校準參數(shù)、設(shè)備狀態(tài)等)需要存儲在特定的非易失性存儲區(qū)域,以便在系統(tǒng)斷電后仍能保留。

● 性能優(yōu)化:將頻繁訪問的變量放置在高速緩存或特定的RAM區(qū)域,可以顯著提升系統(tǒng)性能。

因此,如何通過MDK工具鏈將變量精確地映射到指定的內(nèi)存地址,成為嵌入式開發(fā)中的一個常見需求。


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

1)、軟件版本:MDK 5.38a

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

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


4、解決方法

1)、首先,需要在Options->Target中去規(guī)劃出一個內(nèi)存地址(如圖4-1),在Read/write Memory Areas中的RAM1中去設(shè)置內(nèi)存的起始地址和內(nèi)存的大小。并且勾選上前面的default。

圖4-1


2)、然后,切換在Linker欄中。取消勾選Use Memory Layout from Target Dialog,讓μVision不根據(jù)Target和Properties對話框中提供的內(nèi)存信息創(chuàng)建一個鏈接器分散文件。而由下面的Scatter Flies中去定義分散加載文件的內(nèi)存劃分。點擊Edit...可以去編輯文件。(如圖4-2)

圖4-2


3)、在打開的分散加載文件中,去定義剛才在Target中規(guī)劃的內(nèi)存地址。如圖4-3中的紅框處。將這個內(nèi)存段用sdram_area字段來標識。

圖4-3


4)、然后,在源文件中,將利用宏定義去用SDRAM_AREA_ATTRIBUTES標識符去標識__attribute__((section("sdram_area")))語句。在使用的時候,就可以按照下面代碼段中的方式去使用。

#define SDRAM_AREA_ATTRIBUTES __attribute__((section("sdram_area")))


int SDRAM_AREA_ATTRIBUTES test_num = 10;

char buf[20]SDRAM_AREA_ATTRIBUTES;


5)、定義好變量后,在源文件中調(diào)用了該變量后,可以在Map文件中看到定義的變量目前存儲在指定的地址上。(如圖4-5)

圖4-5


主站蜘蛛池模板: 黄大仙区| 临武县| 徐州市| 深泽县| 曲靖市| 阿鲁科尔沁旗| 涞源县| 桐柏县| 石屏县| 静海县| 连江县| 浦北县| 会宁县| 勃利县| 东莞市| 峨眉山市| 塘沽区| 北宁市| 漳平市| 治县。| 九龙坡区| 金昌市| 称多县| 南开区| 客服| 兴和县| 阳原县| 化德县| 新沂市| 安图县| 连云港市| 望江县| 宜兴市| 曲阳县| 永清县| 达尔| 汉沽区| 库尔勒市| 林西县| 高雄市| 雅安市|