我使用MPLAB X(有时候是MPLAB 8),我得到了一些完成的项目。我有这些HEX文件:
Bootloader从地址0x0加载到0x7FF。魔术标志位于地址0x40(因此在引导加载程序区域中)。
现在我需要在MPLAB X中设置项目以加载所有内容(bootloader + magicFlag + app)。 可以加载bootloader,然后加载magicFlag然后设置保留闪存并在应用程序上工作并仅加载appl区域(从0x800到0xFFFF),但对我来说不太舒服。例如,当我使用来自iSYSTEM的WinIDEA IDE与飞思卡尔合作时,我能够设置许多SX文件来加载,非常简单,快速并且它正在工作。但是当我使用MPLAB X进行尝试时,我总是会收到错误:
(944)appl.hex和bootloader.hex之间地址0h的数据冲突。
我尝试了什么:
但我觉得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的bootloader,我只有来自appl的源代码。当然,在一个项目中使用appl的bootloader源代码会更好。
所以,MPLAB X杀了我,请帮帮我:-)
答案 0 :(得分:0)
您无法将两个应用程序加载到同一个内存地址空间!
您需要将magic_flag
应用程序重新编译为更高的地址,而不是将两者合并到程序FLASH内存中。链接器不能代替你。 :)