我使用 MPLAB X(有时是 MPLAB 8)并完成了一些项目。我有这些十六进制文件:
- 引导加载程序.hex
- 魔术标志.hex
Bootloader 从地址 0x0 加载到 0x7FF。魔术标志位于地址 0x40 中(因此在引导加载程序区域中)。
现在我需要在 MPLAB X 中设置项目以加载所有内容(bootloader+magicFlag+app)。可以加载引导加载程序,然后是magicFlag,然后设置保留闪存并在应用程序上工作并仅加载应用程序区域(从0x800到0xFFFF),但这对我来说不太舒服。例如,当我使用 iSYSTEM 的 WinIDEA IDE 与飞思卡尔合作时,我能够设置许多要加载的 SX 文件,非常简单、快速并且可以正常工作。但是当我用 MPLAB XI 尝试它时,总是会出错:
(944) appl.hex 和 bootloader.hex 之间地址 0h 的数据冲突。
我尝试了什么:
- 用于在项目属性中加载的设置文件(加载部分)
- 在项目属性中设置内存范围(ICD 3 部分)
但我认为加载 ICD 3 没有问题。因为当 MPLAB X 创建统一的 hex 文件时,错误及时出现。
想象一下,这是我的链接器的一部分:
CODEPAGE NAME=BootResetVec START=0x000 END=0x007 PROTECTED
CODEPAGE NAME=BootHighISR START=0x008 END=0x017 PROTECTED
CODEPAGE NAME=BootLowISR START=0x018 END=0x029 PROTECTED
CODEPAGE NAME=TRMAGIC START=0x040 END=0x07F PROTECTED
CODEPAGE NAME=BootLoader START=0x080 END=0x07FF PROTECTED
CODEPAGE NAME=page START=0x800 END=0x7D7F
CODEPAGE NAME=debug START=0x7D80 END=0x7FFF PROTECTED
我提醒一下,这不仅是我的项目,而且只是带有 magicFlag 的引导加载程序,而且我只有来自 appl 的源代码。当然,最好在一个项目中拥有带有 appl 的 bootloader 源代码。
所以,MPLAB X 害死我了,请帮助我 :-)