谈在keil下的代码定位
来源:互联网 发布:按层次输出二叉树算法 编辑:程序博客网 时间:2024/05/04 01:01
关于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)
第二种方法
在工程的Option For Target - BL51 Locate页的CODE编辑框内填入“?PR?
函数名?文件名(地址)”,多个定位用“,”隔开。
例如:?PR?_SetLedFlash?MAIN(0x1000),?PR?ClrLedFlash?MAIN(0x1100)
把函数void SetLedFlash(U8 m_data);和void ClrLedFlash(void);分别定位在
0x1000和0x1100处。
定位的时候要注意留够足够空间。另外,一般只有系统需要做在线更新,或者是汇编与C混
合,或者同一个单片机里有多个工程,通常是不需要做函数定位的,这样做会降低编译器
其实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)
第二种方法
在工程的Option For Target - BL51 Locate页的CODE编辑框内填入“?PR?
函数名?文件名(地址)”,多个定位用“,”隔开。
例如:?PR?_SetLedFlash?MAIN(0x1000),?PR?ClrLedFlash?MAIN(0x1100)
把函数void SetLedFlash(U8 m_data);和void ClrLedFlash(void);分别定位在
0x1000和0x1100处。
定位的时候要注意留够足够空间。另外,一般只有系统需要做在线更新,或者是汇编与C混
合,或者同一个单片机里有多个工程,通常是不需要做函数定位的,这样做会降低编译器
- 谈在keil下的代码定位
- keil下代码的定位1
- keil下代码的定位2
- keil 代码定位
- Keil uVision4在win7下的破解
- FRDM-KL25Z在Keil下的调试
- stm32f10x在keil环境下的配置
- STM32在Keil MDK5环境下RAM上代码调试
- Keil 4/C51与Keil 5的融合安装,51系列可在keil 5下编译安装方式
- STM32F1在KEIL下的FLASH的烧写算法
- 在KEIL MDK下的uCOS-II的FL2440移植
- 在KEIL MDK下的uCOS-II的FL2440移植
- 直接在Keil下仿真的T9拼音输入法(完整版)
- 关于FRDM-K64F在Keil下的调试
- 如何在KEIL下制作出自己的库文件
- fixed 定位在 IE6 下的实现
- keil下C51启动代码详解
- keil下C51启动代码详解
- Xms Xmx PermSize MaxPermSize小知识
- keil 代码定位
- 来自 Google 的 R 语言编码风格指南
- android Messenger 跨进程通信
- PHP中的__autoload
- 谈在keil下的代码定位
- ArcGIS10开发:ArcGIS version not specified. You must call Runti...
- android 实现listview动态加载列表项
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- 网页编码gbk与utf-8的区别与联系
- Clucene实现中文分词搜索
- 浮点数的相等比较
- hitTest的作用与用法
- 一生都学不完的计谋 .