2010-12-09 43 views
2

我知道这可能不是这个问题的最佳位置,但我尝试了Microchip论坛,并没有得到答复。我正在尝试使用PIC24FJ64GB002构建原型电路板上的HID引导加载程序项目。我修改了示例HID Bootloader项目以使用我的主板,并修改了示例HID Mouse项目以与我的主板配合使用。使用引导加载程序代码对器件编程时,它运行良好,Microchip Bootloader Windows程序找到该器件并显示“Device attached。”。但是,当我尝试将鼠标程序的十六进制文件加载到我的设备上时,它说它成功完成,但鼠标程序从未运行。我不确定我是否正在使用正确的链接器脚本。有没有人做过这件事,并知道我应该用于bootloader项目和可加载项目的链接器脚本?PIC24固件引导加载程序没有启动加载程序

+0

这是你可以在图片模拟器中运行的东西,至少要涵盖你已经使用正确的链接脚本的担忧? – 2010-12-11 15:01:03

回答

2

我能够使用Microchip HID引导加载程序和Microchip HID鼠标应用程序使用面向对象的PIC24FJ64GB002。

要做的关键事情是使用正确的链接器脚本的引导程序和应用程序。

Bootloader的链接变化:
MEMORY
{
...
program (xr) : ORIGIN = 0x400, LENGTH = 0x1000
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
...
}
__CODE_BASE = 0x400;

应用程序连接的变化:
MEMORY
{
...
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
program (xr) : ORIGIN = 0x14C0, LENGTH = 0x96E8
...
}
__CODE_BASE = 0x200;

后您通过引导加载应用程序,您必须重置设备。 引导加载程序中main()开头处的以下代码是导致引导加载程序跳转到应用程序的原因。

mInitSwitch2(); 
if((sw2==1) && ((RCON & 0x83) != 0)) 
{ 
    __asm__("goto 0x1400"); 
} 
+0

你可以评论应用程序链接程序filw的`__CODE_BASE`吗? – abhiarora 2017-03-25 08:36:10