使用Keil mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认编译链接时,将会把这个函数从整个程序总删除掉,以节省ROM.

比如,你在ROM的0x00010000处定义了一个函数void led(void),然后使用函数指针来调用它:

void (*func)(); //函数指针

func= (void (*)()) (0x00010000);//定位到指定的入口地址0x00010000

(*func)();//调用led()函数

原本是想通过函数指针的方式调用led()这个函数,结果因为没有显示调用过程在编译优化时被删掉。

能否让编译器不自动优化t这个函数?

当然有,就是使用链接器命令:--keep=section_id 此选项指定删除未使用节时不能删除的输入节。

其中 section_id 是以下项之一:
symbol 指定在删除未使用节时保留定义 symbol 的输入节。 如果 symbol 存在多个定义,则 armlink 将生成一则错误消息。
           例如,您可能使用 --keep=int_handler。若要保留定义以 handler 结尾的符号的所有节,请使用--keep=*handler。
object(section)指定在删除未使用节时保留 object 中的 section。

例如,若要保留vectors.o 对象的 vect 节,请使用: -- keep=vectors.o(vect)

若要保留 vectors.o 对象中节名称的前三个字母是 vec 的所有节,请使用:--keep=vectors.o(vec*)

Keil MDK中编译连接选项--keep的用法相关推荐

  1. 在Keil MDK中创建STM32F4系列的工程模板(标准外设库)

    在Keil MDK中创建STM32F4系列的工程模板(标准外设库) 一.前往ST官网下载标准外设库 二.根据个人风格创建文件夹目录 三.创建MDK工程,创建分组 四.添加系统启动必要源文件 五.添加头 ...

  2. keil MDK中如何生成*.bin格式的文件

    在Realview MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件.虽然这两个格式的文件非常有利于ULINK2仿真器的下载和调试,但是ADS的用户更习惯 ...

  3. KEIL MDK中的RO、RW和ZI

    KEIL MDK中的RO.RW和ZI DATA理解及KEIL中ROM和RAM使用大小计算 (2013-12-25 09:33:06) 转载▼ 标签: it 分类: 嵌入式相关 本文来源与网络 http ...

  4. 【Keil MDK中工程报错Browse information of one of more files is not available解决方法】

    [Keil MDK中工程报错Browse information of one of more files is not available解决方法] 今天在进行工程编写时,出现了这个错误Browse ...

  5. keil(MDK)中出现error: #513:

    keil(MDK)中出现error: #513: a value of type "int" cannot be assigned to an entity of type &qu ...

  6. 关于网络连接中WiFi连接选项突然消失的解决方法(Win10)

    电脑开机之后找不到WiFi,也就是网络连接中WiFi连接选项突然消失的现象我已经遇到了好几次,甚至有一次上网上到一半突然就断了,发现WiFi连接选项消失了.这种情况重启一下电脑通常就能恢复,但问题其实 ...

  7. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  8. 解决KEIL MDK中JLINK烧录代码时提示the connected jlink is defective问题

    1.问题分析 网上有许多分析这个问题的博客,可以去参考 2.解决方法 a.在segger.com的官网下载了6.5版本的jlink驱动文件,安装后C:/program file(x86)/Segger ...

  9. 在Keil MDK中无法使用gmtime函数进行时间戳转换

    硬件平台STM32,软件平台Keil MDK 5.18 由于项目中需要用到UNIX时间戳和日历的来回转换,于是想到C库函数<time.h>里面有现成的函数可以使用. 于直接使用mktime ...

最新文章

  1. JZOJ 5443. 【NOIP2017提高A组冲刺11.2】字典序
  2. Swoole 源码分析——内存模块之内存池
  3. 努力≠上进!那些“熬夜”持续精进的人有多可怕!
  4. Windows平台RTMP/RTSP播放器如何实现实时音量调节
  5. JDK与Java SE/EE/ME的区别
  6. 酒桌上说话时的七大注意事项
  7. android-goldfish-3.4内核源码下载与编译
  8. ubuntu下安装gcc
  9. 网页html跑马灯,web实现跑马灯
  10. win10显卡驱动怎么装_既然大家都说装了win10,就不用鲁大师监测显卡温度,为什么呢?...
  11. Word文档图标变成空白如何恢复
  12. Emacs 配置 latex
  13. ISDA 国际掉期交易协会
  14. 一箭穿心程序编码c语言,一个简单的一箭穿心程序
  15. XTUOJ-1379 折纸-贰
  16. 解决error:torch has an invalid wheel,.dist -info directory not fount
  17. 鱼眼图像的校正(Python实现)
  18. 时空召唤的服务器维护,时空召唤3月2日更新维护内容分享
  19. 微信小程序学习——wx.for的使用
  20. 【牛客网-华为机试题目录】持续更新中

热门文章

  1. 盘点2017企业服务领域最受关注的100家厂商(BPM平台篇)
  2. 计算机408考试题库百度云,2017年计算机408考研真题.pdf
  3. 采购订单中带账户分配的总账科目确定(M和E的区别)
  4. 【数据治理】数据安全-数据脱敏方案
  5. android mkdir失败_在/ sdcard中创建目录失败
  6. Neo4j3.5学习笔记——Traversal遍历之黑客帝国
  7. 一层神经网络实现鸢尾花数据集分类
  8. SQL计算日环比、周同比
  9. Android 关于display的几个问题
  10. UI设计行业领域知识体系