Alios Things的Flash划分规则

摘要: 为了方便大家移植Alios Things,本文给出了关于Alios Things Flash划分规则,及注意事项。

Alios Things简介

AliOS Things发布于2017年杭州云栖大会, 是 AliOS 家族旗下的、面向IoT领域的、高可伸缩的物联网操作系统,于2017年10月20号宣布在github上开源;具体介绍请点击链接:https://github.com/alibaba/AliOS-Things/blob/master/README-zh.md
本文主要介绍Alios的flash划分规则,方便大家开发移植,如有疑问,欢迎留言。

1. 需求简介

AliOS Things 由于功能需要,维护了一张flash分区表,这张表包括bootloader区、Application区、OTA TMP区以及parameters区,如下图:

上图的分区的简介:

分区名称分区描述
Bootloader区存储bootloader固件,引导启动整个系统,有些支持OTA代码copy等
Application区当原地升级时,此分区为APP程序运行区;当乒乓升级(A,B分区)时,此分区为APP程序运行A区,与APP程序运行B区(OTA Tmp)交替存储下载的固件并运行对应的程序。
OTA Tmp区当原地升级时,此分区用于存放OTA的下载固件;当乒乓升级(A,B分区)时,此分区为APP程序运行B区,与APP程序运行A区(Application)交替存储下载的固件并运行对应的程序。
Parameters1区OTA参数存储区
Parameters2区KV存储区
Parameters3区用户自定义(Mk3060,b_l475e两个板子的KV存储区)
Parameters4区安全相关的参数存储区

2. 分区大小划分规则

  1. 获取芯片平台的Flash大小
  2. 获取bootloader信息,包括:bootloader支持的升级类型(原地还是乒乓)、bootloader跳转地址(如果是乒乓会有两个跳转地址);
  3. 跟据bootloader获取的信息,划分整个Flash;

Bootloader支持原地升级

原地升级flash大小划分方法表:

分区名起始地址分区大小
Bootloader区芯片Flash 起始地址bootloader跳转地址与Flash起始地址差值
Application区Bootloader 跳转地址需要用户根据实际情况自己评估Application的大小
OTA Tmp 区Application 分区结束地址与Application尽量保持一致,如果支持差分可适当小些,用户需根据实际情况自己评估
Parameters1区OTA Tmp 分区结束地址一般是4Kbytes
Parameters2区Parameters1分区结束地址一般是8Kbytes
Parameters3区Parameters2分区结束地址一般是4Kbytes
Parameters4区Parameters3分区结束地址一般是4Kbytes

Bootloader 支持乒乓升级

乒乓升级flash大小划分方法表:

分区名起始地址分区大小
Bootloader区芯片Flash 起始地址bootloader跳转地址与Flash起始地址差值
Application区Bootloader 跳转地址1Bootloader跳转地址2与bootloader跳转地址1之间的差值(如果bootloader给出flash擦除范围,以bootloader给出大小为准)
OTA Tmp 区Bootloader 跳转地址2与Application区大小一致
Parameters1区OTA Tmp 分区结束地址一般是4Kbytes
Parameters2区Parameters1分区结束地址一般是8Kbytes
Parameters3区Parameters2分区结束地址一般是4Kbytes
Parameters4区Parameters3分区结束地址一般是4Kbytes

注意:

  1. 从安全角度考虑,建议用户使用乒乓升级方式,并支持版本回滚;如果用户考虑成本因素采用原地升级方式,因误操作,升级了不正确的固件,导致设备变砖,用户需要自己承担责任。
  2. 除了以上定义的flash分区之外,有些芯片或者模组还有一些配置文件需要烧写到Flash固定地址,所以确保以上分区不能与这些配置文件的地址空间相覆盖或者重叠;
  3. 以上分区一旦定义好之后不能轻易更改,否则会造成数据丢失;如果客户需要添加自定义分区,需在分区表索引定义的尾部顺次添加不能中间插入

3. 示例

根据以上的划分原则,以esp8266 Flash大小为2Mbytes 升级空间为1024x1024模组为例划分各分区:

  1. 获取Flash 大小:Flash size = 2M bytes;地址空间为:0x000000 ~ 0x200000
  2. Bootloader信息:

    1. 支持乒乓升级;
    2. Bootloader 跳转地址1 = 0x1000 ;
    3. Bootloader 跳转地址2 = 0x101000;
      Application区理论大小为:0x101000 – 0x1000 = 0x100000;
  3. 根据模组厂商文档,需要烧的配置文件:
    由文档可知地址:0x1FC000 ~ 0x200000 为配置文件存储区,所以parameters1~parameters4 只能从0x1FC000向低地址划分,即:
    Parameters1 起始地址:0x1f6000 大小:0x1000
    Parameters2 起始地址:0x1f7000 大小:0x2000
    Parameters3 起始地址:0x1f9000 大小:0x1000
    Parameters4 起始地址:0x1FA000 大小:0x1000
  4. Application区和OTA Tmp区划分:
    根据步骤3可知OTA Tmp区的范围只能是parameters1 – bootloader跳转地址2, 即:0x1f6000 - 0x101000 = 0xF5000; 由于是乒乓升级,application区的大小应该和OTA Tmp区大小相等;
    由以上4个步骤可完成整个分区表的划分,具体可查看:aos/board/esp8266/board.c文件。

原文链接 

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决数组下标越界异常

如何解决数组下标越界异常 今天在写接口的时候运行发现有一个数组的下标越界异常了, 检查了一下发现实在上面的数组中有一些字符串没有大写,造成跟下面的数组字符串不一样,所以导致了数组下标越界异常。

python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...

RT,最近在学scrapy,写了一个简单的爬取网页数据的爬虫,利用CrawlProcess单次调用执行的时候没有问题,脚本如下,就是清空数据表然后爬取数据: class updateBoardData: def __init__(self): self.db connect…

