bin和hex文件、axf和elf文件、烧写和FLASH操作代码上传

0 薛定谔的代码段

嵌入式系统当中,有一些硬件我们是不希望在系统工作时被写入的。比如说,我们希望存放软件代码和数据的FLASH只被ROM启动程序读取,除了烧写时,其他时候它的内容都不被改变。

所以有的工程师会选择用专用的FLASH烧写工具下载软件到FLASH,无需在产品的软件中包含FLASH读写相关的代码,这种方式也十分适合量产的、更新需求不强的嵌入式产品。我们有时又希望能够在板上直接更新软件,这就要求...

FLASH烧写相关的代码,可以用在需要烧写时再通过线上传的方式加载到嵌入式系统的片上存储器内。这样既能够满足软件更新的需求,又能够降低应用程序跑飞时擦除FLASH软件数据的风险。


1 图解代码上传

1、支持FLASH代码上传的程序,可以分为【其他代码】和FLASH操作代码两个区域,如下如图右侧所示。注意FLASH操作代码对应的区域是没有实际有效的代码的,途图中有空白表示(不填充颜色)。
请添加图片描述

2、系统上电启动后,ROM 启动程序将FLASH中的代码加载到处理器的RAM中,此时有一段对应FLASH操作代码的RAM是空白的。这部分空间将用于接受上位机发来的FLASH操作代码。
请添加图片描述

3、我们通过串口接收上位机发送的FLASH操作代码,把这部分代码放到预留的【FLASH操作代码】区域,如下如所示右侧图中该区域已经被蓝色填充,表示放置了FLASH读写相关的函数的指令数据。这时候,【其他代码】中调用FLASH读写相关的函数才真正具有读写功能。
请添加图片描述
4、然后我们从上位机发送新的软件代码,通过上一步发送的FLASH操作代码把软件更新到FLASH中对应的区域。图中用黄色填充的表示已经被更新的软件代码区域。当然啦,FLASH操作代码对应的区域会一直空着。
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_33904382/article/details/127217603
今日推荐