Python Arm Cortex引导加载程序调试提示
我正在为定制板上的Cortex-M4 MCU()编写一个串行引导程序。我目前正在通过SWD使用Jlink进行闪烁/调试 当前架构:我有一个python脚本,它读取二进制文件,将其分解为512字节的块,通过UART发送到MCU,最后对整个过程执行CRC32,并检查以确保接收端的CRC匹配。这一切工作正常,发送数据,两端的CRC匹配 传入的二进制文件将保存到地址Python Arm Cortex引导加载程序调试提示,python,c,uart,bootloader,Python,C,Uart,Bootloader,我正在为定制板上的Cortex-M4 MCU()编写一个串行引导程序。我目前正在通过SWD使用Jlink进行闪烁/调试 当前架构:我有一个python脚本,它读取二进制文件,将其分解为512字节的块,通过UART发送到MCU,最后对整个过程执行CRC32,并检查以确保接收端的CRC匹配。这一切工作正常,发送数据,两端的CRC匹配 传入的二进制文件将保存到地址#定义应用程序_启动_地址0x8000。引导加载程序收到最后一个块后,将调用以下代码: void jumpToApplication(voi
#定义应用程序_启动_地址0x8000
。引导加载程序收到最后一个块后,将调用以下代码:
void jumpToApplication(void)
{
uint32_t applicationMainStackPointer = *(volatile uint32_t *) (APPLICATION_START_ADDRESS);
__set_MSP(applicationMainStackPointer);
void (*applicationResetHandler)(void);
uint32_t applicationResetHandlerAddress = *(volatile uint32_t *) (APPLICATION_START_ADDRESS + 4);
applicationResetHandler = (void *) applicationResetHandlerAddress;
applicationResetHandler();
}
问题:应用程序在引导加载程序之后没有运行。我应该看到一堆你好,世界“代码>”弹出,但什么也没有发生
我认为在连接了JLink的情况下跳转到应用程序可能会导致问题,所以我尝试在没有连接JLink的情况下运行所有程序,但仍然无法运行
我的问题:
这里可能出了什么问题?要继续调试此问题,我可以研究什么
我已经测试了通过JLink闪烁发送的二进制文件,但是我实际闪烁的文件是.elf
文件。据我所知,.bin
文件应该也能正常工作,但也许这就是我出错的地方
在Python中,我对二进制文件进行如下格式化:
这会破坏二进制文件吗
任何调试提示/建议/见解都将不胜感激 ypu fprget是否更改了向量表?是否更改了应用程序链接器脚本?不,我没有。需要进行哪些更改?您的应用程序代码(矢量表)必须从应用程序开始地址开始。否则,所有地址都错误,中断处理程序错误等。更改链接器脚本有效。谢谢
data = [x for x in open(path, 'rb').read()]
blocks = [data[i:i + PAGE_SIZE] for i in range(0, len(data), PAGE_SIZE)]