完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于用UART串口在线升级,摸了几天,看到一个参考文献如下,
整体程序分为主程序部分和Bootloader部分。主程序部分是正常的应用程序,Bootloader专用于代码更新,包括Flash API的完整实现和代码从Flash重定向至RAM的算法,同时还包括一个通信规约,用于从上位机接收更新用的二进制代码。上位机可以是PC、MCU或者PLC等。程序更新流程如下: ① 刚上电时Bootloader检测主程序,并向上位机发送握手信号,等待回复。 ② 如果Bootloader在一段时间内没有收到握手确认信号且主程序校验完整则进入主程序;如果Bootloader收到握手确认信号,或者主程序校验未通过则进入程序更新状态。拷贝Flash API和相关通信程序、规约等进入RAM,然后Bootloader程序准备接收更新数据。主程序运行时也可能随时收到上位机的程序更新指令,此时主程序给Bootloader发指令进入更新状态。 ③ 上位机发指令清除Flash的相关扇区,并等待Bootloader发送删除完成信号。 ④ 收到确认帧后上位机发送一帧数据,然后等待确认。 ⑤ Bootloader将收到的数据在校验合格后写入Flash,然后发送确认帧。 ⑥ 上位机在收到确认帧后回到第6步,直到数据全部发送完毕。 ⑦ 更新完成,Bootloader重新定位程序,DSP控制权交给主程序。 有几个问题如下: 1.我对该流程理解,不知是否正确: EntryPoint→ code_start → wd_disable → bootloader→c_int00 →main(). 2.bootloader程序用C语言写怎么跳转到c_int00 执行? 3.升级前的main()放在FLASHA,升级后的main()放在FLASHB,c_int00 通过怎样选择入口地址(入口地址时知道的,c_int00 怎么知道是FLASHA还是FLASHB里面的main()? |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2343 浏览 0 评论
681 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2780 浏览 0 评论
3541 浏览 1 评论
1194 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 15:26 , Processed in 0.524700 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号