Tina编译与烧写
6 Tina编译打包
6.1 概述
6.2 编译系统
(1) source build/envsetup.sh
(2) lunch
(3) make [-jN]
(4) pack [-d]
其中,
步骤(1)建立编译环境,导出编译变量。
步骤(2)提示需要选择你想要编译的方案。
步骤(3)参数N为并行编译进程数量,依赖编译服务器CPU核心数,如 4 核PC,可"make -j4"
步骤(4)打包固件,-d参数使生成固件包串口信息转到tf卡座输出。
编译完成后系统镜像会打包在out/<board>/目录下
6.3 编译boot
命令 | 命令有效目录 | 作用 |
---|---|---|
mboot | tina下任意目录 | 编译boot0和uboot |
mboot0 | tina下任意目录 | 编译boot0 |
muboot | tina下任意目录 | 编译uboot |
6.4 编译内核
命令 | 命令有效目录 | 作用 |
---|---|---|
mkernel | tina下任意目录 | 编译内核 |
6.5 编译arisc
arisc是AW平台对cpus代码环境的代称,主要功能是负责休眠,关机等底层操作。它包含 cpus运行所需的驱动,库及工具链等,编译产生scp.bin,然后打包在Tina镜像中,有boot- loader在启动时加载到cpus域运行。
Tina中提供了如下与arisc相关的跳转、编译命令
命令 | 命令有效目录 | 作用 |
---|---|---|
carisc | tina下任意目录 | 跳转到cpus代码工程目录 |
mkarisc | tina下任意目录 | 编译cpus代码 |
在Tina中,编译arisc代码有两种方式,如下:
第一种方式,跳转到arisc代码路径下,使用make编译
arisc代码库具有独立的工具链和构建体系,因此对arisc代码的编译,也可以cd到对应的路径 下,执行make命令。但需注意,此时需要手动将生成的scp.bin文件拷贝到SDK的bin文件 路径下,覆盖对应的文件(一般路径是tina/device/config/chips/${平台名}/bin)。
操作如下,
step1
使用carisc或cd命令跳转到arisc代码环境下,一般为tina/lichee/arisc/ar100s。
step2
生成必要的配置。在arch/configs/下,存在许多defconfig默认配置文件,可根据AXP型号选择使用,例如make sun50iw10p1_axp803_defconfig。此操作将会在arisc根目录生成.config。
step3
修改默认配置,可使用make menuconfig。此操作会生成配置菜单,按需选择配置即可,该操作会修改.config。如需重新使用默认配置,重新执行step2即可。
step4
使用make命令编译
step5
将scp.bin拷贝到Tina的bin目录,即cbin可跳转的目录即可。如/tina/device/config/chips/r818/binstep6
若需清理工程,可使用make clean
step7
如需提交defconfig配置修改,可使用make savedefconfig命令。此命令会根据.config在arisc根目录生成 defconfig。将defconfig拷贝到arch/configs/下,覆盖对应配置文件即可。
注意:
一般来说,arisc执行的功能较为底层,多与休眠,关机等操作相关,对稳定性要求较高。我们不 建议客户自己修改任何相关配置和代码,如必须,请与我司联系或执行足够的稳定性测试。
第二种方式,使用mkarisc命令
如上述方法所述,Tina为了解决arisc编译后还需手动拷贝的问题,Tina提供了这个快捷命令 mkarisc。需要指出的是:目前只支持R818、MR813的arisc代码编译。
操作如下,较为简单
step1
配置tina环境,如soure build/envsetup.sh, lunch等操作。
step2
使用mkarisc编译即可或直接编译Tina,在编译Tina时,也会自动调用mkarisc命令。
注意:
使用mkarisc命令编译时,会自动读取board.dts获取AXP型号,然后使用对应的默认配置文 件编译。如board.dts中指定使用“x-powers,axp803”时,mkarsic命令会使用arisc工程环 境下的sun50iw10p1_axp803_defconfig配置文件编译。此时,若您需要修改该arisc配置, 只能先修改该配置文件后编译,除此外不接受其他配置修改的方式。
6.6 编译E907固件(V85x平台异构AMP核)
E907是V85x平台AMP CPU的代称,其主要功能是提供通用算力补充、辅助Linux实现快起 等。它包含E907运行所需的驱动、库及工具链等,编译产生riscv.fex,打包到Tina镜像中, 由bootloader在启动时加载到RISC-V核上运行。
在Tina SDK中,编译E907 RISCV代码如下:
E907 RISCV 代码库具有独立的工具链和构建体系,因此对 E907 固件的编译,也可以跳 转到对应的路径下,执行命令。但需注意,此时需要手动将生成的 melis30.elf 文件拷贝 到 SDK 的 bin 文件路径下,覆盖对应的文件(一般路径是 device/config/chips/${平台 名}/configs/default/riscv.fex)。
操作如下,
step1
使用cd命令跳转到e907代码环境下,一般为rtos-dev/lichee/melis-v3.0/source
step2
source melis-env.sh
step3
lunch v853-e907-ver1-board
step4
make menuconfig
step5
make -j
step6
如需减少存储空间,可裁剪调试信息,在melis source目录执行:riscv64-unknown-elf-strip ekernel/melis30.elf
step7
拷贝并重命名成riscv.fex替换掉tina/device/config/chips/v853/configs/default目录下的riscv.fex
cp ekernel/melis30.elf /home/xxx/tina/device/config/chips/v853/configs/default/riscv.fex
step8
Tina系统目录执行打包命令pack
6.7 重编应用
请确保进行过一次固件的编译,确保SDK基础已经编译,才能单独重编应用包。重编应用包应用场景一般为: 只修改了应用,不想重新烧写固件,只需要安装应用安装包即可 。请确保在编译前已加载tina环境:
6.7.1 方法一
当在应用包的目录(包括其子目录)中,可执行
示例:假设软件包路径为:tina/package/utils/rwcheck,则:
编译出应用安装包保存路径为:
6.7.2 方法二
当在tina的根目录,可执行:
$ make <应用包的路径>/clean,==>清空应用包临时文件
$ make <应用包的路径>/install,==>编译软件包
或者
$ make <应用包的路径>/{clean,install},==>先清空临时文件再编译
示例:假设软件包的路径为:tina/package/utils/rwcheck,则:
6.8 其他命令
命令 | 命令有效目录 | 作用 |
---|---|---|
make | tina根目录 编译整个sdk | |
make | menuconfig tina根目录 启动软件包配置界面 | |
make | kernel_menuconfig tina根目录 启动内核配置界面 | |
mkarisc | tina下任意目录 编译cpus源码,根据AXP型号选择对应的默认配置 | |
printfconfig | tina下任意目录 打印当前SDK的配置 | |
croot | tina下任意目录 快速切换到tina根目录 | |
cconfigs | tina下任意目录 快速切换到方案的bsp配置目录 | |
cdevice | tina下任意目录 快速切换到方案配置目录 | |
carisc | tina下任意目录 快速切换到cpus代码目录 | |
cgeneric | tina下任意目录 快速切换到方案generic目录 | |
cout | tina下任意目录 快速切换到方案的输出目录 | |
cboot | tina下任意目录 快速切换到bootloader目录 | |
cgrep | tina下任意目录 在c/c++/h文件中查找字符串 | |
minstall | path/to/package/ tina根目录 编译并安装软件包 | |
mclean | path/to/package/ tina根目录 clean软件包 | |
mm [-B] | 软件包目录 编译软件包,-B指编译前先clean | |
pack | tina根目录 打包固件 | |
m | tina下任意目录 make的快捷命令,编译整个sdk | |
p | tina下任意目录 pack的快捷命令,打包固件 |
7 Tina系统烧写
7.1 概述
本章节主要介绍如何将构建完成的镜像文件(image)烧写并运行在硬件设备上的流程。
SDK中的烧录工具不再更新,后续会删除,请优先选择从全志客户服务平台下载最新烧录工具。
windows工具均集成在APST中,下载安装APST即可,APST的工具均自带文档。
7.2 烧录工具
Tina提供的几种镜像烧写工具介绍如表所示,用户可以选择合适的烧写方式进行烧写。
工具 | 运行系统 | 描述 |
---|---|---|
PhoenixSuit | windows | 分分区升级及整个固件升级工具 |
PhoenixCard | windows | 卡固件制作工具 |
PhoenixUSBpro | windows | 量产升级工具,支持USB一拖 8 烧录 |
LiveSuit | ubuntu | 固件升级工具 |
对于ubuntu:
- 64bit主机使用LiveSuitV306_For_Linux64.zip。
- 32bit主机使用LiveSuitV306_For_Linux32.zip。
具体烧录工具和使用说明,请到全志客户服务平台下载。
7.3 进入烧录模式.
设备需进入烧录模式,以下几种情况会进入烧录模式:
- BROM无法读取到boot0,例如新换的flash不包含数据,或者上电时短路flash阻断通信。
- 在串口中按 2 进入烧录。即,在串口工具输出框中,按住键盘的’2’,不停输出字符’2’,上电启动。boot0检测到此字符,会跳到烧录模式。
- 在uboot控制台,执行efex。
- 在linux控制台,执行reboot efex。
- adb可用的情况下,可使用adb shell reboot efex,或点击烧录工具上的“立即烧录”按钮。
- 当完整配置[fel_key]下fel_key_max和fel_key_min时,按下键值在范围内按键,之后上电。
- 当板子有FEL按键时,按住FEL按键上电。
- 制作特殊的启动卡,从卡启动再进入烧录模式。