在單片機(jī)編程使用中,會(huì)涉及到將某些函數(shù)定義到指定的code區(qū)。此時(shí)需要對(duì)工程文件進(jìn)行配置修改才可完成。本期針對(duì)單片機(jī)平臺(tái)做出說(shuō)明介紹
1、測(cè)試目標(biāo)
將函數(shù)testaddr定義到0x6000地址
2、測(cè)試環(huán)境
LKT4106加密芯片算法工程、KEIL-C51編譯軟件、
3、實(shí)現(xiàn)步驟
3.1使用KEIL軟件導(dǎo)入LKT4106算法工程(KEIL軟件基本操作不再敷述,如不清楚請(qǐng)自行百度)
3.2在App_Main.c文件中聲明測(cè)試函數(shù)testaddr:
extern void testaddr(u8 xdata *in,u8 xdata *out,u8 len);
3.3在App_fun.c文件中實(shí)現(xiàn)測(cè)試函數(shù)testaddr:
void testaddr(u8 xdata *in,u8 xdata *out,u8 len){
u8 i;
for(i=0;i < len;i++)
out[i]= in[i]+1;
}
3.4在App_Main.c文件中調(diào)用測(cè)試函數(shù)testaddr,此處省略
3.5編譯算法工程后,在\LKT4106_AppDemo\Out\Bin\路徑下找到LKT4106_AppDemo.M51,打開(kāi)該文件。
3.6找到* * C O D E M E M O R Y * *部分,尋找到testaddr編譯后存儲(chǔ)的地址,注意:根據(jù)編譯規(guī)則,testaddr函數(shù)會(huì)轉(zhuǎn)換為大寫(xiě)格式,并加上函數(shù)所在文件的名稱(chēng)。本例中,編譯后的默認(rèn)地址如圖1所示。
圖1.默認(rèn)編譯鏈接地址
3.7回到算法工程,選擇Project->Options for Target ...->BL51 Misc,點(diǎn)擊Edit按鈕調(diào)出lin文件,如圖2所示

圖2.打開(kāi)lin文件
3.8在LKT4106_App.lin文件中,按照下圖所示,將testaddr函數(shù)指定到程序區(qū)的目標(biāo)地址,本例將其由默認(rèn)的0x48B0地址更改到0x6000地址,如圖3所示。

圖3.更改目標(biāo)函數(shù)存儲(chǔ)的地址
3.9編譯算法工程,并重新打開(kāi)LKT4106_AppDemo.M51文件,查看testaddr函數(shù)所在地址,如圖4所示,該函數(shù)已經(jīng)更換到0x6000地址上。

圖4.重定義后目標(biāo)函數(shù)所在地址
至此,51單片機(jī)將函數(shù)定義到指定程序地址的方法已經(jīng)實(shí)現(xiàn)。下一篇將介紹如何將ARM中的函數(shù)地址進(jìn)行更改。