PIC24 固件引导加载程序无法启动加载的程序

发布于 2024-10-06 15:54:34 字数 348 浏览 3 评论 0原文

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

I know this might not be the best place for this question but I tried the Microchip forum and didn't haven't gotten a response yet. I am working trying to get an HID bootloader project working on a prototype board that I build using a PIC24FJ64GB002. I modified the example HID Bootloader project to work with my board and I modified the example HID Mouse project to work with my board as well. When I program my device with the bootloader code it runs fine and the Microchip Bootloader Windows Program finds the device and displays "Device attached.". But when I try to load the hex file of the Mouse program onto my device it says it completes successfully but the mouse program never runs. I am not sure if I am using the correct linker scripts. Has anyone done this and know what linker scripts I should be using for the bootloader project and the loadable project?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伤感在游骋 2024-10-13 15:54:34

我获得了一个面包板 PIC24FJ64GB002,可与 Microchip HID 引导加载程序和 Microchip HID 鼠标应用程序配合使用。

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

引导加载程序链接器更改:
内存
{
...
程序 (xr):原点 = 0x400,长度 = 0x1000
app_ivt:原点 = 0x1400,长度 = 0xC0
...
}
__代码_基= 0x400;

应用程序链接器更改:
内存
{
...
app_ivt:原点 = 0x1400,长度 = 0xC0
程序 (xr):起源 = 0x14C0,长度 = 0x96E8
...
}
__代码_基= 0x200;

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

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

I was able to get a breadboarded PIC24FJ64GB002 working with the Microchip HID bootloader and the Microchip HID mouse app.

The key things to do are use the the correct linker script for the bootloader and the app.

Bootloader Linker changes:
MEMORY
{
...
program (xr) : ORIGIN = 0x400, LENGTH = 0x1000
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
...
}
__CODE_BASE = 0x400;

App linker changes:
MEMORY
{
...
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
program (xr) : ORIGIN = 0x14C0, LENGTH = 0x96E8
...
}
__CODE_BASE = 0x200;

After you load the application via the bootloader, you must reset the device.
The following code at the beginning of main() in the bootloader is what causes the bootloader to jump to the application.

mInitSwitch2();
if((sw2==1) && ((RCON & 0x83) != 0))
{
    __asm__("goto 0x1400");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文