我在一个简单的AVR编程器上为我的大学项目工作,并且我坚持了解如何将内存从十六进制文件映射到实际的闪存。AVR内存和英特尔十六进制
例如,intel hex为我们提供了关于数据块起始地址,其中的字节数和数据本身的信息。麻烦来自于AVR MCU,特别是ATmega16,通常有两个字节的地址:高和低。首先,我写了一个简单的函数,它只读取来自十六进制文件的所有数据并按顺序写入,每传递两个字节就增加一个地址。令我惊讶的是它在简单的闪烁代码上工作。但是,我不确定,如果这种方法可行,如果有人需要复杂的内存结构。
所以问题是:
- 将在复杂的存储器结构,该解决方案的工作?
- 如果不是,我该如何将intel十六进制地址映射到实际的flash地址?问题是在intel hex格式中没有高和低字节,只有地址=字节。
如果我在闪存末端创建一个自定义部分并在其中放置一些数据,那么在“复杂内存结构”下面就是这样的。其实它并不是很复杂;)所以我只需要将地址除以2就可以了? –