中移ML307Y-DL(4G Cat1,C-SDK,OpenCPU)硬件编译与下载(二)编译SDK

需要完整资料,请联系王正伟:13959192997(加V)

 2、编译SDK

 (1)目录结构

 首先,我们进入SDK的文件目录,介绍一下目录结构

图片

(2)解压并拷贝工程

在上一级目录中创建一个Projects目录,用于存放开发工程目录以及一系列开发工具,解压CODE_AP_V4100LB10004R00C0016.rar文件到Projects目录下,使用vscode打开文件工程文件夹。

图片

 (3)编译环境

本工程编译所需环境包含,python(不低于3.7版本)、Cmake(不低于3.20.6) 、Ninja 、RISC-V工具链

但无需担心,本工程提供了一种免安装环境,当然你也可以手动添加配置环境的方式,但建议使用免安装环境。

下面我们介绍免安装环境编译

打开(ML307Y-DL\工具软件\4100免安装环境WIN&LINUX)文件夹,解压prebuilts.zip,将解压出的prebuilts文件夹复制到工程目录中的buildtools目录下

图片

 接下来,我们就可以通过命令编译工程了。

这里我们也可以将prebuilts文件夹放在我们电脑的其他目录,可以通过工程中的set_prebuilts_environment.bat脚本更改环境变量,假设我们将prebuilts文件夹放置在D:\prebuilts,步骤如下。

①修改set_prebuilts_environment.bat 中 prebuilts_path 的值为 D:\prebuilts。

②运行set_prebuilts_environment.bat,会在用户环境变量中设置一个名为XY4100PREBUILTS 值为 D:\prebuilts 的变量。注意需要关闭并重新启动命令行,才能使命令行上下文中获取到该用户环境变量的修改。

③此后正常使用xybuild.bat来进行编译。

编译时,如果用户环境变量XY4100PREBUILTS存在并且值对应一个存在的路径,则使用该路径中的编译环境,否则使用默认的buildtools\prebuilts中的编译环境。

图片
图片

 (4)编译命令

① 编译脚本和参数

 SDK 支持windows环境和linux环境下编译,

 windows环境下使用SDK目录中的xybuild.bat 脚本进行编译,

 linux 环境下使用xybuild.sh 脚本进行编译。

 编译脚本支持参数传入,参数可以指定芯片类型,工程类型和自定义宏等。

②以windows 环境为例进行参数说明。

图片

  operation为必选参数。支持的操作及定义如下表

operation定义
allSDK 全编译
apap 核固件单编
ap_boot二级boot单编
clean/clear清除编译结果
clean_lib_src清除已封库的源文件

一般使用all、clean/clear即可。

 -v: 可选参数,芯片类型,编译时需指定。支持的类型有XY4100LC、XY4100LD和XY4100A,未指定时默认芯片类型为XY4100LC。

 -p: 可选参数,工程类型,编译时需指定,支持的类型有default, driver_demo和product_demo,未指定时默认工程类型为default。

 -D: 可选参数,传入自定义宏,以键值对的方式,支持传入多个自定义宏。 以上方式对linux环境下编译脚本同样有效,使用方式同windows,将xybuild.bat 修改为 xybuild.sh即可

(5)编译工程

在vscode中打开集成终端,由于我们要编译的是ML307Y-DL,于是我们的-v选项就选择XY4100LD,编译默认的default程序。

图片
图片
图片

 执行到这里说明就编译成功了,编译生成的文件在build目录下的app目录中。

(6)编译常见问题

①LOG 打印语句内容丢失

 SDK 编译时,为了减少明文打印内容的FLASH开销,使用了动态log机制,会在编译前对打印LOG进行预处理。

 进而必须等编译自动结束后才能恢复源码的中LOG内容,期间若认为中断编译过程,会造成源码中LOG打印相关语句内容丢失。

 万一遇到编译被中断造成的LOG语句信息丢失,一个补救措施是,执行xybuild.bat restore 进行 LOG 打印内容的恢复,或者直接重新编译,后台也会自动恢复。

②audio 编译报错

常见如报错信息如下图,找不到bits/c++config.h,实际上include搜索列表中存在包含bits/c++config.h 的路径。

图片

 根本原因是windows文件路径最大长度是260个字符。 常见两种解决方法:

 可以缩短工程目录来快速解决该问题,例如直接将工程目录放在磁盘根目录

 将prebuilts 拷贝到路径较短的目录下,比如D:\prebuilts,步骤见编译环境最后一栏。

③FLASH overflowed 编译报错

编译链接时,若代码段总大小超过FLASH代码段分区,则会发生FLASH overflowed编译报错。

如下图,根据编译错误提示,代码段超出67608字节。

图片

 当出现内存不足时,可以将flash上的代码移动到psram上,参考_cmake 编译框架使用指导.docx,原因是非flash上运行的代码会经过压缩后存储到flash。

 本章完结,原创不易,转载请收下留情,加如下图宣传:

1

 需要完整资料,请联系王正伟:13959192997(加V)