戚心空间 https://passport2.21ic.com/?14797 [收藏] [复制] [RSS]

日志

谈谈在keil下的代码定位

已有 887 次阅读2008-11-3 23:00 |个人分类:技术手记|系统分类:单片机

关于C语言,我们一般都知道对于RAM定位可以用关键字  _at_,但对于程序代码定位往往感到很迷惑,


其实keil中的程序代码定位功能极为强大


Menu: Options for Target 'Target' -> BL Locate
 
 Use Memory Layout from Target Dialog
     Code  Range: 0X01D3-0XFFFF
     Xdata Range: 0X0000--0XFFFF
 Code:
?C_C51STARTUP(0X1D3),?C_INITSEG,?PR?UART0_ISR?BOOTLOAD,?PR?MAIN?BOOTLOAD,?PR?BOOT_LOAD?BOOTLOAD,?PR?MAIN_START?IDENTIFIER(0X400)


以上就是程序定位的一个实例,可以按照该模式,对没个函数进行精确定位,可能有人对“,?PR?UART0_ISR?BOOTLOAD”之类的写法比较迷惑,其实只要我们仔细研读MAP文件就能发现其中的奥妙,下面就是定位后的 MAP 文件,有兴趣的朋友可以琢磨一下:



   * * * * * * *   C O D E   M E M O R Y   * * * * * * *
                           *** GAP ***
CODE    01D3H    008CH UNIT         ?C_C51STARTUP
CODE    025FH     0018H UNIT         ?C_INITSEG
CODE    0277H    0011H UNIT         ?PR?UART0_ISR?BOOTLOAD
CODE    0288H     00C5H UNIT         ?PR?MAIN?BOOTLOAD
CODE    034DH    00B3H UNIT         ?PR?BOOT_LOAD?BOOTLOAD
CODE    0400H     0782H UNIT         ?PR?MAIN_START?IDENTIFIER
           
Principle: ?PR?MAIN_START?IDENTIFIER(0X400)
BaseRle:   0X400(DWNLD_SECTOR)


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (1 个评论)

回复 xc214043 2008-11-10 19:04
好不容易写点东西,自己顶一个