Microchip:如何在MPLAB X中加载多个HEX文件

时间:2012-06-22 05:48:03

标签: loading microchip pic18 mplab

我使用MPLAB X(有时候是MPLAB 8),我得到了一些完成的项目。我有这些HEX文件:

  • bootloader.hex
  • magic_flag.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部分)

但我觉得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杀了我,请帮帮我:-)

1 个答案:

答案 0 :(得分:0)

您无法将两个应用程序加载到同一个内存地址空间! 您需要将magic_flag应用程序重新编译为更高的地址,而不是将两者合并到程序FLASH内存中。链接器不能代替你。 :)