And*_*rew 10 embedded avr msp430
我只使用过AVR和MSP430,但对于这两种情况都是如此.在编译和静态链接之后,我的最终ELF二进制文件大约为208kB,而Intel Hex二进制文件大约为41kB.AVRDUDE告诉我上传大约18kB.这里到底发生了什么?
小智 12
我最后的ELF二进制文件大约是208kB
是的,因为ELF不是原始机器代码.它是一种通用的可执行格式,具有重定位信息,动态加载信息,只读数据的不同部分,可写数据和代码等.大多数这些都与微控制器无关,因为它没有操作系统,没有动态加载工具,所以大部分额外信息都可以被删除.
Intel Hex二进制文件约为41kB.AVRDUDE告诉我上传大约18kB.
两个原因.一,Intel hex文件包含每行末尾的校验和.如果你使用合理的平均线长度来剪切这些,你可以期望文件缩小几个百分点,例如36kB.然后,英特尔Hex文件被命名为'hex'文件是有原因的.它们不包含原始二进制数据,而是包含十六进制形式的原始二进制数据 - 即一个实际字节使用两个字节进行编码.因此,当AVRdude上传代码时,它会将其转换为原始二进制文件(这是AVR处理器可以运行的),然后数据大小再次减少50%.