我搜索了很多回答这个问题,但我还没有找到任何明确的答案。 如您所知,AVR微控制器,例如Atmega128有一个Flash存储器,可分为Bootloader和Application存储器。我调整了每个参数并加载了我的启动和应用程序负载。有没有办法(使用代码或终端)知道每个内存的确切大小和可用字节????
有些人可能会提到avr-size命令。这个命令给我整个闪存的大小。我想区分启动和应用程序内存。
先谢谢
答案 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文件确切地说明了写入代码的地址。