当前位置:首页 > 单片机 > 单片机
[导读]使用mdk编程,假如有一个有用的函数你定义了但是没有显式的调用,mdk在默认方式下,将会把这个函数从整个程序总删除掉,以节省ROM.比如,你在ROM的0x00002000处定位了一个函数,假设为void test(void),然后使用函数指针来调

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


比如,你在ROM的0x00002000处定位了一个函数,假设为void test(void),然后使用函数指针来调用它:


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

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

(*UserProgram)();               //调用test()函数


这样做的本意是调用test()函数,但编译器并不知情,它仍会按照默认的指令将test函数给整个优化掉,因为它觉得test()函数根本没有被调用,这个时候,虽然(*UserProgram)();仍会执行,但内容与初衷已经大相径庭.


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


当然有,就是使用链接器命令:--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*)



由于我的程序test()函数是单独放在一个文件里(entry.c)的,所以我在linker标签栏下的Misc controls编辑框中输入--keep=entry.o


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

摘要:大型火力发电厂一次调频性能的优良对维持电网稳定运行具有关键作用。目前,大型火力发电厂一次调频采用的是频率差函数发生器开环控制策略,这种控制策略方式构造简单、反应速度快,但是无法准确控制系统的输出量,不能达到期望值。...

关键字: 一次调频 闭环控制 优化

摘要:传统的靶材加工需要使用车床和抛光机,加工效率不高,而靶材生产剩余粉尘遗留喷涂仓中,会对喷涂质量产生很大的影响,只采用负压方式吸尘无法满足仓内压力要求,需要研发新型的靶材加工装置和密度监控系统。外圆车抛一体装置抛光机...

关键字: 外圆车抛一体装置 密度监控 优化

摘要:大型火力发电厂优良的一次调频性能对维持电网稳定运行具有关键作用。为规范各火力发电厂一次调频操作,提高其一次调频能力,每月电网都会针对各台机组的一次调频性能指标进行考核,具体包括前25s出力响应指数、前30s出力响应...

关键字: 火力发电厂 一次调频 优化

摘要:对西北区域"两个细则"修订版及其补充规则中的AGC性能指标进行了系统性介绍说明,基于具体AGC考核火电机组,针对性提出了AGC性能提升方案及措施,提升了并网发电机组运行管理水平,调动了发电企业参...

关键字: 西北区域 AGC 优化

之后新建新的工程,添加.a文件就可以使用了,当然也可以使用keil来添加,但是keil默认的是用.lab,需要自己配置一下文件属性,改为lib文件即可。一半release sdk的时候用这种方式很关键的,毕竟自己的核心代...

关键字: keil 文件属性 lib文件

摘要:农业的发展离不开排水灌溉,因此机电排水灌溉技术得到了迅速发展。如何在排水灌溉中节约电能对建设节约型社会有着重要的意义,鉴于此,对农业电排灌节能降耗进行了有益的思考,重点研究了农业排水灌溉的特点及优化农业排水灌溉的策...

关键字: 负荷特性 建模 优化

摘 要:喷油提前角作为柴油机的重要参数 ,直接影响其启动、运行、油耗、噪声、排烟及寿命等各项性能指标 。对于大型核电站应 急柴油机而言 ,传统的喷油提前角检测方法在效率和精度上存在一定不足。鉴于此 ,通过深入分析喷油...

关键字: 在线检测 发火间隔角 优化

摘要:结合某卷烟厂薄板烘丝实际生产工艺,通过降低蒸汽输送环节热损耗、提升蒸汽疏水性能、改进HT温度控制及检测方式等措施对整个蒸汽系统进行综合优化,从而显著提高烘丝产品质量,有效提升产品的整体品质和竞争力。

关键字: 烘丝质量 蒸汽系统 优化

摘要:针对传统算法下激光切割加工工艺速度慢的问题,提出改进蚁群算法下激光切割加工工艺优化设计,根据激光切割加工工艺原理,选择激光切割加工工艺参数,在此基础上对穿孔点进行确定,并引用蚁群算法,确定激光切割加工路径,选择出最...

关键字: 激光切割 优化 制造业
关闭
关闭