麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

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

1、 文檔目標(biāo)

通過MDK的工程配置,將指定的變量存儲到指定的內(nèi)存地址上。


2、 問題場景

在項(xiàng)目工程的開發(fā)過程中,對于flash要進(jìn)行分區(qū),需要規(guī)劃出一個特定的內(nèi)存區(qū)域來存儲變量。


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)存劃分。點(diǎn)擊Edit...可以去編輯文件。(如圖4-2)



圖4-2


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



圖4-3


4)、然后,在源文件中,將利用宏定義去用SDRAM_AREA_ATTRIBUTES標(biāo)識符去標(biāo)識__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