需要完整资料,请联系王正伟: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 | 定义 |
| all | SDK 全编译 |
| ap | ap 核固件单编 |
| 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。
本章完结,原创不易,转载请收下留情,加如下图宣传:

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