您好!
我正在努力使 USB 引导加载程序正常工作。
这是我所做的。
1. USB 大容量设备应用程序工作正常。
2.我通过 USB 批量从 PC 发送命令到我的代码以跳转到 ROM 中的 USB 引导加载程序
在尝试跳转到基于 ROM 的 USB 引导加载程序之前、会执行以下代码:
USBDevDisconnect (USB0_BASE);
//
//禁用 SysTick 及其中断。
//
ROM_SysTickIntDisable();
ROM_SysTickDisable();
//
//禁用所有处理器中断。 而不是逐个禁用它们
//时间,直接写入 NVIC 以禁用所有外设
//中断。
//
HWREG (NVIC_DIS0)= 0xffffffff;
HWREG (NVIC_DIS1)= 0xffffffff;
HWREG (NVIC_DIS2)= 0xffffffff;
HWREG (NVIC_DIS3)= 0xffffffff;
HWREG (NVIC_DIS4)= 0xffffffff;
//
//调用 USB 引导加载程序。
//
ROM_UpdateUSB (0);
作为参考、这里是我的项目.cmd 文件。
#define APP_BASE 0x00000000
#define RAM_base 0x20000000
/*系统内存映射*/
存储器
{
/*存储在内部闪存中并从内部闪存执行的应用程序*/
闪存(RX):origin = APP_BASE,length = 0x00100000
/*应用程序使用内部 RAM 进行数据*/
SRAM (rwx):origin = 0x20000000,length = 0x00040000
}
/*内存中的段分配*/
部分
{
.intvecs:> app_base
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH
.vtable:> RAM_base
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM
}
__STACK_TOP =__STACK + 1024;
5.跳转到引导加载程序后、代码将在位置0x0100CB58附近执行。
6.设备管理器最终显示未知 USB 设备(设备描述符请求失败)
如果有任何帮助或提示、我们将不胜感激。