我想了解Arduino引导程序。我在这里找到了一些介绍:Arduino Bootloader,但我需要更多的细节,因此我寻求帮助。了解Arduino引导程序的flash构成
在我的研究中,我发现一个起点:好的,Arduino(atmega家族)有一个专用于引导加载程序的特定闪存块。一旦该MCU具有引导加载程序,它就可以通过串行下载新程序并将其存储在地址为0x00的闪存中。
让我们为这个问题设定atmega328p。
#1 - 如果你看看343数据表页面,你会看到一个表格,显示有关该引导程序大小的一些信息:
通过这个表,我明白:如果我将BOOTSZ1/0设置为0/0,我可以有一个2K引导程序,它将存储在闪存堆栈中:0x3800〜0x3FFF。
#2 - 如果你打开通过Arduino的产生ATMEGA328_BOOTLOADER的hex文件,你会看到存储在引导程序:
:10**7800**000C94343C0C94513C0C94513C0C94513CE1
到
:10**7FF0**00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91
如果考虑7FF0 - 7800你会得到7F0(2K字节的程序)
#3 - 如果你打开生成文件(C:\ Program Files文件(x86)的\的Arduino \五金\ Arduino的\ AVR \引导程序\ ATMEGA),你会看到这样的说法对atmega328:
atmega328: LDSECTION = --section-start=.text=0x7800
0x7800与bootloader的hexa文件相匹配。
问题:
1为什么数据表告诉我,我有一个特别的地方,引导程序和Arduino的的makefile文件强制存储在不同的地方?
2-什么意思是一个hexa文件的行?
:10E000000D9489F10D94B2F10D94B2F10D94B2F129
:10 : (?)
E000 : Address
00 : (?)
0D9489F10D94B2F10D94B2F10D94B2F1 : data (?)
29 : CRC (?)