AVR

时间:2017-01-02 12:33:44

标签: c embedded microcontroller avr avrdude

我搜索了很多回答这个问题,但我还没有找到任何明确的答案。 如您所知,AVR微控制器,例如Atmega128有一个Flash存储器,可分为Bootloader和Application存储器。我调整了每个参数并加载了我的启动和应用程序负载。有没有办法(使用代码或终端)知道每个内存的确切大小和可用字节????

有些人可能会提到avr-size命令。这个命令给我整个闪存的大小。我想区分启动和应用程序内存。

先谢谢

3 个答案:

答案 0 :(得分:0)

您有两个固件,即引导加载程序和应用程序,每个固件都有自己的大小。

对于每个构建,将链接器标志添加到链接命令行-print-memory-usage,以使其打印使用了多少闪存和RAM。 (每个工具链都不支持此标志,但AVR可能支持它)

更多信息:https://stackoverflow.com/a/41389481/2002198

或者,您可以使用avr-size获取内存使用情况:

avr-size -C --mcu=atmega168 project.elf

参考:http://www.avrfreaks.net/forum/know-code-size-and-data-size

您必须注意其他细节:根据您加载应用程序的方式(闪存写入与引导加载),您将使应用程序与FLASH块(通常为2个kib)对齐。根据您的工作方式,您将为应用程序提供更小的可用闪存。

答案 1 :(得分:0)

请阅读手册:

  

Boot Flash部分开始的实际地址是   由BOOTSZ保险丝开采

你会找到答案。

答案 2 :(得分:0)

如果您已经构建了引导加载程序,那么您应该能够通过仔细查看为构建它而执行的步骤,或者通过检查引导加载程序的HEX file来判断它有多大。 HEX文件确切地说明了写入代码的地址。