关于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下的代码定位的更多相关文章

  1. KEIL C51之绝对地址定位

    单片机空间分配看*.M51文件,ARM,DSP空间分配看*.map文件 1.函数定位 假如要把C源文件 tools.c 中的函数 int BIN2HEX(int xx) { ... } 放在CODE ...

  2. C# 词法分析器(二)输入缓冲和代码定位

    系列导航 (一)词法分析介绍 (二)输入缓冲和代码定位 (三)正则表达式 (四)构造 NFA (五)转换 DFA (六)构造词法分析器 (七)总结 一.输入缓冲 在介绍如何进行词法分析之前,先来说说一 ...

  3. KEIL下分散加载文件的使用(zt)

    KEIL下分散加载文件的使用   对于分散加载的概念,在<ARM体系结构与编程>书中第11章有明确介绍. 分散加载文件(即scatter file 后缀为.scf)是一个文本文件,通过编写 ...

  4. ST在keil下开发时候文件options配置的一些小技巧

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述     这是之前ST芯片载keil下开发时候总结的一些代码文件options配置小笔记,虽然不是很复杂 ...

  5. 统计文件夹下java代码行数的小程序--主要是学习任务队列的思想

    首先感谢czbk的老师,录制的视频,让我们有这么好的学习资料.……—— 统计文件夹java文件的行数,首先想到的肯定是用递归的方法,因为文件夹下面可能包含文件夹,用递归的方法,代码容易写.(这和写简单 ...

  6. 让IE6下支持固定定位

    让IE下支持固定定位 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  7. 如何在sourcetree 下提交代码到gerrit上

    gerrit的审核机制决定了提交到远程到代码并非远程master分支,而是/refs/for/master 分支,所以需要解决怎么在sourcetree下提交代码到/refs/for/master分支 ...

  8. robotframework代码定位感悟

    robotframework代码定位感悟: 在做自动化的时候,有时候还是要考虑真实的操作,考虑人为反应,网络,页面渲染,服务器处理请求的过程及数据是否真实到达响应的位置, 不能一味的按照程序的速度 去 ...

  9. KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)

    源:KEIL MDK 查看代码量.RAM使用情况--RO-data.RW-data.ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-da ...

随机推荐

  1. 分分钟解决iOS开发中App启动广告的功能

    前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏 ...

  2. [转载]Access to the path '' is denied.解决方案

    原文地址:Access to the path '' is denied.解决方案作者:趴着墙等红杏 ccess to the path '路径' is denied.我在网上找了很多资料,最后终于解 ...

  3. Unity3D 商店下载的package存放位置

    如果你需要将下载下来的包保存下来,以后使用的话 那这篇文章,将对你有用. w7系统: C:\Users\Administrator\AppData\Roaming\Unity\Asset Store

  4. ViewPage实现幻灯广告墙

        ViewPage实现幻灯广告墙 功能简介 类似幻灯片功能 自动切换图片 触摸停止切换图片 自带标题功能和切换圆点 核心功能实现方法 1. 布局 <LinearLayout xmlns:a ...

  5. 深入理解自定义ListView

    深入理解自定义ListView ListView原理 他是一个系统的原生控件,用列表的形式来显示内容.如果内容过过有1000条左右,我们可以通过手势的上下滑动来查看数据.ListView也不是爆出OO ...

  6. 做了五套登录页,晒一下 自己比较满意的~ oh yeh~

  7. A transition animation compatible Library.

    Android5.0之后为我们提供了许多炫酷的界面过渡效果,其中共享元素过渡也是很有亮点的一个效果,但这个效果只能在Android5.0之后使用,那今天我们就来将共享元素过渡效果兼容到Android4 ...

  8. 中国天气网接口返回json格式分析及接口(XML、图片接口)说明

    实时天气: city        "北京"//城市 cityid      "101010100"//城市编码 temp        "17&qu ...

  9. 复制档案或目录 linux cp命令详解

    cp (复制档案或目录) [root@linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[root@linux ~]# cp [options ...

  10. Android ART简介

    一.    Android ART简介 Android DEX/ODEX/OAT文件