LuatOS-SoC通用固件格式soc#

LuatOS-SoC将来会适配非常多的SoC/MCU芯片, 而各种设备的刷机格式各不相同,有必要定义一个统一的对外格式

这里称之为 soc 格式, 后缀选定为 soc, 实际内容为info.json及多个固件文件的压缩包,zip或7z均可

关于固件的定义#

  • 原始固件, 厂商提供的固件格式, 以fls/pac/img等命名, 使用厂商提供的工具进行刷机

  • SoC固件, 在原始固件的基础上,添加info.json, script.bin 等LuatOS-SoC特有的文件,并做成压缩包, 使用LuaTools/LuatIDE刷机

SoC固件的内容#

  • [必选]包含的文件 info.json

  • [可选]脚本数据存储文件 script.bin, 使用LuaDB v2格式存储

  • [必选]原始固件,以不同SoC芯片为准

info.json的内容#

{
    "version" : 1, // 固件格式版本号
    "chip" : {     // 芯片本身的特性
        "type" : "air101", // air101
        "ram"  :  {       // 内存信息
            "total" : 288, // 总内存信息
            "sys" : 64,    // 系统内存大小
            "lua" : 176    // Lua虚拟机可用内存
        }
    },
    "bl": {// bl信息
    	"file" : "bootloader.bin"// bl文件
    },
	"partition": {// 分区表信息
    	"file" : "partition-table.bin"// 分区表文件
    },
    "rom": {        // rom信息
        "file" : "AIR101.fls",// 下载固件
        "fs" : {    // 文件系统信息
            "script" : {
                "offset" : "81E0000",// 偏移
                "size" : 112,   // 大小
                "type" : "luadb"// 文件系统格式
            }
        },
        "version-core": "v0007",// 主库代码版本
        "version-bsp" : "v0004",// bsp版本
        "mark" : "default",
        "build" : {
            "build_at" : "",
            "build_by" : "",
            "build_host" : "",
            "build_system" : ""
        }
    },
    "script" : {// 脚本信息
        "file" : "script.bin",// 脚本文件
        "lua" : "5.3",// lua版本
        "bitw" : 32,
        "use-luac" : true,
        "use-debug" : true,
    },
    "fs" : {
		"total_len" : 448,
		"format_len" : "1000"
	},
    "user" : {
        "project" : "",
        "version" : "",
        "log_br" : "921600"// 默认打印波特率
    },
    "download" : {
        "bl_addr" : "ffffffff",// bl地址
		"partition_addr" : "ffffffff",// 分区表地址
		"core_addr" : "0x00000000",// 固件地址
		"app_addr" : "0x00000000",// APP地址
		"script_addr" : "0x81E0000",// 文件系统地址
        "nvm_addr" : "00000000",// nvm地址
		"fs_addr" : "00390000",// fs地址
        "force_br" : "2M",// 默认下载波特率
        "extra_param" : "002f0200"
	}
}