赞
踩
上篇文章,我们介绍了海思Hi3861L的环境搭建,那这篇文章,我们就开始SDK的编译与下载吧。
准备:
SDK:https://download.csdn.net/download/qq_26226375/88245580
开发环境:海思Hi3861L开发一-环境搭建_t_guest的博客-CSDN博客
将SDK解压后,会出现如下目录:
这里介绍一下SDK目录
目录 | 说明 |
app | 应用层代码(其中包含demo程序,即参考实例) |
boot | Flash bootloader代码 |
build | SDK构建所需的库文件、链接文件、配置文件 |
components | SDK组件目录 |
config | SDK系统配置文件 |
documents | 文档目录(包括:SDK说明文档) |
incllude | API头文件存放目录 |
output | 编译时生成的目标文件与中间文件(包括:库文件、打印LOG、生成的二进制文件等) |
platform | SDK平台相关的文件(包括:镜像、内核驱动模块等) |
third_party | 开源第三方软件目录 |
tools | SDK提供的Linux系统和windows系统上使用的工具(包括:NV制作工具、签名工具、Menuconfig等) |
SConstruct | SCons编译脚本 |
build.sh | 启动编译脚本,同时支持“sh build.sh menuconfig”进行客制化配置 |
build_patch.sh | 解压开源源码包和patch文件编译脚本 |
Makefile | 支持makefile编译,使用“make”或“make all”启动编译 |
non_factory.mk | 非厂测版本编译脚本 |
factory.mk | 厂测版本编译脚本 |
Hi3861原生SDK支持带参数的编译,以此来满足各方面的需求。其中最简单的就是在SDK根目录下执行“./build.sh”来进行编译。参数编译以表格形式展示。
参数 | 实例 | 说明 |
无 | ./build,sh | 启动增量编译,默认编译app工程是demo |
all | ./build.sh all | 启动全量编译,默认编译app工程是demo |
app工程目录名称 | ./build.sh demo | 参数输入app工程目录名称,启动增量编译,编译app工程是所输入的工程目录名称。默认是demo工程 |
clean | ./build.sh clean | 清理编译过程中生成的中间文件和烧写文件,不清除path打包后生成的文件 |
all_clean | ./build.sh all_clean | 清理所有编译过程中生成的中间文件和烧写文件,包括path打包生成的文件 |
menuconfig | ./build.sh menuconfig | 启动menuconfig图形配置界面 |
注: 如果执行“./build.sh”提示无权限,可执行命令“chmod +x build.sh”添加执行权限,或执行“sh ./build.sh”
编译结果输出到“output\bin”目录下,以编译demo结果为例:
文件名 | 说明 |
Hi3861_boot_signed.bin | 带签名的bootloader文件 |
Hi3861_boot_signed_B.bin | 带签名的bootloader备份文件 |
Hi3861_demo.asm | Kernel asm文件 |
Hi3861_demo.map | 工程map文件 |
Hi3861_demo.out | Kernel输出文件 |
Hi3861_demo_allinone.bin | 产线工装烧写文件(已经包含独立烧写程序和loader程序) |
Hi3861_demo_burn.bin | 烧写文件,烧写程序建议使用“Hi3861_demo_allinone.bin” |
Hi3861_demo_flash_boot_ota.bin | Flash Boot升级文件 |
Hi3861_demo_ota.bin | OTA升级文件 |
Hi3861_demo_vercfg.bin | Kernel和Boot的版本号文件 |
Hi3861_loader_signed.bin | 烧写工具使用的加载文件,烧写程序建议使用“Hi3861_demo_allinone.bin” |
平时烧录使用“Hi3861_demo_allinone.bin”文件。
运行“sh build.sh menuconfig”,脚本会启动Menuconfig程序,用户可以通过Menuconfig对编译和系统功能进行配置。SDK集成了默认配置,但建议用户首次运行时进行相应配置,从而减少因为配置原因引起的问题。
Menuconfig操作说明如下图:
快捷键 | 说明 |
空格,回车 | 选中,反选 |
ESC | 返回上级菜单,退出界面 |
S | 保存配置 |
/ | 跳转到搜索 |
F | 显示帮助菜单 |
Q | 退出界面 |
Menuconfig菜单说明
菜单 | 配置项 | 说明 |
Target Chip | Hi3861 | 芯片类型 |
Hi3861L | ||
Security Settings | Signature Algorithm for bootloader and upgrade file | Boot以及升级文件签名方式。支持RSA V15、RSA PSS、ESS、SHA256签名方式 |
boot ver(value form 0 to 16 | 支持Boot版本号设置 | |
kernel ver(value form 0 to 48) | 支持Kernel版本号设置。 | |
TEE HUKS support | 支持TEE HUKS接口。 | |
TEE HUKS demo support | 支持TEE HUKS DEMO AT命令,详见 《Hi3861V100/Hi3861LV100 AT命令 使用 指南》安全存储相关AT指令章节。 | |
FLASH ENCRPT suppot | 支持Flash安全加密 | |
Factory Test Settings | factory test enable | 使能工厂产测,使能产测功能需要配置 |
UART | 串口方式产测 | |
SDIO | SDIO方式产测(SDIO模组+产测底板3518: 选择SDIO方式产测) | |
BSP Settings | i2c driver support | 支持I2C驱动。 |
i2s driver support | 支持I2S驱动 | |
SPI driver support | 支持SPI驱动 | |
DMA driver support | 支持DMA驱动 | |
SDIO driver support | 支持SDIO驱动 | |
SPI support DMA | SPI驱动支持DMA传输模式 | |
UART support DMA | UART驱动支持DMA传输模式 | |
PWM driver support | 支持PWM驱动 | |
PWM hold after reboot | 支持软复位后维持PWM状态 | |
Enable AT command | 支持AT命令 | |
Enable file system | 支持文件系统 | |
Enable uart0 IO mux config | 支持UART0 | |
Enable uart1 IO mux config | 支持UART1 | |
Enable uart2 IO mux config | 支持UART2 | |
WiFi Settings | Enable WPS | WPA支持WPS(WIFI Protected Setup)。 支持通过pin码和PBC连接网络。 |
Authentication Option of Radio Parameters | 选择验证方式,支持CE版本、FCC版本配置版本验证。 | |
Enable MESH | 支持MESH功能。 | |
Enable WPA3 | WPA支持WPA3 | |
Enable quick send mode | 开启快速发包模式(仅Hi3861支持)。开启 后,将导致其它部分功能默认不可用,包 括: ● 不支持mesh、wps功能; ● 不支持升级功能; ● APP中默认不初始化文件系统、系统低功 耗; ● 安全启动仅校验boot,不校验kernel,不 支持FLASH加密。 注意:如果需要达到50ms快速发包的要求, 需要配置efuse项uart_halt_interval的值为 2,以缩短启动时间。请参见《Hi3861V100 /Hi3861LV100 EFUSE 使用指南》结构章节 对该Efuse项的描述。 | |
Enable mgmt frame size 1500 | 支持管理帧长度1500配置。 | |
Third Party library | cJson support | 支持CJSON库编译 |
COAP support | 支持libcoap库编译 | |
MQTT support | 支持MQTT库编译 | |
iperf support | 支持iperf库编译 | |
Lwip Settings | Enable Option Router (Option3) | 支持设置网关地址选项。 |
Enable DHCP Hostname (Option12) | 支持设置/获取netif主机名 | |
Enable DHCP Vendorname (Option60) | 支持设置/获取供应商类别标识符信息 | |
Lwip Support Lowpower Mode | 配置LwIP支持低功耗模式(低功耗模式需要配置)。 | |
OTA Settings | compression ota support | 支持压缩升级 |
dual-partition ota support | 支持双分区升级 | |
Link Settings | Hilink support | 支持Hilink连接 |
Debug Log Settings | Enable debug log | 支持debug日志模式 |
注:OTA settings建议优先选择压缩升级模式,其相比双分区升级,镜像可以空间更大,默认多250KB+。如果选择双分区升级,需要考虑后续功能扩展情况,为后续的升级镜像预留足够空间,升级镜像不支持压缩升级和双分区升级混用。
指令 | 说明 |
make或make all | 编译整个工程 |
make clean | 清空工程的编译文件(不清楚patch打包后生成的文件) |
make factory;make clean_factory | 编译产测程序 |
make all_clean | 清除整个工程的编译文件(包括patch打包后生成的文件) |
文件 | 文件说明 |
顶层Makefile | 编译入口 |
factory.mk | 编译产测程序的makefile |
non_factory.mk | 编译正常程序的makefile |
模块路径/Makefile | 模块编译脚本 |
模块路径/ module_config.mk | 模块编译配置 |
build\make_scripts \config.mk | 公共编译配置,主要包含: 1.编译模块配置 2.各模块路径配置 3.公共头文件配置 4.公共编译宏配置 5.公共编译选项 6.链接库 7.链接库路径 8.中间文件输出路径 |
build\make_scripts \usr.mk | 公共编译配置,一般由用户配置: 1.app名称 2.芯片配置 3.编译器配置 4.编译结果输出路径 5.用户库 6.用户库路径 |
build\make_scripts \config_lib_factory.m k build\make_scripts \config_lib_non_fact ory.mk | 产测和正常程序链接的库及库路径 |
build\make_scripts \lib.mk | 目标文件、库文件的生成 |
build\make_scripts \module.mk | 各个模块的Makefile的原始备份(新增模块时可直接拷 贝至新模块下作为Makefile) |
以组件名XXX为例进行说明,一下说明为了通用性,做了一些约束说明,以下方法若不适用,可以通过调整组件结构适应方法,也可以自行修改makefile以适应组件编译方式:
这部分跟之前文章没描述是相同的,这里直接引用:鸿蒙Hi3861学习二-程序烧录与日志输出_t_guest的博客-CSDN博客
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。