本文描述的是Air640W固件的一次性刷机所需要的格式
外层结构为zip 或 7zip, 具体待定
里层文件有
- rominfo.json # [必] 固件信息描述文件
- luatos_w600_v0006.bin # [必] 底层固件文件
- luadb.bin # [选] 脚本文件,luadb 2.0格式
- disk.bin # [选] 文件系统分区
内容如下
{
"type" : "w600",
"luadb_offset" : 0x080A0000,
"luadb_size" : 64 * 1024,
"luaota_offset": 0x080B0000,
"luaota_size" : 64 * 1024,
"disk_offset" : 0x080C0000,
"disk_size" : 128 * 1024
}
0x08010000 -- RUN PARAM, 256字节, 不可控 0x08010100 -- RUN AREA, 对应 luatos_w600_v0006.bin 0x080A0000 -- LuaDB, 对应luadb.bin 0X080B0000 -- LuaOTA, 默认空白, 大小64kb 0X080C0000 -- FileSystem, 文件系统, 大小128kb 0x080F0000 -- 默认文件系统边界, 也是默认的UserParam区, 48kb, 考虑用上? 0x080FC000 -- 文件系统最远边界
makeimg的时候,按把RUN AREA(当前对应luatos_w600_v0006.bin)写入FLS.
所以, 把luadb/disk等区域, 按偏移量, 逐一附加到luatos_w600_v0006.bin文件末尾, 并在间歇内填充0
就能做出一个很大的RUN AREA, 欺骗secboot进行刷机
效果是:
对外提供的固件包是 压缩包(后缀为.air?), 刷机时, 自动合成FLS文件,进行一体化刷机
致命的限制: RUN AREA 的内容不可修改
什么不变呢?
OTA, disk 都不能放在 RUN AREA
解决方式: