Thread 中讨论的其他器件:UNIFLASH
工具/软件:
尊敬的 TI 专家:
我正在开发 F28003x 引导加载程序和 App1。 以下是我的设置:
我迄今所做的工作
-
引导加载程序位于 0x80000 。
-
App1 的起始位置为 0x88000 。
-
引导加载程序
.bin通过 CAN 接收数据并从开始将其写入闪存 0x88000 。 -
写入后、我会计算并验证的 CRC32
.bin(它匹配)、确认数据已正确刷写。
问题
我尽力了 从引导加载程序跳转 _c_int00使用 App1.map0x000896BA () 中的地址到达 App1 入口点 ()、但我得到一个 非法中断处理程序 。
下面是我用于跳转的代码:
#define APP1_ENTRY_ADDR 0x000896BAUL // From App1 .map (_c_int00)
void jump_to_application(void)
{
DEVICE_DELAY_US(100);
CPUTimer_stopTimer(CPUTIMER0_BASE);
CPUTimer_reloadTimerCounter(CPUTIMER0_BASE);
CPUTimer_setEmulationMode(CPUTIMER0_BASE, CPUTIMER_EMULATIONMODE_STOPAFTERNEXTDECREMENT);
DINT;
IER = 0x0000;
IFR = 0x0000;
asm(" NOP"); asm(" NOP"); asm(" NOP"); asm(" NOP");
DEVICE_DELAY_US(5000);
void (*app_entry)(void) = (void (*)(void))APP1_ENTRY_ADDR;
app_entry();
// Never returns
}
我很困惑
-
.map为生成.out、其符号如_c_int00。 -
但是、我仅将
.bin(原始数据)下载到的闪存中 0x88000 。 因此:-
我应该
_c_int00从跳转到地址.map吗? -
我是否需要找到
.codestart或其他任何入口点?
-
-
什么是 正确方法 使用
.bin文件时、如何从引导加载程序跳转到为 F28003x 构建的应用?
是我想要的
-
说明了
.mapVs.bin地址之间的关系。 -
关于
.bin基于 App1 的正确入口点的建议。 -
我的跳转方法是否正确、或者我是否需要调整它(例如,设置 SP,使用)
.codestart?
提前感谢您!
如果需要、我还可以附加.cmd.map这两个工程的文件。