Alios Things的Flash划分规则
摘要:?為了方便大家移植Alios Things,本文給出了關(guān)于Alios Things Flash劃分規(guī)則,及注意事項。
Alios Things簡介
AliOS Things發(fā)布于2017年杭州云棲大會, 是 AliOS 家族旗下的、面向IoT領(lǐng)域的、高可伸縮的物聯(lián)網(wǎng)操作系統(tǒng),于2017年10月20號宣布在github上開源;具體介紹請點擊鏈接:https://github.com/alibaba/AliOS-Things/blob/master/README-zh.md
本文主要介紹Alios的flash劃分規(guī)則,方便大家開發(fā)移植,如有疑問,歡迎留言。
1. 需求簡介
AliOS Things 由于功能需要,維護(hù)了一張flash分區(qū)表,這張表包括bootloader區(qū)、Application區(qū)、OTA TMP區(qū)以及parameters區(qū),如下圖:
上圖的分區(qū)的簡介:
| Bootloader區(qū) | 存儲bootloader固件,引導(dǎo)啟動整個系統(tǒng),有些支持OTA代碼copy等 |
| Application區(qū) | 當(dāng)原地升級時,此分區(qū)為APP程序運(yùn)行區(qū);當(dāng)乒乓升級(A,B分區(qū))時,此分區(qū)為APP程序運(yùn)行A區(qū),與APP程序運(yùn)行B區(qū)(OTA Tmp)交替存儲下載的固件并運(yùn)行對應(yīng)的程序。 |
| OTA Tmp區(qū) | 當(dāng)原地升級時,此分區(qū)用于存放OTA的下載固件;當(dāng)乒乓升級(A,B分區(qū))時,此分區(qū)為APP程序運(yùn)行B區(qū),與APP程序運(yùn)行A區(qū)(Application)交替存儲下載的固件并運(yùn)行對應(yīng)的程序。 |
| Parameters1區(qū) | OTA參數(shù)存儲區(qū) |
| Parameters2區(qū) | KV存儲區(qū) |
| Parameters3區(qū) | 用戶自定義(Mk3060,b_l475e兩個板子的KV存儲區(qū)) |
| Parameters4區(qū) | 安全相關(guān)的參數(shù)存儲區(qū) |
2. 分區(qū)大小劃分規(guī)則
Bootloader支持原地升級
原地升級flash大小劃分方法表:
| Bootloader區(qū) | 芯片F(xiàn)lash 起始地址 | bootloader跳轉(zhuǎn)地址與Flash起始地址差值 |
| Application區(qū) | Bootloader 跳轉(zhuǎn)地址 | 需要用戶根據(jù)實際情況自己評估Application的大小 |
| OTA Tmp 區(qū) | Application 分區(qū)結(jié)束地址 | 與Application盡量保持一致,如果支持差分可適當(dāng)小些,用戶需根據(jù)實際情況自己評估 |
| Parameters1區(qū) | OTA Tmp 分區(qū)結(jié)束地址 | 一般是4Kbytes |
| Parameters2區(qū) | Parameters1分區(qū)結(jié)束地址 | 一般是8Kbytes |
| Parameters3區(qū) | Parameters2分區(qū)結(jié)束地址 | 一般是4Kbytes |
| Parameters4區(qū) | Parameters3分區(qū)結(jié)束地址 | 一般是4Kbytes |
Bootloader 支持乒乓升級
乒乓升級flash大小劃分方法表:
| Bootloader區(qū) | 芯片F(xiàn)lash 起始地址 | bootloader跳轉(zhuǎn)地址與Flash起始地址差值 |
| Application區(qū) | Bootloader 跳轉(zhuǎn)地址1 | Bootloader跳轉(zhuǎn)地址2與bootloader跳轉(zhuǎn)地址1之間的差值(如果bootloader給出flash擦除范圍,以bootloader給出大小為準(zhǔn)) |
| OTA Tmp 區(qū) | Bootloader 跳轉(zhuǎn)地址2 | 與Application區(qū)大小一致 |
| Parameters1區(qū) | OTA Tmp 分區(qū)結(jié)束地址 | 一般是4Kbytes |
| Parameters2區(qū) | Parameters1分區(qū)結(jié)束地址 | 一般是8Kbytes |
| Parameters3區(qū) | Parameters2分區(qū)結(jié)束地址 | 一般是4Kbytes |
| Parameters4區(qū) | Parameters3分區(qū)結(jié)束地址 | 一般是4Kbytes |
注意:
3. 示例
根據(jù)以上的劃分原則,以esp8266 Flash大小為2Mbytes 升級空間為1024x1024模組為例劃分各分區(qū):
Bootloader信息:
Application區(qū)理論大小為:0x101000 – 0x1000 = 0x100000;
由文檔可知地址:0x1FC000 ~ 0x200000 為配置文件存儲區(qū),所以parameters1~parameters4 只能從0x1FC000向低地址劃分,即:
Parameters1 起始地址:0x1f6000 大小:0x1000
Parameters2 起始地址:0x1f7000 大小:0x2000
Parameters3 起始地址:0x1f9000 大小:0x1000
Parameters4 起始地址:0x1FA000 大小:0x1000
根據(jù)步驟3可知OTA Tmp區(qū)的范圍只能是parameters1 – bootloader跳轉(zhuǎn)地址2, 即:0x1f6000 - 0x101000 = 0xF5000; 由于是乒乓升級,application區(qū)的大小應(yīng)該和OTA Tmp區(qū)大小相等;
由以上4個步驟可完成整個分區(qū)表的劃分,具體可查看:aos/board/esp8266/board.c文件。
原文鏈接?
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Alios Things的Flash划分规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云 x 蒙牛 | 打通数据孤岛,基于
- 下一篇: 杭州云栖大会阿里云放大招,8K远程医疗会