LINUX安装和编译
📎 原始文档:https://www.kdocs.cn/l/cbscok3xXZfY LINUX安装和编译
Linux编译环境搭建流程概述
Linux编译工具链
从官网下载:https://doc.zh-jieli.com/Tools/zh-cn/other_info/index.html#id6
Linux后处理工具
从官网下载:https://doc.zh-jieli.com/Tools/zh-cn/other_info/index.html#id6
环境变量声明
可按照官网说明默认安装在/opt目录下。也可自行实现
Makefile描述的编译器路径是绝对路径,对应路径即可
Makefile与download脚本适配
Makefile修改Linux工具链路径
删减Makefile生成download脚本流程,避免覆盖自定义的download.sh脚本
添加自定义download.sh
701N-1.4.2版本-Linux环境搭建Demo
本Demo为本人个人的搭建流程,可参考
工具链下载与解压
下载编译工具链和打包工具链到linux上,解压后,可以更改为自定义目录
在Makefile编译处理时,可执行程序路径一一对应即可
Makefile修改
工具链路径参考修改如下:(用户修改为私有实际的绝对路径即可)
Makefile注释处理download.c,避免make时,覆盖自定义脚本:如图所示,删除圈住的代码
添加download.sh
在//cpu/br28/tools创建添加download.sh文件(不要忘记chmod添加可执行权限)
示例如下所示,适用于701-142版本,可直接拷贝使用。其中变量路径须修改为用户实际的绝对路径
#!/bin/sh
OBJDUMP="/root/jl_project/JL_Toolchain/pi32v2/bin/objdump"
OBJCOPY="/root/jl_project/JL_Toolchain/pi32v2/bin/objcopy"
OBJSIZEDUMP="/root/jl_project/JL_Toolchain/pi32v2/bin/objsizedump"
REMOVE_TAILING_ZEROS="/root/jl_project/jieli-build-tools/remove_tailing_zeros"
UFW_MAKER="/root/jl_project/jieli-build-tools/ufw_maker"
ISD_DOWNLOAD="/root/jl_project/jieli-build-tools/isd_download"
cd cpu/br28/tools
${OBJDUMP} -D -address-mask=0x1ffffff -print-dbg $1.elf > $1.lst
${OBJCOPY} -O binary -j .text $1.elf text.bin
${OBJCOPY} -O binary -j .data $1.elf data.bin
${OBJCOPY} -O binary -j .data_code $1.elf data_code.bin
${OBJCOPY} -O binary -j .overlay_aec $1.elf aeco.bin
${OBJCOPY} -O binary -j .overlay_wav $1.elf wavo.bin
${OBJCOPY} -O binary -j .overlay_ape $1.elf apeo.bin
${OBJCOPY} -O binary -j .overlay_flac $1.elf flaco.bin
${OBJCOPY} -O binary -j .overlay_m4a $1.elf m4ao.bin
${OBJCOPY} -O binary -j .overlay_amr $1.elf amro.bin
${OBJCOPY} -O binary -j .overlay_dts $1.elf dtso.bin
${OBJCOPY} -O binary -j .overlay_fm $1.elf fmo.bin
${OBJCOPY} -O binary -j .overlay_mp3 $1.elf mp3o.bin
${OBJCOPY} -O binary -j .overlay_wma $1.elf wmao.bin
${REMOVE_TAILING_ZEROS} -i aeco.bin -o aec.bin -mark ff
${REMOVE_TAILING_ZEROS} -i wavo.bin -o wav.bin -mark ff
${REMOVE_TAILING_ZEROS} -i apeo.bin -o ape.bin -mark ff
${REMOVE_TAILING_ZEROS} -i flaco.bin -o flac.bin -mark ff
${REMOVE_TAILING_ZEROS} -i m4ao.bin -o m4a.bin -mark ff
${REMOVE_TAILING_ZEROS} -i amro.bin -o amr.bin -mark ff
${REMOVE_TAILING_ZEROS} -i dtso.bin -o dts.bin -mark ff
${REMOVE_TAILING_ZEROS} -i fmo.bin -o fm.bin -mark ff
${REMOVE_TAILING_ZEROS} -i mp3o.bin -o mp3.bin -mark ff
${REMOVE_TAILING_ZEROS} -i wmao.bin -o wma.bin -mark ff
bank_files=
for i in $(seq 0 20)
do
${OBJCOPY} -O binary -j .overlay_bank$i $1.elf bank$i.bin
if [ ! -s bank$i.bin ]
then
break
fi
bank_files=$bank_files"bank$i.bin 0x0 "
done
echo $bank_files
${OBJDUMP} -section-headers -address-mask=0x1ffffff $1.elf
${OBJSIZEDUMP} -lite -skip-zero -enable-dbg-info $1.elf | sort -k 1 > symbol_tbl.txt
cat text.bin data.bin data_code.bin aec.bin wav.bin ape.bin flac.bin m4a.bin amr.bin dts.bin fm.bin mp3.bin wma.bin > app.bin
${ISD_DOWNLOAD} isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot uboot.boot -app app.bin -res tone.cfg cfg_tool.bin eq_cfg_hw.bin p11_code.bin -uboot_compress
${UFW_MAKER} -fw_to_ufw jl_isd.fw
cp jl_isd.ufw update.ufw
编译及打包生成最终下载固件
执行make后,最终在//cpu/br28/tools目录下生成update.ufw烧录文件
可视化SDK-Demo(以701N_leaudio_2.0P02)为例
工具链配置以及Makefile修改,同上,与701-142的Demo修改一致
注意项
- 要在Windows环境下,编译成功一次生成必要的配置Bin文件
- 执行make报错,则对于一些编译中间件文件,在Linux下要先清除objs目录。(rm -rf objs)
修改download.sh
相对于701-142的修改,音频流打包文件已经改为stream.bin(非可视化SDK是eq_hw_xxx.bin),脚本主要增加了以下
cp ./download/soundbox/cfg_tool.bin ./
cp ./download/soundbox/stream.bin ./
打包路径同步修改为stream.bin
${ISD_DOWNLOAD} isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot uboot.boot -app app.bin -res tone.cfg cfg_tool.bin stream.bin p11_code.bin -uboot_compress
参考直接复制的脚本如下:其中变量路径须修改为用户实际的绝对路径
#!/bin/sh
OBJDUMP="/opt/jieli/pi32v2/bin/objdump"
OBJCOPY="/opt/jieli/pi32v2/bin/objcopy"
OBJSIZEDUMP="/opt/jieli/pi32v2/bin/objsizedump"
REMOVE_TAILING_ZEROS="/home/chenjd/jl_project/jieli-build-tools/remove_tailing_zeros"
UFW_MAKER="/home/chenjd/jl_project/jieli-build-tools/ufw_maker"
ISD_DOWNLOAD="/home/chenjd/jl_project/jieli-build-tools/isd_download"
cd cpu/br28/tools
cp ./download/soundbox/cfg_tool.bin ./
cp ./download/soundbox/stream.bin ./
${OBJDUMP} -D -address-mask=0x1ffffff -print-dbg $1.elf > $1.lst
${OBJCOPY} -O binary -j .text $1.elf text.bin
${OBJCOPY} -O binary -j .data $1.elf data.bin
${OBJCOPY} -O binary -j .data_code $1.elf data_code.bin
${OBJCOPY} -O binary -j .overlay_aec $1.elf aeco.bin
${OBJCOPY} -O binary -j .overlay_wav $1.elf wavo.bin
${OBJCOPY} -O binary -j .overlay_ape $1.elf apeo.bin
${OBJCOPY} -O binary -j .overlay_flac $1.elf flaco.bin
${OBJCOPY} -O binary -j .overlay_m4a $1.elf m4ao.bin
${OBJCOPY} -O binary -j .overlay_amr $1.elf amro.bin
${OBJCOPY} -O binary -j .overlay_dts $1.elf dtso.bin
${OBJCOPY} -O binary -j .overlay_fm $1.elf fmo.bin
${OBJCOPY} -O binary -j .overlay_mp3 $1.elf mp3o.bin
${OBJCOPY} -O binary -j .overlay_wma $1.elf wmao.bin
${REMOVE_TAILING_ZEROS} -i aeco.bin -o aec.bin -mark ff
${REMOVE_TAILING_ZEROS} -i wavo.bin -o wav.bin -mark ff
${REMOVE_TAILING_ZEROS} -i apeo.bin -o ape.bin -mark ff
${REMOVE_TAILING_ZEROS} -i flaco.bin -o flac.bin -mark ff
${REMOVE_TAILING_ZEROS} -i m4ao.bin -o m4a.bin -mark ff
${REMOVE_TAILING_ZEROS} -i amro.bin -o amr.bin -mark ff
${REMOVE_TAILING_ZEROS} -i dtso.bin -o dts.bin -mark ff
${REMOVE_TAILING_ZEROS} -i fmo.bin -o fm.bin -mark ff
${REMOVE_TAILING_ZEROS} -i mp3o.bin -o mp3.bin -mark ff
${REMOVE_TAILING_ZEROS} -i wmao.bin -o wma.bin -mark ff
bank_files=
for i in $(seq 0 20)
do
${OBJCOPY} -O binary -j .overlay_bank$i $1.elf bank$i.bin
if [ ! -s bank$i.bin ]
then
break
fi
bank_files=$bank_files"bank$i.bin 0x0 "
done
echo $bank_files
${OBJDUMP} -section-headers -address-mask=0x1ffffff $1.elf
${OBJSIZEDUMP} -lite -skip-zero -enable-dbg-info $1.elf | sort -k 1 > symbol_tbl.txt
cat text.bin data.bin data_code.bin aec.bin wav.bin ape.bin flac.bin m4a.bin amr.bin dts.bin fm.bin mp3.bin wma.bin > app.bin
${ISD_DOWNLOAD} isd_config.ini -tonorflash -dev br28 -boot 0x120000 -div8 -wait 300 -uboot uboot.boot -app app.bin -res tone.cfg cfg_tool.bin stream.bin p11_code.bin -uboot_compress
${UFW_MAKER} -fw_to_ufw jl_isd.fw
cp jl_isd.ufw update.ufw
注意事项
安装必要的共享库
sudo apt-get install libgbm1
sudo apt-get install libegl1-mesa
固件打包工具格式不兼容报错问题
以下报错,说明后处理工具格式不兼容报错,目前不兼容WSL,要在Linux标准发行版使用
链接库报错不识别Not recognized
ulimit -n 8096
每次构建前先设置一下 当前shell进程的最大可打开文件数量
可以在.bashrc添加,每次打开shell时,都先设置一次
附录
【金山文档】 sdk-20220520.1.tar
https://kdocs.cn/l/cfne6b74o4R2
Linux下的download批处理
【金山文档】 download_linux
https://kdocs.cn/l/cgvrI17wLSsq
Linux编译工具链的下载
杰理文档工具列表 (jieliapp.com)
http://pkgman.jieliapp.com/doc/all
本文档为保密信息,未经授权,请勿转发或告知第三方。非常感谢!
This electronic documentation and any attachments are confidential and may be legally privileged or otherwise protected from disclosure. If you are not the intended recipient, please do not disclose the contents to anyone。
Thank you for your cooperation!
解析权归杰理所有!
The analysis right belongs to JieLi Technology Co., Ltd.