2

我知道这可能不是解决这个问题的最佳地点,但我尝试了 Microchip 论坛,但尚未得到回复。我正在努力让一个 HID 引导加载程序项目在我使用 PIC24FJ64GB002 构建的原型板上工作。我修改了示例 HID Bootloader 项目以与我的板一起使用,我修改了示例 HID 鼠标项目以也与我的板一起使用。当我使用引导加载程序代码对设备进行编程时,它运行良好,Microchip 引导加载程序 Windows 程序找到该设备并显示“已连接设备。”。但是当我尝试将鼠标程序的十六进制文件加载到我的设备上时,它说它成功完成但鼠标程序永远不会运行。我不确定我是否使用了正确的链接器脚本。

4

1 回答 1

2

我能够得到一个与 Microchip HID 引导加载程序和 Microchip HID 鼠标应用程序一起工作的面包板 PIC24FJ64GB002。

要做的关键事情是为引导加载程序和应用程序使用正确的链接描述文件。

引导加载程序链接器更改:
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");
}
于 2010-12-23T20:37:29.123 回答