KEILC51是没有被调用的函数都编译进去的。
但是MDK arm是没有调用的就没有被编译进去,现在我要搞不同的工程,调用同样的固件,放在同一个地址。需要没有被调用的函数也好便一起进去。咋弄?
目前还没有找到好的方法。
已经找到keep指令可以实现都编译进去。
但是不同工程生成的固件还是有些不一样!
很困难的问题!!!
明白了!
内存也需要定位。
HEX文件中涉及到DCW指令是关于内存分配的。
这种分散加载看起来比较适合
(1)大的FLASH,否则keep之后,真的可能将flash撑爆。
(2)只操作应用层数据,比如做个PLC给别人用。
同时满足以上两点可以才可以考虑用分散加载。否则真挺麻烦,不太值得。
--------------------------------------------------------------------------------------
2018.06.22
看了一下老外的固件 将近两M。这么大的固件,如果和app一起下载,那么时间可真够长的。而我的固件现在将近2K,也需要1分多钟。目前这个阶段还是暂且放弃固件方式吧。固件首先需要大的flash,我是没有这么大的flash的。后来我想的折中的方法,查一下上一次的固件的CRC值和长度,然后本次加载的固件的CRC值和长度作为比较,如果一样就不下载固件,直接下载app。否则若不一样,则固件和APP。这么做起来也挺啰嗦麻烦,考虑的细节不少。
所以目前的方式是放弃固件方式。