嵌入式編程(一):51單片機如何將函數 定義到指定程序地址

在單片機編程使用中,會涉及到將某些函數定義到指定的code區。此時須要對工程文件進行配置修改纔可完成。本期針對單片機平臺作出說明介紹算法

一、測試目標編程

將函數testaddr定義到0x6000地址函數

二、測試環境測試

LKT4106加密芯片算法工程、KEIL-C51編譯軟件、加密

三、實現步驟spa

3.1 使用KEIL軟件導入LKT4106算法工程(KEIL軟件基本操做再也不敷述,如不清楚請自行百度)code

3.2 在App_Main.c文件中聲明測試函數testaddr:blog

extern void testaddr(u8 xdata *in,u8 xdata *out,u8 len);get

3.3 在App_fun.c文件中實現測試函數testaddr:it

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文件中調用測試函數testaddr,此處省略

3.5 編譯算法工程後,在\LKT4106_AppDemo\Out\Bin\路徑下找到 LKT4106_AppDemo.M51,打開該文件。

3.6 找到* * C O D E   M E M O R Y * * 部分,尋找到testaddr編譯後存儲的地址,注意:根據編譯規則,testaddr函數會轉換爲大寫格式,並加上函數所在文件的名稱。本例中,編譯後的默認地址如圖1所示。

圖1. 默認編譯連接地址

3.7 回到算法工程,選擇Project->Options for Target ...->BL51 Misc,點擊Edit按鈕調出lin文件,如圖2所示

圖2. 打開lin文件

3.8 在LKT4106_App.lin文件中,按照下圖所示,將testaddr函數指定到程序區的目標地址,本例將其由默認的0x48B0地址更改到0x6000地址,如圖3所示。

圖3. 更改目標函數存儲的地址

3.9 編譯算法工程,並從新打開LKT4106_AppDemo.M51文件,查看testaddr函數所在地址,如圖4所示,該函數已經更換到0x6000地址上。

圖4. 重定義後目標函數所在地址

至此,51單片機將函數定義到指定程序地址的方法已經實現。下一篇將介紹如何將ARM中的函數地址進行更改。

相關文章
相關標籤/搜索