微芯片:如何在MPLAB X中加载多个十六进制文件



我使用MPLAB X(有时是MPLAB 8),我有一些项目要完成。我有这些十六进制文件:

  • 引导加载程序.hex
  • magic_flag.十六进制

引导加载程序从地址 0x0 加载到0x7FF。魔术标志在地址 0x40 中的位置(因此在引导加载程序区域中)。

现在我需要在 MPLAB X 中设置项目以加载所有内容(引导加载程序 + magicFlag + app)。可以加载引导加载程序,然后加载magicFlag,然后设置保留的闪存并在应用程序上工作并仅加载应用程序区域(从0x800到0xFFFF),但这对我来说不太舒服。例如,当我使用飞思卡尔和iSYSTEM的WinIDEA IDE时,我能够设置许多SX文件进行加载,非常简单,快速并且它正在工作。但是当我尝试使用 MPLAB X 时,我总是收到错误:

(944) appl.hex 和 bootloader.hex 之间地址 0h 处的数据冲突。

我尝试过:

  • 用于在项目属性中加载的安装文件(加载部分)
  • 在项目属性中设置内存范围(ICD 3 部分)

但我认为ICD 3加载没有问题。因为当 MPLAB X 创建统一的十六进制文件时,错误及时出现。

想象一下,这是我的链接器的一部分:

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 引导加载程序源代码。

所以,MPLAB X正在杀死我,请帮助我:-)

不能将两个应用程序加载到同一内存地址空间!您需要将应用程序重新编译magic_flag地址高于在程序闪存中合并两者的地址。链接器不能代替你来做。:)

最新更新