问题:keil编译错误improper fixup,然后将
将Code Rom Size选择了 Large:64K program
Code Optimization Level选择了 9:Common Block subroutines (减少代码长度)
Emphasis 选择了Favor size (减少代码长度)
结果还是有improper fixup错误。License也没过期。
最终解决:1、重装一个破解版的keil。(很重要)
(我已经上传到百度网盘了,地址如下:https://pan.baidu.com/s/1htHqr3m)
2、用注册机生成一个license
解决的过程:本来已经安装了一个破解版的keil,可以正常编译我的工程,code 3358字节也不大。
但后来由于需要安装一个c8051的开发环境,它顺带自动把我的破解版的keil重装了一遍,
结果再次编译就出现了improper fixup错误。推测是此过程替换了破解版的一些编译相关的文件导致keil编译出错。
再重装会之前的破解版的便顺利解决了。
=======================================
使用keil 编译器的碰到的另一个问题:注释掉未被调用但参与编译的函数,程序正常运行;一旦取消注释参与了编译
但未被调用的函数,程序一执行立即跑飞。
解决:
排查了程序的存储空间flash、data、xdata、idata、data够用,不是存储空间的问题。
考虑函数的编译与否并不影响程序的执行,但现行却是编译进去程序运行就崩溃,有问题的不参与编译一切又正常,
我似乎陷入了死胡同。后来听一个有经验的员工说可能是编译导致堆栈出了问题。于是就讲有问题的函数参与编译并且被调用,但函数什么事也不做,果然程序不再跑飞。