OM6621x启动和DFU过程
1. 概述本文档是有关芯片的启动和OTA的基本运行框架说明,涉及的芯片为HS6621x以及OM6621x系列, 文中提到的MBR为Master Boot Record,用以存储APP或者CONFIG、PATCH等代码的引导信息区域, 大致包括代码的存储地址、CRC校验、存储大小等信息,MBR分为主区和备份区共2个区域,共占用12KB, APP主区是与MBR紧挨着的flash区域开始存储,大小用户可自行划定, APP的OTA用备份区也是用户自动划定起始地址与大小。 KEIL编译根据scatter文件确定代码的所有变量和函数的取指地址信息,在启动文件中存储了芯片的型号以及代码存储的flash地址信息,还包括了代码执行的方式,比如是从芯片上直接运行,还是将代码全部载入RAM运行。 2. 内部Flash分区对芯片内部Flash会进行分区,基本原则是MBR放置在头部的12KB区域,系统信息放置在末尾4KB,中间为APP区域,包括工作区与OTA备份区,Patch空间仅仅部分芯片有此空间。
3. MBR区格式MBR为芯片Bootloader提供应用代码的启动地址以及CRC校验信息。MBR分主区与备份区,备份区用于在需要修改MBR内容时备份作用,以避免写入失败导致芯片变砖的问题;其中App_status为标志该区域MBR内容是否有效。 4. Scatter文件KEIL编译不依赖Option的target页面地址的分配,而是根据Option的Link页面中设定的Scatter file来分配,下图就是一个Scatter文件,在开发项目的时候根据Flash分区确定代码的存储地址。 5. 启动文件Bootloader会依照启动文件中放置的一些内容信息进行一定的策略,比如ROM_ID用以区别该芯片的型号,RUN2SF_FLAG用以表示该代码是运行在内部Flash上,_VectorFLASH用以标记该代码的存储的Flash地址。 6. 启动过程下图主要描述芯片启动过程如何根据MBR来加载代码或者搬运代码。 7. DFU升级过程下图主要描述DFU过程的flash内容的变化,如何确保芯片不会变砖; |