Air103|Air105|自定义固件|在线云编译|本地编译|Windows|Linux|SoC|Git|xmake|luat_conf_bsp|elf|FLS|(1)、Air103/Air105编译

目录

一、在线云编译

​二、本地编译

Windows平台用户

如果是Air103

本机为(Air103):

如果是Air105

本机为(Air105):

定制固件里的库

​编译

执行

生成过程及log文件解析

1、生成elf格式

2、按照设置文件设定的脚本区空间进行分配

3、Info.json:空间分配及版本等基本信息输出

6、烧写及运行

Linux平台用户

7-zip

执行代码

导入可执行文件路径

准备项目

如果是Air103

编译

LuatOS-SoC通用固件格式soc介绍

关于固件的定义

SoC固件的内容

info.json的内容示例


通常不需要这份文档,这是用于自行扩展固件的高级文档。

如果想将已有的库添加到固件中,或者生成自定义固件,可遵循以下步骤。

一、在线云编译

使用合宙的在线编译平台,高效,快速,不需要配置本地环境,编译完成后能够下载.SOC固件成品。

首选推荐使用。

劣势:需要联网,无法新增库。

地址:https://luatos.com/zh_cn/page/home.html

二、本地编译

劣势:操作繁琐,首次使用需要配置本地环境,不同主控芯片的编译方法差异较大。

优势:体验最新版固件,添加自定义工具或库,先期工具配置完成后,无需联网。

准备环境

Windows平台用户

装好7-zip,建议保持默认文件夹

装好xmake,建议保持默认文件夹

自行下载平头哥编译器

由于官网要登陆,如果不想登录,可以直接点击该链接下载

解压,文件夹重命名为csky-elfabiv2-tools-mingw-minilibc,放到E盘

拉取最新版固件及主库并在本地保存为同级目录:

Git clone LuatOS: Powerful embedded Lua Engine for IoT devices, with many components and low memory requirements (16K RAM, 128K Flash)

Git clone luatos-soc-air101: 合宙Air101/Air103固件源代码, 适用于Air101/Air103/w806/w800/w801等基于xt804内核的芯片

如果是Air103

在资源管理器的地址栏输入(使用默认工具打开)或者在浏览器的地址栏输入custom定制头文件:

本机为(Air103):

G:\bsp\Air103\luatos-soc-air101\app\port\luat_conf_bsp.h

将#define AIR101改为#define AIR103,保存。

如果是Air105

检查点, 路径正确的情况下, 以下文件路径必存在, 找不到就肯定是命名问题, 手动添加是徒劳的 。

本机为(Air105):

G:\bsp\Air105\soc\LuatOS\lua\src\src\lgc.c


G:\bsp\Air105\soc\luatos-soc-air105\application\include\luat_conf_bsp.h(编译配置文件)

定制固件里的库

打开Air103:.\app/port/luat_conf_bsp.h

或Air105:.\application\include\luat_conf_bsp.h

按需注释或取消注释。

注意,如果固件放不下,会编译失败。

编译

资源管理器中进入103仓库目录,如:G:\bsp\Air103\luatos-soc-air101

 在地址栏中输入:CMD 回车,回在该路径下打开命令行CMD窗口。

编译前建议清除build目录;

执行

xmake f -c -v &&xmake

如果执行xmake提示: updating repositories .. error:

则说明xmake的repositories有冲突,git stash无法解决,需要删除repositories目录。

执行xmake时会自动拉取最新的repositories。

本机位于:

正常编译即可,生成的文件会在build/out/目录

生成过程及log文件解析

1、生成elf格式

ELF代表Executable and Linkable Forma,是一种对可执行文件、目标文件和库使用的文件格式,跟Windows下的PE文件格式类似,16进制形式。

   text    data     bss     dec     hex filename

 585972       0  126956  712928   ae0e0 build/out/AIR103.elf

generate normal image completed.

generate normal image completed.

2、按照设置文件设定的脚本区空间进行分配

AIR10X_FLASH_FS_REGION_SIZE 304

3、Info.json:空间分配及版本等基本信息输出

{"download":{"user_addr":"0x00000000","force_br":"2M","core_addr":"0x00000000","app_addr":"0x00000000","script_addr":"80B0000"},"user":{"project":"","version":"","log_br":"921600"},"version":1,"chip":{"type":"air103","ram":{"sys":64,"lua":176,"total":288}},"rom":{"version-bsp":"v0004","fs":{"script":{"size":304,"offset":"80B0000","type":"luadb"}},"file":"AIR103.fls","build":{"build_system":"","build_host":"","build_at":"","build_by":""},"mark":"default","version-core":"v0007"},"script":{"use-luac":true,"file":"script.img","lua":"5.3","bitw":32,"use-debug":true}}

4、fls文件压缩(使用7-ZIP)

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive:

4 files, 750777 bytes (734 KiB)

5、打包

生成soc: LuatOS-SoC_V0015_AIR103.soc,文件大小:443469 bytes (434 KiB)

Creating archive: LuatOS-SoC_V0015_AIR103.7z

Add new data to archive: 4 files, 750777 bytes (734 KiB)

Files read from disk: 4

Archive size: 443469 bytes (434 KiB)

Everything is Ok

[100%]: build ok!

6、烧写及运行

采用luatools烧写入air103,具体方法参考官方文档,不赘述。

Linux平台用户

装好7-zip与xmake,各个平台装法不一样(apt/yum/pacman),自己搜吧

7-zip

Download

https://www.7-zip.org/a/7z2107-linux-x64.tar.xz


 

执行代码

cd opt

mkdir 7z

wget https://www.7-zip.org/a/7z2107-linux-x64.tar.xz

tar –xf 7z2107-linux-x64.tar.xz

导入可执行文件路径

1、直接用export命令

#export PATH=$PATH: /opt/7z

查看是否已经设好,可用命令export查看:

2、修改profile文件:

#vi /etc/profile

在里面加入:

export PATH="$PATH: /opt/7z "

export PATH=$PATH:/opt/csky-elfabiv2-tools-mingw-minilibc/bin

#source /etc/profile

需要重新注销系统才能生效,最后可以通过echo命令测试一下: # echo $PATH 看看输出里面是不是已经有了 /opt/7z这个路径了。

cd /root/luatos/luatos-soc-air101

下载官方的wm_tool(linux版本)至:./tools/xt804/wm_tool

chmod -R 777 ./tools/xt804/wm_tool #取得root权限

自行下载平头哥编译器

由于官网要登陆,如果不想登录,可以直接点击该链接下载

解压,文件夹重命名为csky-elfabiv2-tools,放到/opt

准备项目

将LuatOS主仓库clone到适当位置

git clone https://gitee.com/openLuat/LuatOS.git

再将Air101项目clone到与LuatOS主仓库的同级目录

git clone https://gitee.com/openLuat/luatos-soc-air101.git

如果是Air103

打开app/port/luat_conf_bsp.h,将#define AIR101改为#define AIR103,保存

定制固件里的库

打开app/port/luat_conf_bsp.h,按需注释或取消注释。注意,如果固件放不下,会编译失败。

vim /root/luatos/luatos-soc-air101/app/port/luat_conf_bsp.h

编译

进入101仓库目录,编译即可,生成的文件会在build/out/目录

> cd /root/luatos/luatos-soc-air101

>vim /root/luatos/luatos-soc-air101/app/port/luat_conf_bsp.h

> xmake --root

LuatOS-SoC通用固件格式soc介绍

各种设备的刷机格式各不相同,有必要定义一个统一的对外格式,LuatOS统一称之为 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"
}
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值