boot_serial例程中的疑问

2019-03-24 14:43发布

大家好,我刚学bootloader,在看boot_serial这个官方的例子。我的板子是TI 的LM3S9B96.有几个问题想请教下。
1.boot_serial这个工程怎么没有main函数,先运行那个函数呢?
2.我使能了强制升级按键“ENABLE_UPDATE_CHECK”,在bl_check.c中怎么判断按键按下而去执行  bootloader或者应用程序呢?
3.我按照zlg的资料设置好,
先把flash擦干净,先通过jtag下载boot_seral,再通过lmflash programmer选择串口下载boot_demo1。成功后,我调试 boot_seral为什么总是停在这呢?如下图:
boot-serial.jpg
望请各位大侠指导。先谢过了。
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
fendou
1楼-- · 2019-03-24 22:41
< 我对这三个问题的理解是这样的。大家看看对不对:1.首先运行的是启动代码中的“Reset_Handler”在“_Handler中调用”ProcessorInit,复制bootloader到sram中,并在sram中运行bootloader。执行完“Reset_Handler”再接着执行“Reset_Handler_In_SRAM”,在“Reset_Handler_In_SRAM”调用CheckForceUpdate函数,在CheckForceUpdate函数中判断如果使能了ENABLE_UPDATE_CHECK,则return(CheckGPIOForceUpdate());        在这留两个个问题。
2.在bl_check.c中怎么判断按键按下?是在CheckGPIOForceUpdate()中的
按键问题.jpg
如果按键按下则g_ulForced = 1;return(1);。
3.之所以停在这,是因为调用了Updater函数,在这个函数中
停留.jpg
而我没有通过LM Flash Programmer来升级程序,所以一直停在
 if(ReceivePacket(g_pucDataBuffer, &ulSize) != 0) {            continue; }
不知道我理解的对不对,还请大家帮忙分析分析!
在刚开始留下了两个问题,
1.在CheckForceUpdate()函数里有个
update.jpg
不清楚是干嘛用的?
2.在CheckForceUpdate函数中判断如果使能了ENABLE_UPDATE_CHECK,则return(CheckGPIOForceUpdate()); 如果按键按下则g_ulForced = 1;return(1);根据返回值来决定是执行bootloader还是用户程序,那么是哪条语句来利用返回的“0”或者“1”来决定是执行bootloader还是用户程序啊?
Study_Stellaris
2楼-- · 2019-03-25 01:05
< :TI_MSP430_内容页_SA7 --> CallApplication 会根据返回的结果来决定是否跳到去执行 User Application.
fendou
3楼-- · 2019-03-25 03:24
 精彩回答 2  元偷偷看……
Study_Stellaris
4楼-- · 2019-03-25 07:30
是的,你的理解是对的。

一周热门 更多>

相关问题

    相关文章