怎样将1个子程序段定位在1个固定的地址位置

来源:本站
导读:目前正在解读《怎样将1个子程序段定位在1个固定的地址位置》的相关信息,《怎样将1个子程序段定位在1个固定的地址位置》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《怎样将1个子程序段定位在1个固定的地址位置》的详细说明。
简介:本文主要介绍了怎样将1个子程序段定位在1个固定的地址位置。

1、函数定位:

假如要把C源文件 tools.c 中的函数

int BIN2HEX(int xx)

{

...

}

放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51文件,在

* * *C O D EM E M O R Y* * *

行下找出要定位的函数的名称,应该形如:

CODExxxxHxxxxHUNIT?PR?_BCD2HEX?TOOLS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填写如下内容:

?PR?_BCD2HEX?TOOLS(0x1000)

再次Build,在M51中会发现该函数已放在CODE MEMORY的0x1000处了

2、赋初值的变量定位:

要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,则如下操作:

在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变

量):

char code myVer = {"COPYRIGHT 2001-11"};

然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在

* * *C O D EM E M O R Y* * *

下可找到:

CODExxxxHxxxxHUNIT?CO?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Code

中填入:

?CO?INITVARS(0x200)

再次编译即可。

相应地,如为xdata变量,则InitVars.c中写:

char xdata myVer = {"COPYRIGHT 2001-11"};

然后将该文件加入工程,编译,打开M51文件,在

* * *X D A T AM E M O R Y* * *

下可找到:

XDATAxxxxHxxxxHUNIT?XD?INITVARS

然后在:

Project->Options for Target ...->BL51 Locate:Xdata

中填入:

?XD?INITVARS(0x200)

再次编译即可。相应地,若定义的是data/idata等变量,则相应处理即可。

3、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列

提醒:《怎样将1个子程序段定位在1个固定的地址位置》最后刷新时间 2024-03-14 01:02:56,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《怎样将1个子程序段定位在1个固定的地址位置》该内容的真实性请自行鉴别。