【问题标题】:PIC24 Firmware Bootloader doesn't start loaded programPIC24 固件引导加载程序不启动加载的程序
【发布时间】:2010-12-09 12:35:05
【问题描述】:

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

【问题讨论】:

  • 这是否可以在图片模拟器中运行,至少可以解决您使用了正确的链接器脚本的问题?

标签: hid bootloader microchip


【解决方案1】:

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

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

引导加载程序链接器更改:
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");
}

【讨论】:

  • 你能评论一下应用链接器文件的__CODE_BASE吗?
猜你喜欢
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2020-09-10
  • 2017-07-09
  • 2021-04-17
相关资源
最近更新 更多