centos7 yum安装ifconfig

centos7 yum安装ifconfig yum install net-tools

web前端规范

摘要: HTML 原则1.规范 。保证您的代码规范,保证结构表现行为相互分离。2.简洁。保证代码的最简化,避免多余的空格、空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行为属性。任何时候都…

华为表示年内没有推出搭载鸿蒙操作系统手机的计划;OpenStack或被抛弃?iPhone至少还要三年可苹果自研5G调制解调器……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 每周三次,打卡即…

获取控件enable状态_Android自定义组合控件数字加减(适用于购物车)

大家好,我是小黑,一个还没秃头的程序员~~~独学而无友,则孤陋而寡闻--《礼记学记》今天的内容是自定义一个数组加减的控件,可以应用于购物车的数量选择,效果如下:自定义实现了控件的默认值、最大值、最小值、…

python os.path.splitext()的用法_Python常用模块之os.path

os.path.abspath(path) 输入相对路径,返回绝对路径 Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>&…

IPv6转换服务正式发布

摘要: IPv6时代已来,阿里云IPv6转换服务帮忙您使现有IPv4业务快速提供IPv6访问能力 什么是IPv6转换服务 IPv6转换服务(IPv6 Translation Service)是阿里云提供的一种有状态的IPv6和IPv4网络地址和协议转换服务。 通过IPv6转换服…

【角度刁钻】如果把线程当作一个人来对待,秒懂

戳蓝字“CSDN云计算”关注我们哦!作者 | 编程新说李新杰责编 | 阿秃多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。强烈建议去运行下文章中的示例代码,自己体会下。问题究竟出在哪里&#xff…

时间序列数据卡尔曼滤波_使用Highcharts和InfluxDB可视化时间序列数据

实时绘制大量带时间戳的数据往往是一项棘手的任务,需要相当多的技巧和过多的耐心。幸运的是,我们已经有了InfluxData平台来为我们提供开箱即用的许多困难。我们可以高效,安全地收集和存储数据,构建可视化,甚至设置警报…

AI又破案!衢州城市大脑这回抓了一个抢劫犯

摘要: 浙江衢州再次上演AI破案的神迹:两周时间内,衢化西路、巨化西路连续发生两起金项链抢劫案。受案发现场条件限制,视频侦查问题重重。在衢州城市大脑的帮助下,警方最终锁定犯罪嫌疑人马某并进行逮捕。经查&#xff…

CentOS7 最小化安装后的必备操作

文章目录1. 安装ifconfig2. firewall 启用 IPtable3. 修改iptables配置文件4. 重启iptables5.关闭SELINUX6. 安装wget7. 安装vim8. 安装unzip9. 更换镜像源 为阿里源10 依赖必备1. 安装ifconfig yum install -y net-tools2. firewall 启用 IPtable #停止 Firewall systemctl …

用javascript进行一个简单的机器学习小实例

摘要: 本篇文章教你如何使用JavaScript在浏览器中完整地定义、训练和部署机器学习算法。 虽然它可能不是机器学习传统选择的开发语言,但是JavaScript正在证明有能力完成这样的工作——即使它目前还不能与主要的机器学习语言Python竞争。在进一步学习之前…

梳子刻字刻什么好_校园石阶上被人刻了1700多个字?!这次网友却说好

在公共场合刻字,是不是听上去不太文明?但凡事都有例外!在云南怒江的一个小学,一个支教老师在学校的石砖上刻下了上千个字,他为的不是“到此一游”,而是将汉字知识永远传承下去...△视频来源:看看…

腾讯Blade Team发现云虚拟化平台逃逸漏洞 积极护航云生态安全

随着云技术的快速发展和迭代更新,各行各业都在“云”中快速成长,安全性显得尤为重要。而云时代软硬件的“云交互”,对安全来说也意味着新的挑战。 近日,腾讯Blade Team团队在针对云上虚拟化安全研究中,发现了主流虚拟…

rust盖错了怎么拆除_细说Rust错误处理

细说Rust错误处理1. 前言这篇文章写得比较长,全文读完大约需要15-20min,如果对Rust的错误处理不清楚或还有些许模糊的同学,请静下心来细细阅读。当读完该篇文章后,可以说对Rust的错误处理可以做到掌握自如。笔者花费较长篇幅来描述…

机器学习应用中的UI个性化

摘要: 在这篇文章中,我们看看关于机器学习应用中的UI个性化问题,谈一谈为什么在应用程序开发的过程中交流和沟通是成功的关键。 EdgVerve推出了基于AI的业务应用平台的新一代集成人工智能平台-Infosys Nia使你的企业能够管理特定的业务领域&a…

zookeeper集群部署 精简版本

文章目录1. zookeeper下载2. 解压3. 重命名4. 创建dataDir目录和dataLogDir日志目录5. 更新备份配置文件6. 添加数据目录和日志文件目录7. 添加集群信息7.1. ip配置 方式017.2. 域名配置 方式02(推荐使用)8. 在服务器上分别创建myid,各自写入…

物联网火爆,入门却太难了!

近几年来,物联网发展迅速:据中商产业研究院《2016——2021年中国物联网产业市场研究报告》显示,预计到2020年,中国物联网的整体规模将达2.2万亿元,产业规模比互联网大30倍。我们可以看到,物联网的前景广阔。…

精读《手写 SQL 编译器 - 回溯》

摘要: 1 引言 上回 精读《手写 SQL 编译器 - 语法分析》 说到了如何利用 Js 函数实现语法分析时,留下了一个回溯问题,也就是存档、读档问题。 我们把语法分析树当作一个迷宫,有直线有岔路,而想要走出迷宫,在…