OM6621x系列启动和DFU过程

pengam · 563次点击 · 11个月前

 

OM6621x启动和DFU过程 

                                                      

目录... 3

1.     概述... 4

2.     内部Flash分区... 5

3.     MBR区格式... 6

4.     Scatter文件... 7

5.     启动文件... 8

6.     启动过程... 9

7.     DFU升级过程... 10

 

1.    概述

本文档是有关芯片的启动和OTA的基本运行框架说明,涉及的芯片为HS6621x以及OM6621x系列, 文中提到的MBRMaster Boot Record,用以存储APP或者CONFIGPATCH等代码的引导信息区域, 大致包括代码的存储地址、CRC校验、存储大小等信息,MBR分为主区和备份区共2个区域,共占用12KB APP主区是与MBR紧挨着的flash区域开始存储,大小用户可自行划定, APPOTA用备份区也是用户自动划定起始地址与大小

KEIL编译根据scatter文件确定代码的所有变量和函数的取指地址信息,在启动文件中存储了芯片的型号以及代码存储的flash地址信息,还包括了代码执行的方式,比如是从芯片上直接运行,还是将代码全部载入RAM运行。

2.    内部Flash分区

对芯片内部Flash会进行分区,基本原则是MBR放置在头部的12KB区域,系统信息放置在末尾4KB,中间为APP区域,包括工作区与OTA备份区,Patch空间仅仅部分芯片有此空间。

                                              flash地址分配.png

 

3.    MBR区格式

MBR为芯片Bootloader提供应用代码的启动地址以及CRC校验信息。MBR分主区与备份区,备份区用于在需要修改MBR内容时备份作用,以避免写入失败导致芯片变砖的问题;其中App_status为标志该区域MBR内容是否有效。

1685670602157.jpg

4.    Scatter文件

KEIL编译不依赖Optiontarget页面地址的分配,而是根据OptionLink页面中设定的Scatter file来分配,下图就是一个Scatter文件,在开发项目的时候根据Flash分区确定代码的存储地址。

scatter.jpg

5.    启动文件

Bootloader会依照启动文件中放置的一些内容信息进行一定的策略,比如ROM_ID用以区别该芯片的型号,RUN2SF_FLAG用以表示该代码是运行在内部Flash上,_VectorFLASH用以标记该代码的存储的Flash地址。

startup.jpg

6.    启动过程

下图主要描述芯片启动过程如何根据MBR来加载代码或者搬运代码。

芯片启动过程图.jpg

7.    DFU升级过程

下图主要描述DFU过程的flash内容的变化,如何确保芯片不会变砖;

OTA流程示意图.jpg


被收藏 1  ∙  0 赞  
加入收藏
点赞
2 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站