解答:
默認情況下, MPLAB C18 假設(shè)對象不超過存儲區(qū)邊界。 要安全使用大于256 字節(jié)的對象,需要執(zhí)行下列步驟:
1)必須使用 #pragma idata 或#pragma udata 偽指令將對象分配到恰當?shù)亩沃校?br />
#pragma udata buffer_scn
static char buffer[0x180];
#pragma udata
2)必須通過指針訪問對象:
char * buf_ptr = &buffer[0];
...
// examples of use
buf_ptr[5] = 10;
if (buf_ptr[275] > 127)
...
3)必須在鏈接描述文件中創(chuàng)建一個跨越多個存儲區(qū)的區(qū)域:
- 修改前的鏈接描述文件:
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
- 修改后的鏈接描述文件:
DATABANK NAME=big START=0x200 END=0x37F PROTECTED
DATABANK NAME=gpr3 START=0x380 END=0x3FF
4)必須通過在鏈接描述文件中添加SECTION偽指令,將對象所在的段(在第1步中創(chuàng)建)分配到新的區(qū)域(在第3 步中創(chuàng)建):
SECTION NAME=buffer_scn RAM=big
-
存儲器
+關(guān)注
關(guān)注
38文章
7649瀏覽量
167357 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7256瀏覽量
91836
發(fā)布評論請先 登錄
隨機訪問存儲器(RAM)和只讀存儲器(ROM)的區(qū)別

SQL存儲過程在.NET數(shù)據(jù)庫中的應(yīng)用
求助 數(shù)據(jù)存儲器 FLASH程序存儲器 FLASH數(shù)據(jù)存儲器的區(qū)別
為什么單片機定義的數(shù)組是存放在數(shù)據(jù)存儲器中
相變存儲器(PCM) :新的存儲器技術(shù)創(chuàng)建 新的存儲器使用模式
基于DDR3存儲器的數(shù)據(jù)處理應(yīng)用
如何在塊存儲器中寫入和讀取矩陣?
存儲器的編碼方法
利用XILINX解決方案快速創(chuàng)建存儲器接口設(shè)計
USB傳感器與存儲器在數(shù)據(jù)記錄中的應(yīng)用
存儲器分類及各自特點有哪些

評論