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,一经查实,立即删除!

相关文章

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

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

centos7 yum安装ifconfig

centos7 yum安装ifconfig yum install net-tools

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

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

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

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

IPv6转换服务正式发布

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

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

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

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

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

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

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

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

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

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

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

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

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

机器学习应用中的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倍。我们可以看到,物联网的前景广阔。…

感知器算法的基本原理和步骤_很多情况下,深度学习算法和人脑相似

人脑模拟  深度学习背后的主要原因是人工智能应该从人脑中汲取灵感。此观点引出了“神经网络”这一术语。人 脑中 包含 数 十亿个神经元,它 们 之间有 数 万个 连 接。很多情况下,深度学习算法和人脑相似,因为人脑和深度学习模型都拥有大量…

打印时候复选框勾选不见了_checkbox 选中未显示对号勾选的问题

今天同事 让帮忙调试一个checkbox只选中一个的方法,代码如下:ID平台代码平台名称选项2选项2选项3选项4varEleInput$("[name ptcode]:checkbox")//;$("#table_platform input") ;EleInput.each(function(index, element) {$(element…

工程师如何解决穿衣搭配烦恼?——滴搭平台与算法

摘要: 阿里工程师们推出了一个滴搭平台,基于千万时尚达人的优质搭配,已经学习出了一套比较成熟的算法,帮你找到最合适的穿搭。不信?下面一起来深入了解“滴搭”背后的算法。 作为一名工程师,每天与代码打交…

Linux下搭建 kafka集群 + zookeeper集群部署 安装、启动、停止

文章目录一、环境部署总览1. 软件版本选型2. 服务器软件部署总览二、软件部署手册2.1. JDK2.2. kafka2.3. Kafka Eagle2.4. mysql2.5. zookeeper2.6. maven三、kafka集群部署3.1. 启动zk集群3.2. 启动kafka集群3.3. 启动Kafka Eagle一、环境部署总览 1. 软件版本选型 软件版本…

刷爆了!GitHub标星1.6W,这个 Python 项目太实用!

GitHub上,一份用Python开发的12306 购票助手火了!这个用 Python 开发的 12306 购票助手,已经有 1.6w star,作者也一直在维护。它实现了自动打码,自动登录,捡漏,候补等功能。用 Python 帮你抢票&…

flexcell控件 许可证信息没有找到_报表控件 ActiveReports 全面迎来 .Net Core 时代

报表控件ActiveReports全面迎来 .Net Core 时代!一键创建 .Net Core MVC 项目近期,葡萄城报表控件ActiveReports V14.0 正式发布,全面支持 .NET Core平台。同时,在本次更新中 ActiveReports的桌面报表设计器UI得以全面增强&#x…