<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http://hdonline.a40pi.top/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hdadmin</id>
		<title>弘迪在线 - 用户贡献 [zh-cn]</title>
		<link rel="self" type="application/atom+xml" href="http://hdonline.a40pi.top/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hdadmin"/>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Hdadmin"/>
		<updated>2026-04-05T17:49:22Z</updated>
		<subtitle>用户贡献</subtitle>
		<generator>MediaWiki 1.30.2</generator>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=175</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=175"/>
				<updated>2025-04-10T13:30:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 清理源码（用于打包备份） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133/T527为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于T527：make distclean &amp;amp; make sun55iw3p1_defconfig &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a133 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：依次选 0.android -&amp;gt; 2.t527 -&amp;gt; 0.hdevb -&amp;gt; 2.default&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：选 t527_hdevb_arm64-userdebug&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133/T527：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133/T527：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=174</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=174"/>
				<updated>2025-04-10T13:30:15Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 编译Android并打包 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133/T527为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于T527：make distclean &amp;amp; make sun55iw3p1_defconfig &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a133 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：依次选 0.android -&amp;gt; 2.t527 -&amp;gt; 0.hdevb -&amp;gt; 2.default&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：选 t527_hdevb_arm64-userdebug&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133/T527：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=173</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=173"/>
				<updated>2025-04-10T13:29:55Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 编译Android并打包 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133/T527为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于T527：make distclean &amp;amp; make sun55iw3p1_defconfig &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a133 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：依次选 0.android -&amp;gt; 2.t527 -&amp;gt; 0.hdevb -&amp;gt; 2.default&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：选 t527_hdevb_arm64-userdebug&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=172</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=172"/>
				<updated>2025-04-10T13:28:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 编译Lichee/Longan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133/T527为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于T527：make distclean &amp;amp; make sun55iw3p1_defconfig &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a133 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
对于T527（Android 13）：依次选 0.android -&amp;gt; 2.t527 -&amp;gt; 0.hdevb -&amp;gt; 2.default&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=171</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=171"/>
				<updated>2025-04-10T13:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 编译U-Boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133/T527为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于T527：make distclean &amp;amp; make sun55iw3p1_defconfig &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a100 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=170</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=170"/>
				<updated>2025-04-10T13:23:42Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 源码结构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于T527：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-5.15&lt;br /&gt;
&lt;br /&gt;
Allwinner BSP源码：longan/bsp（即全志自己的驱动、内核配置等已经与主线kernel分开存放了）&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/t527/config&lt;br /&gt;
&lt;br /&gt;
Android源码：根目录（注意longan目录已经在Android源码根目录下了）&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a100 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=169</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=169"/>
				<updated>2025-04-10T13:20:18Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 安装OpenJDK 8（针对Android 7.1/10/11） */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/13）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a100 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=168</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=168"/>
				<updated>2025-04-10T13:14:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 选型指南 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;欢迎来到弘迪电子Wiki百科&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=关于弘迪=&lt;br /&gt;
最具竞争力的全志平台方案商！进一步了解请点击这里——》[[弘迪在线:关于]]《——&lt;br /&gt;
&lt;br /&gt;
购买核心板、开发板请点击这里——》[https://hdhgled.taobao.com/ 淘宝店铺]《——&lt;br /&gt;
&lt;br /&gt;
=开放资料=&lt;br /&gt;
==选型指南==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!            !! A33                 !! A40i                 !! A64                  !! A133                    !! T527&lt;br /&gt;
|-&lt;br /&gt;
| CPU        || Quad-Core Cortex-A7 || Quad-Core Cortex-A7  || Quad-Core Cortex-A53 || Quad-Core Cortex-A53    || Quad-Core Cortex-A55&lt;br /&gt;
|-&lt;br /&gt;
| GPU        || Mali400 MP2         || Mali400 MP2          || Mali400 MP2          || IMG PowerVR GE8300      || Mali-G57 MC1&lt;br /&gt;
|-&lt;br /&gt;
| 内存支持   || 512MB/1GB DDR3      || 1G/2G LPDDR3         || 1G/2G LPDDR3         || 32-bit 2G LPDDR3        || 2G LPDDR4&lt;br /&gt;
|-&lt;br /&gt;
| 视频回放   || 1080P@60fps         || 1080P@60fps          || 4K@30fps             || 4K@30fps or 1080P@60fps || 4K@60fps H.265&lt;br /&gt;
|-&lt;br /&gt;
| 视频采集   || 1080p@60fps         || 1080p@45fps          || 1080p@60fps          || 1080p@60fps             || 4k@25fps H.264&lt;br /&gt;
|-&lt;br /&gt;
| 显示分辨率 || 1280x800            || 1920x1080            || 1920x1200            || 1920x1200               || 1920x1080&lt;br /&gt;
|-&lt;br /&gt;
| 操作系统   || Android 4.4/6.0     || Android 7.1/Linux    || Android 6.0          || Android 10              || Android 13/Linux&lt;br /&gt;
|-&lt;br /&gt;
| 引脚资源   || 120Pins             || 172Pins              || 120Pins              || 140Pins                 || 314Pins&lt;br /&gt;
|-&lt;br /&gt;
| 尺寸       || 40*40*2.6mm         || 40*40*2.6mm          || 40*40*2.6mm          || 40*40*2.6mm             || 82*40*2.6mm&lt;br /&gt;
|-&lt;br /&gt;
| 工作温度   || -25~+75℃           || -25~+85℃            || -25~+75℃            || -25~+75℃               || -40~+85℃&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==核心板规格书（Datasheet）==&lt;br /&gt;
[[文件:HDA33Core_Datasheet_V1.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA133Core_Datasheet_V1.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA64Core_Datasheet_V2.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA40iCore_Datasheet_V1.1.pdf]]&lt;br /&gt;
&lt;br /&gt;
==资料光盘==&lt;br /&gt;
目前尚不提供实体光盘等存储介质，所有资料均通过百度网盘分享：&lt;br /&gt;
&lt;br /&gt;
链接：https://pan.baidu.com/s/1hU7a_9cnT8kgZGb7as51mw &lt;br /&gt;
提取码：yvla&lt;br /&gt;
&lt;br /&gt;
（网盘资料持续保持更新，请留意相关文件的修改时间哦~）&lt;br /&gt;
&lt;br /&gt;
=开发者指南=&lt;br /&gt;
==硬件设计==&lt;br /&gt;
点此进入[[硬件设计]]篇&lt;br /&gt;
==Android==&lt;br /&gt;
[[固件构建指南——环境搭建与编译步骤]]&lt;br /&gt;
&lt;br /&gt;
[[固件快速修改定制指南]]&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
[[Linux开发环境搭建/编译/打包]]&lt;br /&gt;
&lt;br /&gt;
（目前仅对官方内核（Lichee）提供支持，社区版本内核请移步linux-sunxi.org）&lt;br /&gt;
&lt;br /&gt;
==其他开发及通用部分==&lt;br /&gt;
[[源码/文档版本迭代记录]]&lt;br /&gt;
&lt;br /&gt;
[[PhoenixSuit固件烧录指南]]&lt;br /&gt;
&lt;br /&gt;
[[GPIO使用指南]]&lt;br /&gt;
&lt;br /&gt;
[[MIPI-DSI液晶适配]]&lt;br /&gt;
&lt;br /&gt;
[[Android设备序列号修改]]&lt;br /&gt;
&lt;br /&gt;
[[F.A.Q汇总]]&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=167</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=167"/>
				<updated>2022-08-10T07:11:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年5月16日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：增加内置串口调试助手APP；&lt;br /&gt;
&lt;br /&gt;
2022年6月9日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：解决使用电池时，关机充电时系统反复唤醒休眠的问题，并更新电池参数（内阻150mΩ/容量6000mAh）和充电电流（600mA/600mA/1200mA/1200mA）；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
2022年5月26日：&lt;br /&gt;
&lt;br /&gt;
更新烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. 修正root问题（之前并没有真正root）；&lt;br /&gt;
&lt;br /&gt;
2. 修改RFKill（Modem），增加power_en控制引脚（DTS中可增加power_en节点实现GPIO控制4G模组电源开关）；&lt;br /&gt;
&lt;br /&gt;
3. 开启GPIO User-Space支持，可通过/sys/class/gpio访问GPIO；&lt;br /&gt;
&lt;br /&gt;
2022年8月10日：&lt;br /&gt;
&lt;br /&gt;
更新源码/烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. Settings界面增加屏幕方向旋转和隐藏上下边栏选项；&lt;br /&gt;
&lt;br /&gt;
2. 增加ZZW500HHI-979A液晶面板和sitronix_ts触摸支持；&lt;br /&gt;
&lt;br /&gt;
3. 增加PL2303/FT232/CP2102/CH341等USB转串口支持；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=166</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=166"/>
				<updated>2022-08-10T07:10:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年5月16日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：增加内置串口调试助手APP；&lt;br /&gt;
&lt;br /&gt;
2022年6月9日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：解决使用电池时，关机充电时系统反复唤醒休眠的问题，并更新电池参数（内阻150mΩ/容量6000mAh）和充电电流（600mA/600mA/1200mA/1200mA）；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
2022年5月26日：&lt;br /&gt;
&lt;br /&gt;
更新烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. 修正root问题（之前并没有真正root）；&lt;br /&gt;
&lt;br /&gt;
2. 修改RFKill（Modem），增加power_en控制引脚（DTS中可增加power_en节点实现GPIO控制4G模组电源开关）；&lt;br /&gt;
&lt;br /&gt;
3. 开启GPIO User-Space支持，可通过/sys/class/gpio访问GPIO；&lt;br /&gt;
&lt;br /&gt;
2022年8月10日：&lt;br /&gt;
&lt;br /&gt;
更新源码/烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. Settings界面增加屏幕方向旋转和隐藏上下边栏选项；&lt;br /&gt;
&lt;br /&gt;
2. 增加ZZW500HHI-979A液晶面板和sitronix_ts触摸支持；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=165</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=165"/>
				<updated>2022-07-05T02:46:20Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 常见问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于电源/引脚配置：&lt;br /&gt;
&lt;br /&gt;
A33：确保有lcd_power           = &amp;quot;axp22_dc1sw&amp;quot;这项即可；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A64/A40i：确保有lcd_power            = &amp;quot;vcc-mipi&amp;quot;和lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;，lcd_power为核心板VCC-MIPI输出（默认3V3），lcd_fix_power为CPU的DSI-Bank供电；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A133:确保有lcd_pin_power        = &amp;quot;dcdc1&amp;quot;和lcd_power            = &amp;quot;dc1sw&amp;quot;即可；确保引脚配置为pinctrl-0            = &amp;lt;&amp;amp;dsi4lane_pins_a&amp;gt;和pinctrl-1            = &amp;lt;&amp;amp;dsi4lane_pins_b&amp;gt;即可。&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/brandy/u-boot-2011.09/drivers/video_sunxi/sunxi_v2/de_bsp/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在这里添加panel初始化代码，可以先复制该目录下别的屏的.h和.c然后在此基础上修改，例如复制inet_dsi_panel.h和inet_dsi_panel.c，改名为AML080WQ05.h和AML080WQ05.c（文件名可以自己定义，尽量以屏型号命名）：&lt;br /&gt;
&lt;br /&gt;
1) 将AML080WQ05.h中__INET_DIS_PANEL_H__替换为__AML080WQ05_H__；&lt;br /&gt;
&lt;br /&gt;
2) AML080WQ05.c中#include &amp;quot;inet_dsi_panel.h&amp;quot;改为#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
3) AML080WQ05.c中__lcd_panel_t inet_dsi_panel = {改为__lcd_panel_t AML080WQ05_panel = {；&lt;br /&gt;
&lt;br /&gt;
4) AML080WQ05.c中.name = &amp;quot;inet_dsi_panel&amp;quot;改为.name = &amp;quot;AML080WQ05&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
5) AML080WQ05.c中找到static struct LCM_setting_table LCM_LT080B21BA94_setting[] = {该行，在这里把屏厂提供的初始化代码贴过来，注意格式：{指令,参数长度,{参数1,参数2,...}}，提供的初始化代码若不是这种格式的需客户自己手工转换下！&lt;br /&gt;
&lt;br /&gt;
6) 在panels.c中添加#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
7) 在panels.c中__lcd_panel_t* panel_array[] = {这个数组里添加&amp;amp;AML080WQ05_panel这项；&lt;br /&gt;
&lt;br /&gt;
8) 在上层目录的Makefile里添加lcd/AML080WQ05.o以便将新增的.c编译进去；&lt;br /&gt;
&lt;br /&gt;
9) 重新编译u-boot然后打包固件烧录验证；&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/linux-3.4/drivers/video/sunxi/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/linux-3.10/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
由于u-boot的驱动架构和kernel的几乎一致，所以该部分修改可以参照u-boot的移植方法。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
&lt;br /&gt;
A: 为何不显示启动LOGO？&lt;br /&gt;
&lt;br /&gt;
Q: 启动LOGO在u-boot阶段刷新，请确保u-boot的初始化代码移植正确！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：能否只移植u-boot的初始化代码？不移植kernel的也能正常显示呢？&lt;br /&gt;
&lt;br /&gt;
Q：kernel阶段的初始化代码在系统启动时确实不会再次执行，因为u-boot阶段已经执行过一次了。但若需要系统休眠/唤醒功能时必须移植！因为系统休眠后LCD会被断电，此时唤醒后需要再次初始化panel！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何移植后屏幕无任何显示？&lt;br /&gt;
&lt;br /&gt;
Q: MIPI屏需要屏参和初始化代码必须全部正确才能正常显示！请仔细排查各部分的代码和配置。&lt;br /&gt;
&lt;br /&gt;
需注意的是：初始化代码中的宏定义#define REGFLAG_DELAY 0xFE和#define REGFLAG_END_OF_TABLE 0xFF用于标识初始化延时和初始化结束，请确保初始化代码中的所有指令不与这两个标识冲突，若有重复的则可以把这两个宏定义改为其他值！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：添加新panel后系统不启动，卡死在u-boot阶段！&lt;br /&gt;
&lt;br /&gt;
Q：这种情况一般是屏参（HBP/VBP一类）设置不正确导致TCON初始化失败引起的，请检查屏参时序配置是否正确。另有时屏厂提供的参数并不一定适用于所有平台，客户需根据具体情况适当微调下！&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=164</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=164"/>
				<updated>2022-07-05T02:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Kernel部分修改 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于电源/引脚配置：&lt;br /&gt;
&lt;br /&gt;
A33：确保有lcd_power           = &amp;quot;axp22_dc1sw&amp;quot;这项即可；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A64/A40i：确保有lcd_power            = &amp;quot;vcc-mipi&amp;quot;和lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;，lcd_power为核心板VCC-MIPI输出（默认3V3），lcd_fix_power为CPU的DSI-Bank供电；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A133:确保有lcd_pin_power        = &amp;quot;dcdc1&amp;quot;和lcd_power            = &amp;quot;dc1sw&amp;quot;即可；确保引脚配置为pinctrl-0            = &amp;lt;&amp;amp;dsi4lane_pins_a&amp;gt;和pinctrl-1            = &amp;lt;&amp;amp;dsi4lane_pins_b&amp;gt;即可。&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/brandy/u-boot-2011.09/drivers/video_sunxi/sunxi_v2/de_bsp/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在这里添加panel初始化代码，可以先复制该目录下别的屏的.h和.c然后在此基础上修改，例如复制inet_dsi_panel.h和inet_dsi_panel.c，改名为AML080WQ05.h和AML080WQ05.c（文件名可以自己定义，尽量以屏型号命名）：&lt;br /&gt;
&lt;br /&gt;
1) 将AML080WQ05.h中__INET_DIS_PANEL_H__替换为__AML080WQ05_H__；&lt;br /&gt;
&lt;br /&gt;
2) AML080WQ05.c中#include &amp;quot;inet_dsi_panel.h&amp;quot;改为#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
3) AML080WQ05.c中__lcd_panel_t inet_dsi_panel = {改为__lcd_panel_t AML080WQ05_panel = {；&lt;br /&gt;
&lt;br /&gt;
4) AML080WQ05.c中.name = &amp;quot;inet_dsi_panel&amp;quot;改为.name = &amp;quot;AML080WQ05&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
5) AML080WQ05.c中找到static struct LCM_setting_table LCM_LT080B21BA94_setting[] = {该行，在这里把屏厂提供的初始化代码贴过来，注意格式：{指令,参数长度,{参数1,参数2,...}}，提供的初始化代码若不是这种格式的需客户自己手工转换下！&lt;br /&gt;
&lt;br /&gt;
6) 在panels.c中添加#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
7) 在panels.c中__lcd_panel_t* panel_array[] = {这个数组里添加&amp;amp;AML080WQ05_panel这项；&lt;br /&gt;
&lt;br /&gt;
8) 在上层目录的Makefile里添加lcd/AML080WQ05.o以便将新增的.c编译进去；&lt;br /&gt;
&lt;br /&gt;
9) 重新编译u-boot然后打包固件烧录验证；&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/linux-3.4/drivers/video/sunxi/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/linux-3.10/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
由于u-boot的驱动架构和kernel的几乎一致，所以该部分修改可以参照u-boot的移植方法。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=163</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=163"/>
				<updated>2022-07-05T02:36:33Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* U-Boot部分修改 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于电源/引脚配置：&lt;br /&gt;
&lt;br /&gt;
A33：确保有lcd_power           = &amp;quot;axp22_dc1sw&amp;quot;这项即可；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A64/A40i：确保有lcd_power            = &amp;quot;vcc-mipi&amp;quot;和lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;，lcd_power为核心板VCC-MIPI输出（默认3V3），lcd_fix_power为CPU的DSI-Bank供电；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A133:确保有lcd_pin_power        = &amp;quot;dcdc1&amp;quot;和lcd_power            = &amp;quot;dc1sw&amp;quot;即可；确保引脚配置为pinctrl-0            = &amp;lt;&amp;amp;dsi4lane_pins_a&amp;gt;和pinctrl-1            = &amp;lt;&amp;amp;dsi4lane_pins_b&amp;gt;即可。&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/brandy/u-boot-2011.09/drivers/video_sunxi/sunxi_v2/de_bsp/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在这里添加panel初始化代码，可以先复制该目录下别的屏的.h和.c然后在此基础上修改，例如复制inet_dsi_panel.h和inet_dsi_panel.c，改名为AML080WQ05.h和AML080WQ05.c（文件名可以自己定义，尽量以屏型号命名）：&lt;br /&gt;
&lt;br /&gt;
1) 将AML080WQ05.h中__INET_DIS_PANEL_H__替换为__AML080WQ05_H__；&lt;br /&gt;
&lt;br /&gt;
2) AML080WQ05.c中#include &amp;quot;inet_dsi_panel.h&amp;quot;改为#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
3) AML080WQ05.c中__lcd_panel_t inet_dsi_panel = {改为__lcd_panel_t AML080WQ05_panel = {；&lt;br /&gt;
&lt;br /&gt;
4) AML080WQ05.c中.name = &amp;quot;inet_dsi_panel&amp;quot;改为.name = &amp;quot;AML080WQ05&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
5) AML080WQ05.c中找到static struct LCM_setting_table LCM_LT080B21BA94_setting[] = {该行，在这里把屏厂提供的初始化代码贴过来，注意格式：{指令,参数长度,{参数1,参数2,...}}，提供的初始化代码若不是这种格式的需客户自己手工转换下！&lt;br /&gt;
&lt;br /&gt;
6) 在panels.c中添加#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
7) 在panels.c中__lcd_panel_t* panel_array[] = {这个数组里添加&amp;amp;AML080WQ05_panel这项；&lt;br /&gt;
&lt;br /&gt;
8) 在上层目录的Makefile里添加lcd/AML080WQ05.o以便将新增的.c编译进去；&lt;br /&gt;
&lt;br /&gt;
9) 重新编译u-boot然后打包固件烧录验证；&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=162</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=162"/>
				<updated>2022-07-05T02:35:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* U-Boot部分修改 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于电源/引脚配置：&lt;br /&gt;
&lt;br /&gt;
A33：确保有lcd_power           = &amp;quot;axp22_dc1sw&amp;quot;这项即可；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A64/A40i：确保有lcd_power            = &amp;quot;vcc-mipi&amp;quot;和lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;，lcd_power为核心板VCC-MIPI输出（默认3V3），lcd_fix_power为CPU的DSI-Bank供电；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A133:确保有lcd_pin_power        = &amp;quot;dcdc1&amp;quot;和lcd_power            = &amp;quot;dc1sw&amp;quot;即可；确保引脚配置为pinctrl-0            = &amp;lt;&amp;amp;dsi4lane_pins_a&amp;gt;和pinctrl-1            = &amp;lt;&amp;amp;dsi4lane_pins_b&amp;gt;即可。&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
A33：lichee/brandy/u-boot-2011.09/drivers/video_sunxi/sunxi_v2/de_bsp/lcd/panels&lt;br /&gt;
&lt;br /&gt;
A64/A40i：lichee/brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
A133：longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在这里添加panel初始化代码，可以先复制该目录下别的屏的.h和.c然后在此基础上修改，例如复制inet_dsi_panel.h和inet_dsi_panel.c，改名为AML080WQ05.h和AML080WQ05.c（文件名可以自己定义，尽量以屏型号命名）：&lt;br /&gt;
&lt;br /&gt;
1) 将AML080WQ05.h中__INET_DIS_PANEL_H__替换为__AML080WQ05_H__；&lt;br /&gt;
&lt;br /&gt;
2) AML080WQ05.c中#include &amp;quot;inet_dsi_panel.h&amp;quot;改为#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
3) AML080WQ05.c中__lcd_panel_t inet_dsi_panel = {改为__lcd_panel_t AML080WQ05_panel = {；&lt;br /&gt;
&lt;br /&gt;
4) AML080WQ05.c中.name = &amp;quot;inet_dsi_panel&amp;quot;改为.name = &amp;quot;AML080WQ05&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
5) AML080WQ05.c中找到static struct LCM_setting_table LCM_LT080B21BA94_setting[] = {该行，在这里把屏厂提供的初始化代码贴过来，注意格式：{指令,参数长度,{参数1,参数2,...}}，提供的初始化代码若不是这种格式的需客户自己手工转换下！&lt;br /&gt;
&lt;br /&gt;
6) 在panels.c中添加#include &amp;quot;AML080WQ05.h&amp;quot;；&lt;br /&gt;
&lt;br /&gt;
7) 在panels.c中__lcd_panel_t* panel_array[] = {这个数组里添加&amp;amp;AML080WQ05_panel这项；&lt;br /&gt;
&lt;br /&gt;
8) 重新编译u-boot然后打包固件烧录验证；&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=161</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=161"/>
				<updated>2022-07-05T02:12:42Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 屏参修改 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于电源/引脚配置：&lt;br /&gt;
&lt;br /&gt;
A33：确保有lcd_power           = &amp;quot;axp22_dc1sw&amp;quot;这项即可；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A64/A40i：确保有lcd_power            = &amp;quot;vcc-mipi&amp;quot;和lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;，lcd_power为核心板VCC-MIPI输出（默认3V3），lcd_fix_power为CPU的DSI-Bank供电；lcdd0~23/lcdclk/lcdde/lcdhsync/lcdvsync/[lcd0_suspend]块无用都可以删去；&lt;br /&gt;
&lt;br /&gt;
A133:确保有lcd_pin_power        = &amp;quot;dcdc1&amp;quot;和lcd_power            = &amp;quot;dc1sw&amp;quot;即可；确保引脚配置为pinctrl-0            = &amp;lt;&amp;amp;dsi4lane_pins_a&amp;gt;和pinctrl-1            = &amp;lt;&amp;amp;dsi4lane_pins_b&amp;gt;即可。&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=160</id>
		<title>MIPI-DSI液晶适配</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=MIPI-DSI%E6%B6%B2%E6%99%B6%E9%80%82%E9%85%8D&amp;diff=160"/>
				<updated>2022-07-05T01:49:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：创建页面，内容为“=原理= MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=原理=&lt;br /&gt;
MIPI液晶屏首先需要对屏驱动IC进行初始化，写入相关指令数据，然后CPU的液晶控制器按照设定的图像时序参数向驱动IC输出图像数据。所以移植需要屏参（时序参数HBP、VBP一类的）和初始化代码两部分。&lt;br /&gt;
=屏参修改=&lt;br /&gt;
对于A33/A64/A40i需要找到FEX文件中找到lcd0参数块；对于A133需要在DTS里找到lcd0节点；以FEX文件为例：&lt;br /&gt;
&lt;br /&gt;
[lcd0]&lt;br /&gt;
&lt;br /&gt;
lcd_used             = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name      = &amp;quot;AML080WQ05&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_backlight        = 100&lt;br /&gt;
&lt;br /&gt;
lcd_if               = 4&lt;br /&gt;
&lt;br /&gt;
lcd_x                = 800&lt;br /&gt;
&lt;br /&gt;
lcd_y                = 1280&lt;br /&gt;
&lt;br /&gt;
lcd_width            = 223&lt;br /&gt;
&lt;br /&gt;
lcd_height           = 125&lt;br /&gt;
&lt;br /&gt;
lcd_dclk_freq        = 70&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_used         = 1&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_ch           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_freq         = 200&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_pol          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_pwm_max_limit    = 255&lt;br /&gt;
&lt;br /&gt;
lcd_hbp              = 40&lt;br /&gt;
&lt;br /&gt;
lcd_ht               = 888&lt;br /&gt;
&lt;br /&gt;
lcd_hspw             = 12&lt;br /&gt;
&lt;br /&gt;
lcd_vbp              = 20&lt;br /&gt;
&lt;br /&gt;
lcd_vt               = 1320&lt;br /&gt;
&lt;br /&gt;
lcd_vspw             = 4&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_if          = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_colordepth  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_lvds_mode        = 0&lt;br /&gt;
&lt;br /&gt;
lcd_frm              = 1&lt;br /&gt;
&lt;br /&gt;
lcd_hv_clk_phase     = 0&lt;br /&gt;
&lt;br /&gt;
lcd_hv_sync_polarity = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_if           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_lane         = 4&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_format       = 0&lt;br /&gt;
&lt;br /&gt;
lcd_dsi_te           = 0&lt;br /&gt;
&lt;br /&gt;
lcd_gamma_en         = 0&lt;br /&gt;
&lt;br /&gt;
lcd_bright_curve_en  = 0&lt;br /&gt;
&lt;br /&gt;
lcd_cmap_en          = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_bl_en            = port:PD23&amp;lt;1&amp;gt;&amp;lt;0&amp;gt;&amp;lt;default&amp;gt;&amp;lt;1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lcd_bl_en_power      = &amp;quot;none&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_power            = &amp;quot;vcc-mipi&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_fix_power        = &amp;quot;vcc-dsi-33&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lcd_pin_power        = &amp;quot;vcc-pd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lcd_driver_name为初始化代码的名字，后面会提到；lcd_if=4表示使用DSI显示接口；lcd_x/lcd_y/lcd_dclk_freq/lcd_hbp/lcd_ht/lcd_hspw/lcd_vbp/lcd_vt/lcd_vspw这9个参数需要对照液晶面板Datasheet上标注的参数对应填好；lcd_dsi_if/lcd_dsi_lane/lcd_dsi_format/lcd_dsi_te这4个参数对照上文填好即可，无需变动；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=U-Boot部分修改=&lt;br /&gt;
代码位置：&lt;br /&gt;
&lt;br /&gt;
=Kernel部分修改=&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=159</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=159"/>
				<updated>2022-07-05T01:34:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 其他开发及通用部分 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;欢迎来到弘迪电子Wiki百科&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=关于弘迪=&lt;br /&gt;
最具竞争力的全志平台方案商！进一步了解请点击这里——》[[弘迪在线:关于]]《——&lt;br /&gt;
&lt;br /&gt;
购买核心板、开发板请点击这里——》[https://hdhgled.taobao.com/ 淘宝店铺]《——&lt;br /&gt;
&lt;br /&gt;
=开放资料=&lt;br /&gt;
==选型指南==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!            !! A33                 !! A133                    !! A64                  !! A40i&lt;br /&gt;
|-&lt;br /&gt;
| CPU        || Quad-Core Cortex-A7 || Quad-Core Cortex-A53    || Quad-Core Cortex-A53 || Quad-Core Cortex-A7&lt;br /&gt;
|-&lt;br /&gt;
| GPU        || Mali400 MP2         || IMG PowerVR GE8300      || Mali400 MP2          || Mali400 MP2&lt;br /&gt;
|-&lt;br /&gt;
| 内存支持   || 512MB/1GB DDR3      || 32-bit 2G LPDDR3        || 1G/2G LPDDR3         || 1G/2G LPDDR3&lt;br /&gt;
|-&lt;br /&gt;
| 视频回放   || 1080P@60fps         || 4K@30fps or 1080P@60fps || 4K@30fps             || 1080P@60fps&lt;br /&gt;
|-&lt;br /&gt;
| 视频采集   || 1080p@60fps         || 1080p@60fps             || 1080p@60fps          || 1080p@45fps&lt;br /&gt;
|-&lt;br /&gt;
| 显示分辨率 || 1280x800            || 1920x1200               || 1920x1200            || 1920x1080&lt;br /&gt;
|-&lt;br /&gt;
| 操作系统   || Android 4.4/6.0     || Android 10              || Android 6.0          || Android 7.1/Linux&lt;br /&gt;
|-&lt;br /&gt;
| 引脚资源   || 120Pins             || 140Pins                 || 120Pins              || 172Pins&lt;br /&gt;
|-&lt;br /&gt;
| 尺寸       || 40*40*2.6mm         || 40*40*2.6mm             || 40*40*2.6mm          || 40*40*2.6mm&lt;br /&gt;
|-&lt;br /&gt;
| 工作温度   || -25~+75℃           || -25~+75℃               || -25~+75℃            || -25~+85℃&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==核心板规格书（Datasheet）==&lt;br /&gt;
[[文件:HDA33Core_Datasheet_V1.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA133Core_Datasheet_V1.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA64Core_Datasheet_V2.0.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[文件:HDA40iCore_Datasheet_V1.1.pdf]]&lt;br /&gt;
&lt;br /&gt;
==资料光盘==&lt;br /&gt;
目前尚不提供实体光盘等存储介质，所有资料均通过百度网盘分享：&lt;br /&gt;
&lt;br /&gt;
链接：https://pan.baidu.com/s/1hU7a_9cnT8kgZGb7as51mw &lt;br /&gt;
提取码：yvla&lt;br /&gt;
&lt;br /&gt;
（网盘资料持续保持更新，请留意相关文件的修改时间哦~）&lt;br /&gt;
&lt;br /&gt;
=开发者指南=&lt;br /&gt;
==硬件设计==&lt;br /&gt;
点此进入[[硬件设计]]篇&lt;br /&gt;
==Android==&lt;br /&gt;
[[固件构建指南——环境搭建与编译步骤]]&lt;br /&gt;
&lt;br /&gt;
[[固件快速修改定制指南]]&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
[[Linux开发环境搭建/编译/打包]]&lt;br /&gt;
&lt;br /&gt;
（目前仅对官方内核（Lichee）提供支持，社区版本内核请移步linux-sunxi.org）&lt;br /&gt;
&lt;br /&gt;
==其他开发及通用部分==&lt;br /&gt;
[[源码/文档版本迭代记录]]&lt;br /&gt;
&lt;br /&gt;
[[PhoenixSuit固件烧录指南]]&lt;br /&gt;
&lt;br /&gt;
[[GPIO使用指南]]&lt;br /&gt;
&lt;br /&gt;
[[MIPI-DSI液晶适配]]&lt;br /&gt;
&lt;br /&gt;
[[Android设备序列号修改]]&lt;br /&gt;
&lt;br /&gt;
[[F.A.Q汇总]]&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=158</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=158"/>
				<updated>2022-06-22T01:15:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统裁剪定制 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何适配不同的WiFi/BT模组？&lt;br /&gt;
&lt;br /&gt;
Q: 源码已适配过多款WiFi/BT模组，在“android/device/softwinner/板型”目录下，将对应型号模组的BoardConfig.mk替换掉原有文件，例如适配RTL8188EU时将BoardConfig.mk.8188eu覆盖原BoardConfig.mk，然后make clean/make即可。&lt;br /&gt;
&lt;br /&gt;
对于A40i：除了替换对应的BoardConfig.mk还需要替换init.device.rc；&lt;br /&gt;
&lt;br /&gt;
对于A133：除了替换对应的BoardConfig.mk还需要替换board.dts和sys_config.fex（位于longan/device/config/chips/a133/configs/c3）&lt;br /&gt;
&lt;br /&gt;
若要适配已支持的模组之外的型号，请自行移植内核驱动和HAL层代码，参考《Axx Android WiFi-BT配置说明书》。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何修改LRADC按键的键值（Android）？&lt;br /&gt;
&lt;br /&gt;
Q: Linux Input键值需要修改驱动源码（对于A33）/DTS文件（对于A64/A40i/A133），Android按键映射需要修改android/device/softwinner/板型/config/sunxi-keyboard.kl，参考资料《Android xx SDK快速移植指南》。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何修改开机LOGO/Android开机动画/Android桌面壁纸？&lt;br /&gt;
&lt;br /&gt;
Q: 开机LOGO（注：图片长宽像素不能超过屏幕分辨率！）：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：lichee/tools/pack/chips/CPU型号/configs/板型/bootlogo.bmp&lt;br /&gt;
&lt;br /&gt;
对于A133：longan/device/config/chips/a133/configs/c3/android/bootlogo.bmp&lt;br /&gt;
&lt;br /&gt;
Android开机动画：修改android/device/softwinner/板型/media/bootanimation.zip（修改方法参考原厂文档《Android xx SDK快速移植指南》）&lt;br /&gt;
&lt;br /&gt;
然后在android/device/softwinner/板型/板型.mk里添加：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_COPY_FILES += $(LOCAL_PATH)/media/bootanimation.zip:system/media/bootanimation.zip&lt;br /&gt;
&lt;br /&gt;
重新编译打包即可。&lt;br /&gt;
&lt;br /&gt;
Android壁纸：替换android/device/softwinner/板型/overlay/frameworks/base/core/res/res/drawable-xxx/default_wallpaper.jpg&lt;br /&gt;
&lt;br /&gt;
注意：drawable-xxx表示在什么显示分辨率下显示的壁纸，例如drawable-sw720dp-nodpi表示在720P分辨率下才会显示的壁纸。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考资料：原厂文档《Android xx SDK快速移植指南》&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: Android/Linux文件系统损坏导致系统无法正常启动？&lt;br /&gt;
&lt;br /&gt;
Q: 一般出现这种问题时都是eMMC/SPINOR正在写入数据时掉电引起的。请首先确保电源稳定可靠，切勿出现电源反复启停振荡的情况（一般客户采用外部后备电源如超级电容等的场景时容易出现这种情况）。Linux系统可以将rootfs挂为ro只读分区，单独划分一个rw分区用于用户数据存储。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）即可。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=157</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=157"/>
				<updated>2022-06-22T01:06:23Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统裁剪定制 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何适配不同的WiFi/BT模组？&lt;br /&gt;
&lt;br /&gt;
Q: 源码已适配过多款WiFi/BT模组，在“android/device/softwinner/板型”目录下，将对应型号模组的BoardConfig.mk替换掉原有文件，例如适配RTL8188EU时将BoardConfig.mk.8188eu覆盖原BoardConfig.mk，然后make clean/make即可。&lt;br /&gt;
&lt;br /&gt;
对于A40i：除了替换对应的BoardConfig.mk还需要替换init.device.rc；&lt;br /&gt;
&lt;br /&gt;
对于A133：除了替换对应的BoardConfig.mk还需要替换board.dts和sys_config.fex（位于longan/device/config/chips/a133/configs/c3）&lt;br /&gt;
&lt;br /&gt;
若要适配已支持的模组之外的型号，请自行移植内核驱动和HAL层代码，参考《Axx Android WiFi-BT配置说明书》。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何修改LRADC按键的键值（Android）？&lt;br /&gt;
&lt;br /&gt;
Q: Linux Input键值需要修改驱动源码（对于A33）/DTS文件（对于A64/A40i/A133），Android按键映射需要修改android/device/softwinner/板型/config/sunxi-keyboard.kl，参考资料《Android xx SDK快速移植指南》。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: Android/Linux文件系统损坏导致系统无法正常启动？&lt;br /&gt;
&lt;br /&gt;
Q: 一般出现这种问题时都是eMMC/SPINOR正在写入数据时掉电引起的。请首先确保电源稳定可靠，切勿出现电源反复启停振荡的情况（一般客户采用外部后备电源如超级电容等的场景时容易出现这种情况）。Linux系统可以将rootfs挂为ro只读分区，单独划分一个rw分区用于用户数据存储。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）即可。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=156</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=156"/>
				<updated>2022-06-22T01:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何适配不同的WiFi/BT模组？&lt;br /&gt;
&lt;br /&gt;
Q: 源码已适配过多款WiFi/BT模组，在“android/device/softwinner/板型”目录下，将对应型号模组的BoardConfig.mk替换掉原有文件，例如适配RTL8188EU时将BoardConfig.mk.8188eu覆盖原BoardConfig.mk，然后make clean/make即可。&lt;br /&gt;
&lt;br /&gt;
对于A40i：除了替换对应的BoardConfig.mk还需要替换init.device.rc；&lt;br /&gt;
&lt;br /&gt;
对于A133：除了替换对应的BoardConfig.mk还需要替换board.dts和sys_config.fex（位于longan/device/config/chips/a133/configs/c3）&lt;br /&gt;
&lt;br /&gt;
若要适配已支持的模组之外的型号，请自行移植内核驱动和HAL层代码，参考《Axx Android WiFi-BT配置说明书》。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: Android/Linux文件系统损坏导致系统无法正常启动？&lt;br /&gt;
&lt;br /&gt;
Q: 一般出现这种问题时都是eMMC/SPINOR正在写入数据时掉电引起的。请首先确保电源稳定可靠，切勿出现电源反复启停振荡的情况（一般客户采用外部后备电源如超级电容等的场景时容易出现这种情况）。Linux系统可以将rootfs挂为ro只读分区，单独划分一个rw分区用于用户数据存储。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）即可。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E5%BF%AB%E9%80%9F%E4%BF%AE%E6%94%B9%E5%AE%9A%E5%88%B6%E6%8C%87%E5%8D%97&amp;diff=155</id>
		<title>固件快速修改定制指南</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E5%BF%AB%E9%80%9F%E4%BF%AE%E6%94%B9%E5%AE%9A%E5%88%B6%E6%8C%87%E5%8D%97&amp;diff=155"/>
				<updated>2022-06-22T00:57:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 如何向固件中添加开机自启动的APP（需具备Launcher属性）？ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本章节介绍如何快速修改定制系统固件，涉及相关文件的修改既可通过修改源码后重新编译并打包，也可使用全志固件修改器DragonFace（可在资料光盘/开发工具中下载）直接修改打包后的固件镜像。&lt;br /&gt;
&lt;br /&gt;
=通用篇=&lt;br /&gt;
==如何修改屏幕分辨率？==&lt;br /&gt;
1. 在FEX文件中修改[lcd0]参数块；&lt;br /&gt;
&lt;br /&gt;
2. 对于小于800x480分辨率的屏需要替换开机LOGO，将图片缩小到分辨率不大于液晶分辨率的尺寸；&lt;br /&gt;
&lt;br /&gt;
3. 修改build.prop文件中的ro.sf.lcd_density属性，对照下表：&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 液晶分辨率  !! 480x272 !! 320x480 !! 800x480 !! 1024x600或更高 &lt;br /&gt;
|-&lt;br /&gt;
| lcd_density || 72      || 85      || 120     || 160            &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==如何改为仅HDMI输出，且自定义屏幕分辨率？（A64/A40i）==&lt;br /&gt;
1. 在FEX文件中修改lcd_used=0；&lt;br /&gt;
&lt;br /&gt;
2. 在FEX文件中修改hdmi_used=1；&lt;br /&gt;
&lt;br /&gt;
3. 在FEX文件中修改[disp]参数块，对照下表：&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!                     !! 720P !! 1080P &lt;br /&gt;
|-&lt;br /&gt;
| screen0_output_type || 3    || 3     &lt;br /&gt;
|-&lt;br /&gt;
| screen0_output_mode || 5    || 10    &lt;br /&gt;
|-&lt;br /&gt;
| screen1_output_type || 0    || 0     &lt;br /&gt;
|-&lt;br /&gt;
| screen1_output_mode || 5    || 10    &lt;br /&gt;
|-&lt;br /&gt;
| fb0_width           || 1280 || 1920  &lt;br /&gt;
|-&lt;br /&gt;
| fb0_height          || 720  || 1080  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. 在build.prop中persist.sys.hdmi_audio_enable前面添加：&lt;br /&gt;
&lt;br /&gt;
persist.sys.hdmi_output_mode=5&lt;br /&gt;
&lt;br /&gt;
数字代表输出模式，5为720P 60Hz，10为1080P 60Hz，注意要与FEX文件中参数匹配。&lt;br /&gt;
&lt;br /&gt;
5. 如果遇到色彩显示不正常，可尝试修改FEX文件：hdmi_cts_compatibility=1；&lt;br /&gt;
&lt;br /&gt;
==如何修改触摸屏分辨率？==&lt;br /&gt;
1. 在FEX文件中修改ctp_screen_max_x和ctp_screen_max_y；&lt;br /&gt;
&lt;br /&gt;
2. 如果需要对调X轴，则让ctp_revert_x_flag=1；同理Y轴对调让ctp_revert_y_flag=1；&lt;br /&gt;
&lt;br /&gt;
3. 如果需要交换X/Y轴，则让ctp_exchange_x_y_flag=1；&lt;br /&gt;
&lt;br /&gt;
==如何旋转摄像头、支持双摄像头等？==&lt;br /&gt;
使用固件修改器修改camera.cfg文件的参数项，具体请参考《A64 Android M快速移植指南》3.6.3章节。&lt;br /&gt;
&lt;br /&gt;
==如何让固件支持UVC摄像头？（即禁用CSI）==&lt;br /&gt;
1. 在FEX文件中修改csi0_used=0和csi0_dev0_used=0；&lt;br /&gt;
&lt;br /&gt;
2. 修改init.rc文件，将下列代码块屏蔽：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;# csi module&amp;lt;/p&amp;gt;&lt;br /&gt;
insmod /system/vendor/modules/videobuf2-core.ko&lt;br /&gt;
&lt;br /&gt;
insmod /system/vendor/modules/videobuf2-memops.ko&lt;br /&gt;
&lt;br /&gt;
insmod /system/vendor/modules/videobuf2-dma-contig.ko&lt;br /&gt;
&lt;br /&gt;
insmod /system/vendor/modules/vfe_io.ko&lt;br /&gt;
&lt;br /&gt;
insmod /system/vendor/modules/ov5640.ko&lt;br /&gt;
&lt;br /&gt;
insmod /system/vendor/modules/vfe_v4l2.ko&lt;br /&gt;
&lt;br /&gt;
即在每行第一个字母前增加#，如下：&lt;br /&gt;
&amp;lt;p&amp;gt;# csi module&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/videobuf2-core.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/videobuf2-memops.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/videobuf2-dma-contig.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/vfe_io.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/ov5640.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/vfe_v4l2.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
3. 在打开“相机”或者其他使用摄像头的应用前请先插好USB摄像头！&lt;br /&gt;
&lt;br /&gt;
==如何向固件中添加开机自启动的APP（需具备Launcher属性）？==&lt;br /&gt;
1. 将apk文件加入固件；&lt;br /&gt;
&lt;br /&gt;
2. 修改build.prop，在persist.sys.country=CN后添加如下两行：&lt;br /&gt;
&lt;br /&gt;
ro.sw.defaultlauncherpackage=xxxxxxxx&lt;br /&gt;
&lt;br /&gt;
xxxx为指定apk的包名。包名可以只写一部分，系统会自动匹配包含此字符串的包名所对应APP并将匹配到的最后一个设为Launcher。&lt;br /&gt;
&lt;br /&gt;
==如何切换以太网网卡驱动（RTL8152/SR9900）？==&lt;br /&gt;
修改init.rc，找到下列代码：&lt;br /&gt;
&amp;lt;p&amp;gt;# network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;insmod /system/vendor/modules/usbnet.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/asix.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/qf9700.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/mcs7830.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/rtl8150.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/r8152.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/cdc_ether.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/smsc75xx.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;#insmod /system/vendor/modules/smsc95xx.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;insmod /system/vendor/modules/sr9900.ko&amp;lt;/p&amp;gt;&lt;br /&gt;
保证第一行usbnet.ko不被注释掉，剩下的需要使用哪个驱动就取消注释哪个，注意不同型号的网卡驱动只能有一个存在。&lt;br /&gt;
&lt;br /&gt;
==如何开机时自动打开“停用HW叠加层”？==&lt;br /&gt;
修改build.prop，找到下列代码：&lt;br /&gt;
&lt;br /&gt;
ro.debug.disable_hwc=1&lt;br /&gt;
&lt;br /&gt;
修改该值，1为打开“停用HW叠加层”选项，0为关闭。对于高分辨率显示输出开启此项后将采用GPU进行图像叠加，可解决画面抖动、撕裂等问题，但也会加重GPU负担，功耗和发热增加。&lt;br /&gt;
&lt;br /&gt;
==如何开机默认竖屏显示（屏幕旋转）？==&lt;br /&gt;
修改build.prop，找到下列代码：&lt;br /&gt;
&lt;br /&gt;
persist.sys.ui_rotation=0&lt;br /&gt;
&lt;br /&gt;
修改该值为旋转角度，可选值0,90,180,270。注意调整后开机LOGO（bootlogo.bmp）需要进行对应方向调旋转（长宽要不可超过屏幕分辨率），启动动画（bootanimation.zip）的图片需改为竖幅（不要进行旋转）。&lt;br /&gt;
&lt;br /&gt;
==如何默认隐藏状态栏或导航栏？==&lt;br /&gt;
修改build.prop，找到下列代码：&lt;br /&gt;
&lt;br /&gt;
persist.sys.nobar=0&lt;br /&gt;
&lt;br /&gt;
修改该值为隐藏选项，0-不隐藏，1-只隐藏状态栏，2-只隐藏导航栏，3-都隐藏。&lt;br /&gt;
&lt;br /&gt;
=A133专栏=&lt;br /&gt;
==如何开启/关闭AC107麦克风？==&lt;br /&gt;
开启：&lt;br /&gt;
&lt;br /&gt;
1. 修改longan/device/config/chips/a133/configs/c3/board.dts，将节点ac107@36和snddaudio0:sound@3的status改为okay；&lt;br /&gt;
2. 修改android/device/softwinner/ceres-c3/ceres-c3.mk，将persist.sys.use_ac107=0改为persist.sys.use_ac107=1（若无该行则添加上）；&lt;br /&gt;
3. 编译longan和android后烧录验证；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
关闭：&lt;br /&gt;
&lt;br /&gt;
1. 修改longan/device/config/chips/a133/configs/c3/board.dts，将节点ac107@36和snddaudio0:sound@3的status改为disabled；&lt;br /&gt;
2. 修改android/device/softwinner/ceres-c3/ceres-c3.mk，将persist.sys.use_ac107=1改为persist.sys.use_ac107=0，或直接删除该行；&lt;br /&gt;
3. 编译longan和android后烧录验证；&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=154</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=154"/>
				<updated>2022-06-22T00:53:13Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统裁剪定制 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何适配不同的WiFi/BT模组？&lt;br /&gt;
&lt;br /&gt;
Q: 源码已适配过多款WiFi/BT模组，在“android/device/softwinner/板型”目录下，将对应型号模组的BoardConfig.mk替换掉原有文件，例如适配RTL8188EU时将BoardConfig.mk.8188eu覆盖原BoardConfig.mk，然后make clean/make即可。&lt;br /&gt;
&lt;br /&gt;
对于A40i：除了替换对应的BoardConfig.mk还需要替换init.device.rc；&lt;br /&gt;
&lt;br /&gt;
对于A133：除了替换对应的BoardConfig.mk还需要替换board.dts和sys_config.fex（位于longan/device/config/chips/a133/configs/c3）&lt;br /&gt;
&lt;br /&gt;
若要适配已支持的模组之外的型号，请自行移植内核驱动和HAL层代码，参考《Axx Android WiFi-BT配置说明书》。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）即可。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=153</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=153"/>
				<updated>2022-06-21T08:58:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）即可。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=152</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=152"/>
				<updated>2022-06-21T08:57:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚即可（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）。同时需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。&lt;br /&gt;
&lt;br /&gt;
若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。&lt;br /&gt;
&lt;br /&gt;
核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=151</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=151"/>
				<updated>2022-06-21T08:56:39Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* F.A.Q汇总 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 只修改FEX文件是否需要重新编译源码？&lt;br /&gt;
&lt;br /&gt;
Q: 不需要，仅执行pack即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何音量键（LRADC按键）乱跳？&lt;br /&gt;
&lt;br /&gt;
Q: LRADC引脚为高阻态，需通过100k上拉至AVCC（3.0V），避免采集到干扰信号导致按键误触发。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 关于电池/便携式应用：&lt;br /&gt;
&lt;br /&gt;
Q: 核心板支持3.7V锂电池供电，只需将电池接到VBAT引脚即可（对于A33，VBAT-EXT引脚在板内通过0R电阻与VBAT相连）。若电池自带温度探头，可将其接到TS引脚，同时修改FEX/DTS文件使能PMIC温度检测（默认关闭，以防不接温度探头时干扰信号误唤醒系统）。需要在FEX/DTS文件里修改电池参数（RDC-内阻 CAP-容量）使之匹配，否则可能系统电量计算不准确或计算错误。第一次接入电池需要进行1~2次充放循环，以使PMIC正确计算电量，并且不可再断开电池。核心板的PS引脚为电源输出，其输出电压等于DCIN或USBVBUS或VBAT，且关机状态下也有输出。一般接Boost升压电路升至5V供其他外设使用，并且需要加MOS管开关以防关机后外设继续消耗电量。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=150</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=150"/>
				<updated>2022-06-21T06:24:37Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* F.A.Q汇总 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A33核心板的AP-CK32KO 32.768kHz时钟输出是否能给外部RTC使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以！该时钟输出仅供AP6212等WiFi+BT模组使用，休眠/关机状态下无输出。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 必须要使用外部RTC么？片上RTC不可用么？核心板VCC-RTC是输入还是输出？&lt;br /&gt;
&lt;br /&gt;
Q: 全志片上RTC功耗较高，使用纽扣电池的情况下续航不能保证，建议使用PCF8563T一类的外部RTC以保证守时。VCC-RTC为核心板PMIC的其中一路“Always On”LDO的输出，与CPU的片上RTC供电引脚相连，只要DCIN/USBVBUS/VBAT其中任一电源有电，该LDO即输出3V3电源，以供RTC使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 触摸（其他外设）驱动能否直接编译到内核而不编译成.ko模块？&lt;br /&gt;
&lt;br /&gt;
Q: 可以，但依然建议编译为.ko模块，以便方便适配不同的板型（可以通过脚本选择insmod不同的驱动模块）。另外若驱动全部编译到内核需注意编译打包后的boot.img体积是否超过boot分区的大小！&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=149</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=149"/>
				<updated>2022-06-09T02:50:18Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 4.4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年5月16日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：增加内置串口调试助手APP；&lt;br /&gt;
&lt;br /&gt;
2022年6月9日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：解决使用电池时，关机充电时系统反复唤醒休眠的问题，并更新电池参数（内阻150mΩ/容量6000mAh）和充电电流（600mA/600mA/1200mA/1200mA）；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
2022年5月26日：&lt;br /&gt;
&lt;br /&gt;
更新烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. 修正root问题（之前并没有真正root）；&lt;br /&gt;
&lt;br /&gt;
2. 修改RFKill（Modem），增加power_en控制引脚（DTS中可增加power_en节点实现GPIO控制4G模组电源开关）；&lt;br /&gt;
&lt;br /&gt;
3. 开启GPIO User-Space支持，可通过/sys/class/gpio访问GPIO；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=148</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=148"/>
				<updated>2022-06-02T08:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统裁剪定制 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何启用BSP自带的串口助手等小工具？（如何把原厂自带的apk编译进固件？）&lt;br /&gt;
&lt;br /&gt;
Q: apk/源码位置：&lt;br /&gt;
&lt;br /&gt;
A33 Android 4.4：android/device/softwinner/polaris-common/prebuild&lt;br /&gt;
&lt;br /&gt;
A64 Android 6.0：android/device/softwinner/common/prebuild&lt;br /&gt;
&lt;br /&gt;
A40i Android 7.1：android/vendor/aw&lt;br /&gt;
&lt;br /&gt;
A133 Android 10.0：android/vendor/aw/public&lt;br /&gt;
&lt;br /&gt;
在其目录下找到apk文件或app源码所在位置的Android.mk，查看其中的LOCAL_MODULE字段，然后将其写入android/device/softwinner/版型/版型.mk中，例如：&lt;br /&gt;
&lt;br /&gt;
PRODUCT_PACKAGES += \&lt;br /&gt;
&lt;br /&gt;
ESFileExplorer \&lt;br /&gt;
&lt;br /&gt;
SerialPort&lt;br /&gt;
&lt;br /&gt;
重新make后即可将BSP自带的ES文件管理器和串口调试助手编译进去。&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=147</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=147"/>
				<updated>2022-05-26T03:26:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年5月16日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：增加内置串口调试助手APP；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
2022年5月26日：&lt;br /&gt;
&lt;br /&gt;
更新烧录固件：&lt;br /&gt;
&lt;br /&gt;
1. 修正root问题（之前并没有真正root）；&lt;br /&gt;
&lt;br /&gt;
2. 修改RFKill（Modem），增加power_en控制引脚（DTS中可增加power_en节点实现GPIO控制4G模组电源开关）；&lt;br /&gt;
&lt;br /&gt;
3. 开启GPIO User-Space支持，可通过/sys/class/gpio访问GPIO；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=146</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=146"/>
				<updated>2022-05-25T12:40:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 源码编译/烧录 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i编译Lichee报错awk: line2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q: 同A133的问题一样，安装并替换Ubuntu系统的awk为gawk即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=145</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=145"/>
				<updated>2022-05-16T05:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 常见问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
rootfs为已打包好的形式提供，位置：device/config/rootfs_tar/rootfs_ubuntu_base_1604lts.tar.bz2&lt;br /&gt;
&lt;br /&gt;
若需要修改，可将其解压到device/config/rootfs_tar/rootfs中后修改（chroot脚本为当前目录下的ch-mount.sh），改完后再打包起来覆盖原来的rootfs_ubuntu_base_1604lts.tar.bz2。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于out下面。&lt;br /&gt;
&lt;br /&gt;
（注意：需要确保build/mkcmd.sh脚本中：&lt;br /&gt;
&lt;br /&gt;
fakeroot mkfs.ubifs -m 4096 -e 258048 -c 640 -F -x zlib -r ${ROOTFS} -o ${LICHEE_PLAT_OUT}/rootfs.ubifs&lt;br /&gt;
&lt;br /&gt;
该行命令中-c参数，设定的值需大于rootfs的实际大小（-c为ubifs块数，需换算为字节数），否则打包rootfs时会报错！）&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何修改rootfs所在分区的大小？&lt;br /&gt;
&lt;br /&gt;
Q: 修改sys_parition.fex文件：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：tools/pack/chips/芯片代号/configs/default/sys_partition_linux.fex&lt;br /&gt;
&lt;br /&gt;
对于A133：device/config/chips/a133/configs/default/sys_partition.fex&lt;br /&gt;
&lt;br /&gt;
找到name = rootfs字段，修改下面的size，计算方法：该size的单位为512B，例如eMMC容量为8GB，则8*1024*1024*1024/512=16777216，然后减出上面boot等分区占用的size数后即为这里rootfs的size。修改完成后重新pack生效。&lt;br /&gt;
&lt;br /&gt;
若遇到pack报错或无法烧录，请检查这里的分区size设置是否合理！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=144</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=144"/>
				<updated>2022-05-16T05:37:04Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 常见问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
rootfs为已打包好的形式提供，位置：device/config/rootfs_tar/rootfs_ubuntu_base_1604lts.tar.bz2&lt;br /&gt;
&lt;br /&gt;
若需要修改，可将其解压到device/config/rootfs_tar/rootfs中后修改（chroot脚本为当前目录下的ch-mount.sh），改完后再打包起来覆盖原来的rootfs_ubuntu_base_1604lts.tar.bz2。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于out下面。&lt;br /&gt;
&lt;br /&gt;
（注意：需要确保build/mkcmd.sh脚本中：&lt;br /&gt;
&lt;br /&gt;
fakeroot mkfs.ubifs -m 4096 -e 258048 -c 640 -F -x zlib -r ${ROOTFS} -o ${LICHEE_PLAT_OUT}/rootfs.ubifs&lt;br /&gt;
&lt;br /&gt;
该行命令中-c参数，设定的值需大于rootfs的实际大小（-c为ubifs块数，需换算为字节数），否则打包rootfs时会报错！）&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 如何修改rootfs所在分区的大小？&lt;br /&gt;
&lt;br /&gt;
Q: 修改sys_parition.fex文件：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：tools/pack/chips/芯片代号/configs/default/sys_partition_linux.fex&lt;br /&gt;
&lt;br /&gt;
对于A133：device/config/chips/a133/configs/default/sys_partition.fex&lt;br /&gt;
&lt;br /&gt;
找到name = rootfs字段，修改下面的size，计算方法：该size的单位为512B，例如eMMC容量为8GB，则8*1024*1024*1024/512=16777216，但要减出上面boot等分区占用的size数，即为这里rootfs的size。修改完成后重新pack生效。&lt;br /&gt;
&lt;br /&gt;
若遇到pack报错或无法烧录，请检查这里的分区size设置是否合理！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=143</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=143"/>
				<updated>2022-05-16T05:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 4.4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年5月16日：&lt;br /&gt;
&lt;br /&gt;
1. 固件更新：增加内置串口调试助手APP；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=142</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=142"/>
				<updated>2022-05-07T05:10:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 定制rootfs并打包固件 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
rootfs为已打包好的形式提供，位置：device/config/rootfs_tar/rootfs_ubuntu_base_1604lts.tar.bz2&lt;br /&gt;
&lt;br /&gt;
若需要修改，可将其解压到device/config/rootfs_tar/rootfs中后修改（chroot脚本为当前目录下的ch-mount.sh），改完后再打包起来覆盖原来的rootfs_ubuntu_base_1604lts.tar.bz2。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于out下面。&lt;br /&gt;
&lt;br /&gt;
（注意：需要确保build/mkcmd.sh脚本中：&lt;br /&gt;
&lt;br /&gt;
fakeroot mkfs.ubifs -m 4096 -e 258048 -c 640 -F -x zlib -r ${ROOTFS} -o ${LICHEE_PLAT_OUT}/rootfs.ubifs&lt;br /&gt;
&lt;br /&gt;
该行命令中-c参数，设定的值需大于rootfs的实际大小（-c为ubifs块数，需换算为字节数），否则打包rootfs时会报错！）&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=141</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=141"/>
				<updated>2022-05-07T05:05:05Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 源码结构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
rootfs为已打包好的形式提供，device/config/rootfs_tar/rootfs_ubuntu_base_1604lts.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=140</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=140"/>
				<updated>2022-05-07T05:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 定制rootfs并打包固件 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
rootfs为已打包好的形式提供，device/config/rootfs_tar/rootfs_ubuntu_base_1604lts.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=139</id>
		<title>Linux开发环境搭建/编译/打包</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=Linux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/%E7%BC%96%E8%AF%91/%E6%89%93%E5%8C%85&amp;diff=139"/>
				<updated>2022-05-07T05:00:47Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 源码结构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
*同Android部分&lt;br /&gt;
==部署交叉编译工具链==&lt;br /&gt;
用于编译busybox和开发用户应用程序，若不需要这些可忽略此步骤。&lt;br /&gt;
&lt;br /&gt;
下载工具链：&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz（适用A33/A40i）]&lt;br /&gt;
&lt;br /&gt;
[http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz（适用A64/A133）]&lt;br /&gt;
&lt;br /&gt;
解压工具链（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt&lt;br /&gt;
&lt;br /&gt;
配置环境变量（以gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf为例）:&lt;br /&gt;
&lt;br /&gt;
gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在结尾添加export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf/bin，保存后重启系统。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
mkdir HDA64_Linux&lt;br /&gt;
&lt;br /&gt;
tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法同Android部分。&lt;br /&gt;
&lt;br /&gt;
==编译内核==&lt;br /&gt;
直接执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==定制rootfs并打包固件==&lt;br /&gt;
Linux系统需要有一套根文件系统（rootfs）来实现相应的应用功能。rootfs的来源：&lt;br /&gt;
===使用第三方的rootfs===&lt;br /&gt;
可直接下载做好的rootfs包，解压到myrootfs/rootfs目录下即可。例如使用光盘资料中的Ubuntu_LXDE：&lt;br /&gt;
&lt;br /&gt;
$ tar rootfs_ubuntu1604lts_lxde_aarch64.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
还有Linaro等第三方开源组织提供的rootfs可用，可自行尝试移植：&lt;br /&gt;
[http://releases.linaro.org/archive/ http://releases.linaro.org/archive/]&lt;br /&gt;
===使用debootstrap制作rootfs===&lt;br /&gt;
使用工具脚本debootstrap可以制作基于Debian/Ubuntu的rootfs，这里不做详细介绍，可参考《[https://blog.csdn.net/qq_36956154/article/details/100606619 debootstrap 制作arm64位根文件系统]》。&lt;br /&gt;
===使用busybox制作rootfs===&lt;br /&gt;
若需要体积最小的rootfs，可使用万能工具箱busybox构建最小系统。这里不做详细介绍，可参考《[https://blog.csdn.net/u012247418/article/details/106021389 基于busybox构建rootfs]》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
注：无论采用哪种方式构建rootfs，必须确认下载/编译出的代码CPU平台是否为对应处理器的：A33/A40i为armel，A64/A133为aarch64。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
制作好rootfs后，修改myrootfs/make_ext4fs.sh中的PARTITION_SIZE的值，使其大于整个rootfs的体积（单位MB）。最后执行：&lt;br /&gt;
&lt;br /&gt;
$ ./pack_linux_firmware.sh&lt;br /&gt;
&lt;br /&gt;
打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：编译内核时提示awk: line 2: function strtonum never defined&lt;br /&gt;
&lt;br /&gt;
Q：主机系统缺少gawk，执行下列命令安装：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印JBD2: Unrecognised features on journal&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh的末尾添加：&lt;br /&gt;
&lt;br /&gt;
tune2fs -O ^has_journal rootfs.ext4&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：打包后的固件烧录后无法启动，Console打印couldn't mount RDWR because of unsupported optional features (400)&lt;br /&gt;
&lt;br /&gt;
Q：出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的metadata_csum选项：&lt;br /&gt;
&lt;br /&gt;
修改myrootfs/make_ext4fs.sh中的第6行，在末尾添加-O ^metadata_csum：&lt;br /&gt;
&lt;br /&gt;
mkfs.ext4 rootfs.ext4 -O ^metadata_csum&lt;br /&gt;
&lt;br /&gt;
保存后重新打包固件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：我的核心板eMMC配置为8GB，但为何系统内显示可用空间只有几百MB了？（df -h查看）&lt;br /&gt;
&lt;br /&gt;
Q：首先bootloader和kernel等会占用一部分空间，实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小（分区大小在sys_partition.fex中查看和修改），第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以，方法为在核心板系统上执行下列命令：&lt;br /&gt;
&lt;br /&gt;
$ resize2fs /dev/mmcblk0p7&lt;br /&gt;
&lt;br /&gt;
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本，但如果系统启动时resize_partition报错且分区未能自动扩展时，需要修改rootfs里的resize_partition.sh，在第二行空白添加:&amp;lt;p&amp;gt;sleep 5&amp;lt;/p&amp;gt;保存后重新打包即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：Linux系统登录的用户名和密码？&lt;br /&gt;
&lt;br /&gt;
Q：用户名root密码root（桌面版：用户名hddz密码hd12345678）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：编译后的固件为什么没有桌面？&lt;br /&gt;
&lt;br /&gt;
Q：使用带LXDE桌面环境的rootfs，屏幕上才会有桌面显示！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：为何桌面系统无法使用蓝牙/HDMI等外设？&lt;br /&gt;
&lt;br /&gt;
Q：当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示，可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能，请随时关注更新！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：无桌面的系统如何测试相关功能？&lt;br /&gt;
&lt;br /&gt;
Q：请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。&lt;br /&gt;
&lt;br /&gt;
Ubuntu_Base的rootfs为最小系统，仅附带系统最基础的功能组件，若需增加软件包可通过以太网联网后通过apt-get命令安装。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=138</id>
		<title>固件构建指南——环境搭建与编译步骤</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E5%9B%BA%E4%BB%B6%E6%9E%84%E5%BB%BA%E6%8C%87%E5%8D%97%E2%80%94%E2%80%94%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E4%B8%8E%E7%BC%96%E8%AF%91%E6%AD%A5%E9%AA%A4&amp;diff=138"/>
				<updated>2022-05-07T05:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 源码结构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=编译环境搭建=&lt;br /&gt;
==安装Ubuntu操作系统==&lt;br /&gt;
建议装在本机（编译速度快），没有条件的可以装在虚拟机中。&lt;br /&gt;
&lt;br /&gt;
推荐版本：16.04LTS Desktop AMD64（其他版本也可（必须为64位），但可能会存在软件包源依赖问题导致配置步骤和预期效果与本文不符，有能力的用户可以尝试！）&lt;br /&gt;
&lt;br /&gt;
==安装所需组件==&lt;br /&gt;
在终端窗口内输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install bison build-essential ccache curl flex gcc-multilib g++-multilib git gnupg gperf lib32ncurses5-dev&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install lib32z1-dev libc6-dev-i386 libgl1-mesa-dev libreadline6-dev:i386 libx11-dev:i386 libxml2-utils m4&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install python-markdown tofrodos unzip x11proto-core-dev xsltproc zip zlib1g-dev:i386 bc u-boot-tools&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install gawk #A133编译必需&lt;br /&gt;
&lt;br /&gt;
==安装JDK==&lt;br /&gt;
===安装Oracle JDK 1.6（针对Android 4.4）===&lt;br /&gt;
1. 下载jdk-6u45-linux-x64.bin（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝jdk-6u45-linux-x64.bin到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 执行安装：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo chmod 777 jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
sudo ./jdk-6u45-linux-x64.bin&lt;br /&gt;
&lt;br /&gt;
安装完成后会在当前目录下生成jdk1.6.0_45文件夹。&lt;br /&gt;
&lt;br /&gt;
5. 配置环境变量&lt;br /&gt;
&lt;br /&gt;
编辑/etc/profile文件：&lt;br /&gt;
&lt;br /&gt;
sudo gedit /etc/profile&lt;br /&gt;
&lt;br /&gt;
在文件结尾添加：&lt;br /&gt;
&lt;br /&gt;
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45&lt;br /&gt;
&lt;br /&gt;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br /&gt;
&lt;br /&gt;
export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
保存后重启系统生效。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 7（针对Android 5.1/6.0）===&lt;br /&gt;
由于目前16.04LTS软件源已移除OpenJDK 7，无法通过apt-get安装，这里提供一个较老版本的离线安装包。&lt;br /&gt;
&lt;br /&gt;
1. 下载openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 在Ubuntu系统中创建JDK安装目录（若已存在则可跳过）：&lt;br /&gt;
&lt;br /&gt;
sudo mkdir /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
3. 拷贝openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz到此目录：&lt;br /&gt;
&lt;br /&gt;
sudo cp openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
4. 解压并重命名：&lt;br /&gt;
&lt;br /&gt;
cd /usr/lib/jvm&lt;br /&gt;
&lt;br /&gt;
sudo tar xvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
sudo mv java-se-7u75-ri java-7-openjdk-amd64&lt;br /&gt;
&lt;br /&gt;
目前不需要配置环境变量，因为Android BSP的Makefile可以自动查找java-7-openjdk-amd64这个路径并调用它。&lt;br /&gt;
&lt;br /&gt;
===安装OpenJDK 8（针对Android 7.1/10/11）===&lt;br /&gt;
在终端窗口中输入下列命令：&lt;br /&gt;
&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
sudo apt-get install openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
注意：目前发现最新的OpenJDK 8（运行命令/usr/lib/jvm/java-8-openjdk-amd64/bin/java -version查看版本为8u292-b10-0ubuntu）与Android 7.1（可能10/11也存在此问题）BSP中的Jack编译工具存在兼容性问题，导致Jack Server不能正常启动，无法完成编译（禁用Jack后仍无法正常编译）。建议退回到老版本（1.8.0_03-Ubuntu或其他较老的版本），并关闭系统自动更新防止又自己升级到最新。方法：&lt;br /&gt;
&lt;br /&gt;
1. 卸载原OpenJDK-8：sudo apt-get purge openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
2. 检查当前系统软件源有哪些OpenJDK-8可用版本：apt-cache madison openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
3. 安装老版本的OpenJDK-8：sudo apt-get install openjdk-8-jdk=版本名&lt;br /&gt;
&lt;br /&gt;
注：可能需要先安装该版本的依赖库后才能安装成功，具体请参考apt的提示进行操作。另参考下面的资料：&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/EasonJim/p/7144017.html Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本]&lt;br /&gt;
&lt;br /&gt;
==降级make版本==&lt;br /&gt;
&lt;br /&gt;
1. 下载make-3.81.tar.gz（可在资料光盘/环境搭建中下载）&lt;br /&gt;
&lt;br /&gt;
2. 解压、编译并安装：&lt;br /&gt;
&lt;br /&gt;
tar xvf make-3.81.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
cd make-3.81&lt;br /&gt;
&lt;br /&gt;
./configure&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&lt;br /&gt;
3. 替换原有make&lt;br /&gt;
&lt;br /&gt;
上述操作默认将make安装到/usr/local/bin下，我们备份下原版本（4.1）并链接当前版本（3.81）：&lt;br /&gt;
&lt;br /&gt;
cd /usr/bin&lt;br /&gt;
&lt;br /&gt;
sudo mv make make.bak&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /usr/local/bin/make make&lt;br /&gt;
&lt;br /&gt;
此时再执行make -v显示版本为GNU Make 3.81。&lt;br /&gt;
&lt;br /&gt;
=编译步骤=&lt;br /&gt;
==解压源代码==&lt;br /&gt;
解压Lichee（Linux BSP）部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf lichee.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
解压Android部分到当前目录：&lt;br /&gt;
&lt;br /&gt;
$ tar -zxvf android.tar.gz -C .&lt;br /&gt;
&lt;br /&gt;
（对于A133：Linux BSP更名为Longan，注意辨别！）&lt;br /&gt;
&lt;br /&gt;
==源码结构==&lt;br /&gt;
对于A33/A64/A40i：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：lichee/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：lichee/brandy/uboot-xxxx.xx&lt;br /&gt;
&lt;br /&gt;
Linux内核：lichee/linux-3.x&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：lichee/tools/pack/chips/sunxiwxpx/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于A133：&lt;br /&gt;
&lt;br /&gt;
SPL（底层引导代码）：longan/brandy&lt;br /&gt;
&lt;br /&gt;
U-Boot：longan/brandy/brandy-2.0/uboot-2018&lt;br /&gt;
&lt;br /&gt;
Linux内核：longan/kernel/linux-4.9&lt;br /&gt;
&lt;br /&gt;
系统配置（env.txt和fex文件等）：longan/device/config/chips/a133/config&lt;br /&gt;
&lt;br /&gt;
Android源码：android&lt;br /&gt;
&lt;br /&gt;
==编译U-Boot==&lt;br /&gt;
默认无需编译。若要修改U-Boot，编译方法如下：&lt;br /&gt;
&lt;br /&gt;
在brandy/uboot-xxxx.xx目录下（对于A133为brandy/brandy-2.0/uboot-2018）执行：&lt;br /&gt;
&lt;br /&gt;
对于A33：make distclean &amp;amp; make sun8iw5p1 -j16&lt;br /&gt;
&lt;br /&gt;
对于A64：make distclean &amp;amp; make sun50iw1p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A40i：make distclean &amp;amp; make sun8iw11p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
对于A133：make distclean &amp;amp; make sun50iw10p1_config &amp;amp; make -j16&lt;br /&gt;
&lt;br /&gt;
（编译生成的相关bin文件会自动拷贝到打包目录下）&lt;br /&gt;
&lt;br /&gt;
==编译Lichee/Longan==&lt;br /&gt;
初次编译（使用原厂源码）请先配置编译选项，在lichee（A133为longan）目录下执行：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh config&lt;br /&gt;
&lt;br /&gt;
会依次显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：依次选 0.sun8iw5p1 -&amp;gt; 0.android-&amp;gt; 0.linux-3.4 -&amp;gt; 0.vstar&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：依次选 0.sun50iw1p1 -&amp;gt; 0.android -&amp;gt; 0.linux-3.10 -&amp;gt; 2.p2&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：依次选 0.sun8iw11p1 -&amp;gt; 1.androidm -&amp;gt; 0.linux-3.10 -&amp;gt; 0.a40-p1&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：依次选 0.android -&amp;gt; 0.a100 -&amp;gt; 2.c3&lt;br /&gt;
&lt;br /&gt;
（弘迪开源源码默认已经进行了此配置，可无需执行！）&lt;br /&gt;
&lt;br /&gt;
然后进行编译：&lt;br /&gt;
&lt;br /&gt;
$ ./build.sh&lt;br /&gt;
&lt;br /&gt;
==编译Android并打包==&lt;br /&gt;
在android目录下依次执行以下命令：&lt;br /&gt;
&lt;br /&gt;
$ source build/envsetup.sh&lt;br /&gt;
&lt;br /&gt;
$ lunch&lt;br /&gt;
&lt;br /&gt;
会显示若干选项，输入对应的数字按回车选择对应的选项，最终完成配置。&lt;br /&gt;
&lt;br /&gt;
对于A33（Android 4.4）：选 vstar-eng&lt;br /&gt;
&lt;br /&gt;
对于A64（Android 6.0）：选 tulip_p2-eng&lt;br /&gt;
&lt;br /&gt;
对于A40i（Android 7.1）：选 a40_p1-eng&lt;br /&gt;
&lt;br /&gt;
对于A133（Android 10）：选 ceres_c3-eng&lt;br /&gt;
&lt;br /&gt;
$ extract-bsp&lt;br /&gt;
&lt;br /&gt;
$ make -j8&lt;br /&gt;
&lt;br /&gt;
CPU有几线程-j后面的数字就是几。例如使用i5 8250U，是4核8线程的处理器，则这里参数为-j8。若make过程中出现内存不足的情况可尝试参数降为-j4或更低。编译过程大概持续数小时，视电脑配置不同而定。&lt;br /&gt;
&lt;br /&gt;
$ pack&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：打包好的固件位于lichee/tools/pack下面。&lt;br /&gt;
&lt;br /&gt;
对于A133：打包好的固件位于longan/out下面。&lt;br /&gt;
&lt;br /&gt;
==清理源码（用于打包备份）==&lt;br /&gt;
清理Linux BSP：&lt;br /&gt;
&lt;br /&gt;
对于A33/A64/A40i：执行lichee下的./clean.sh即可。&lt;br /&gt;
&lt;br /&gt;
对于A133：执行longan下的./build.sh clean即可。&lt;br /&gt;
&lt;br /&gt;
清理Android：&lt;br /&gt;
&lt;br /&gt;
在android目录下执行make clean即可清理已编译内容。&lt;br /&gt;
&lt;br /&gt;
=常见问题=&lt;br /&gt;
A：关于A33 Android 4.4编译Lichee遇到的报错&lt;br /&gt;
&lt;br /&gt;
Q：需要修改源码的下列部分：&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/Makefile中删掉-llounny&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/arch/arm/lib/board.c中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
extern void setup_vga_output_mode(void);&lt;br /&gt;
&lt;br /&gt;
extern void lounny_verify(void);&lt;br /&gt;
&lt;br /&gt;
setup_vga_output_mode();&lt;br /&gt;
&lt;br /&gt;
lounny_verify();&lt;br /&gt;
&lt;br /&gt;
lichee/brandy/u-boot-2011.09/board/sunxi/Makefile中删掉COBJS-y += vga_output_mode.o和COBJS-y += lounny.o&lt;br /&gt;
&lt;br /&gt;
lichee/linux-3.4/drivers/misc/Makefile中删掉下列内容：&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= hdgm_encrypt.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_HDGM_ENCRYPT)	+= liblounny.jmk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A：A64 Android 6.0编译android部分时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误&lt;br /&gt;
&lt;br /&gt;
Q：问题的原因在于AOSP中的预编译好的ld程序存在bug，我们使用Ubuntu系统默认的ld来替换它。具体步骤如下：&lt;br /&gt;
&lt;br /&gt;
将aosp中的ld改名：&lt;br /&gt;
&lt;br /&gt;
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin&lt;br /&gt;
&lt;br /&gt;
$ mv ld ld.old&lt;br /&gt;
&lt;br /&gt;
使用soft link，链接到全局ld：&lt;br /&gt;
&lt;br /&gt;
$ ln -s /usr/bin/ld.gold ld&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=137</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=137"/>
				<updated>2022-05-07T04:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* A133 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年5月7日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=136</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=136"/>
				<updated>2022-05-03T01:58:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为何A33/A133的RTL8152B以太网插口黄色指示灯常亮？如何改变8152的指示灯显示状态？&lt;br /&gt;
&lt;br /&gt;
Q: 可在驱动内修改（内核目录/drivers/net/usb/r8152.c）找到下列代码：&lt;br /&gt;
&lt;br /&gt;
if (tp-&amp;gt;version == RTL_VER_01) {&lt;br /&gt;
&lt;br /&gt;
	ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE);&lt;br /&gt;
&lt;br /&gt;
	ocp_data &amp;amp;= ~LED_MODE_MASK;&lt;br /&gt;
&lt;br /&gt;
	ocp_write_word(tp, MCU_TYPE_PLA, PLA_LED_FEATURE, ocp_data);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
在其后面添加：&lt;br /&gt;
&lt;br /&gt;
//led0=link100 led1=link10+link100+active&lt;br /&gt;
&lt;br /&gt;
ocp_data = 0xB2;&lt;br /&gt;
&lt;br /&gt;
ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, ocp_data);&lt;br /&gt;
&lt;br /&gt;
保存后重新编译lichee/longan和android后烧录验证。&lt;br /&gt;
&lt;br /&gt;
寄存器PLA_LEDSEL/0xDD90为RTL8152的LED状态控制寄存器，写入对应的值可改变LED的指示状态，具体可以参考其Datasheet（[[文件:RTL8152B.pdf]]）。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%96%87%E4%BB%B6:RTL8152B.pdf&amp;diff=135</id>
		<title>文件:RTL8152B.pdf</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%96%87%E4%BB%B6:RTL8152B.pdf&amp;diff=135"/>
				<updated>2022-05-03T01:57:06Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=134</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=134"/>
				<updated>2022-04-29T08:08:14Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10 “显示在其他应用的上层”界面显示“无法使用该功能”？&lt;br /&gt;
&lt;br /&gt;
Q: Android Go 低内存设备存在多种动画或者功能默认不启用，比如应用窗口化功能。若要解除此限制，可使用固件修改器修改build.prop，将ro.config.low_ram由true改为false，或在SDK源码中修改ceres_c3.mk相关项后重新编译打包固件。&lt;br /&gt;
&lt;br /&gt;
参考资料：[https://blog.csdn.net/u012824529/article/details/103776971 Android Go 低内存设备存在多种动画或者功能默认不启用 isLowRamDeviceStatic()]&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=133</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=133"/>
				<updated>2022-04-28T08:01:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统源码编译 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==源码编译/烧录==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 虚拟机编译Android固件报错“out of memory”？&lt;br /&gt;
&lt;br /&gt;
Q: Android编译比较消耗CPU和内存资源，请为虚拟机分配更多的RAM空间！或尝试减少编译线程（make -j4或-j2）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133为何烧录过“安全固件”后无法再次烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 烧录安全固件会将固件中的证书写入CPU的eFuse，此后再次烧录的固件必须具备同样的证书才可以烧录进去。即烧录过此安全固件的CPU以后只能烧录这个固件或带有相同证书的固件，无法烧录其他固件了。建议不要编译和烧录“安全固件”（pack -v命令生成的）！&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=132</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=132"/>
				<updated>2022-04-28T07:57:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统源码编译 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==系统源码编译==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 为什么A133修改完内核.config后重新编译longan之前修改的内容恢复原样了？&lt;br /&gt;
&lt;br /&gt;
Q: 在longan中执行./build.sh config时，BSP的脚本会根据当前目录下的隐藏文件.buildconfig中LICHEE_KERN_DEFCONF环境变量所指向的内核defconfig文件，将其拷贝并覆盖当前的内核.config。不执行./build.sh config则不会这样，或将改后的.config复制覆盖掉LICHEE_KERN_DEFCONF所指向的defconfig文件即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=131</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=131"/>
				<updated>2022-04-28T07:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==系统源码编译==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持SD卡烧录固件？&lt;br /&gt;
&lt;br /&gt;
Q: 原厂提供PhoenixCard工具用于生成烧录TF卡，具体使用方法请参考原厂文档，这里暂时不做进一步支持。&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=130</id>
		<title>F.A.Q汇总</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=F.A.Q%E6%B1%87%E6%80%BB&amp;diff=130"/>
				<updated>2022-04-28T07:51:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* 系统功能问题 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=F.A.Q汇总=&lt;br /&gt;
==系统源码编译==&lt;br /&gt;
A: A133 Android 10编译完后打包（运行pack命令）时报“flags:FATAL unable to parse provided options with getopt.”错误。&lt;br /&gt;
&lt;br /&gt;
Q: A133的BSP中打包脚本调用了awk，而awk工具分mawk和gawk两个版本，Ubuntu自带的为mawk而脚本使用gawk的语法编写的，导致脚本parse命令行时出错。解决方法：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install gawk&lt;br /&gt;
&lt;br /&gt;
安装好后重新进行打包。若依然不行则检查系统当前使用的awk版本，强制设置为gawk：&lt;br /&gt;
&lt;br /&gt;
$ sudo update-alternatives --config awk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A40i Android 7.1编译时报错“No Jack server running.”&lt;br /&gt;
&lt;br /&gt;
Q: 不要关闭当前编译的终端窗口！直接运行：&lt;br /&gt;
&lt;br /&gt;
$ jack-admin start-server&lt;br /&gt;
&lt;br /&gt;
然后继续make即可。&lt;br /&gt;
&lt;br /&gt;
==系统裁剪定制==&lt;br /&gt;
A: 如何将自己的APP打包到Android固件中？为何用固件修改器植入APP后APP无法正常打开？（带lib.so库的提示找不到对应的库文件）&lt;br /&gt;
&lt;br /&gt;
Q: 固件修改器对于带有Native库的APP不能正常将APP内包含的库文件正确部署到固件内对应的分区目录中，导致APP启动会出现找不到库的情况。建议将APP随Android源码一起编译打包，具体方法可参考《A64_Android_L快速移植指南》、《Android 10 SDK快速移植指南》中“预装APK”章节的介绍。（文档可在资料光盘中查找）&lt;br /&gt;
&lt;br /&gt;
==系统功能问题==&lt;br /&gt;
A: A133休眠后无法唤醒？&lt;br /&gt;
&lt;br /&gt;
Q: 调试发现AC107驱动会导致休眠功能异常，目前尚未能解决此问题，若需要休眠功能的用户可暂时屏蔽AC107，方法如下：&lt;br /&gt;
&lt;br /&gt;
使用固件修改器（DragonFace 2.6.1）或直接修改源码中的kernel dts配置，找到节点sound@3，将其status改为disabled即可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: A133 Android 10使用移远EC20通信模块，可以看到信号强度，但无4G图标且无法上网？&lt;br /&gt;
&lt;br /&gt;
Q: 当前移远RIL库适配存在问题，修改android/vendor/aw/public/prebuild/lib/librild/radio_common.mk，将对应语句改为下面的样子：&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-up:system/etc/ppp/ip-up \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/arm64-v8a/ip-down:system/etc/ppp/ip-down \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/ql-ril.conf:/system/etc/ql-ril.conf \&lt;br /&gt;
&lt;br /&gt;
$(LOCAL_PATH)/libquectel-ril/apns-conf.xml:system/etc/apns-conf.xml&lt;br /&gt;
&lt;br /&gt;
保存后make installclean后重新make生成固件。&lt;br /&gt;
&lt;br /&gt;
（移远EC200T/S等RNDIS拨号方式的不受影响）&lt;br /&gt;
&lt;br /&gt;
A: 核心板的FEL引脚可否作GPIO使用？&lt;br /&gt;
&lt;br /&gt;
Q: 不可以。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A: 核心板是否支持&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=129</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=129"/>
				<updated>2022-04-28T07:50:10Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并增加32位适配）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=128</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=128"/>
				<updated>2022-04-28T07:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;br /&gt;
&lt;br /&gt;
2022年4月28日：&lt;br /&gt;
&lt;br /&gt;
更新源码：&lt;br /&gt;
&lt;br /&gt;
1. 解决移远EC20通信模块有信号强度无4G图标且无法上网的问题（RIL库.mk脚本已做修改，并适配32位模式）；&lt;br /&gt;
&lt;br /&gt;
2. 适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
3. 增加AW869A 5.8G Wi-Fi支持（32位/64位均可）；&lt;br /&gt;
&lt;br /&gt;
4. 增加深圳百年芯B101N531C-28B液晶适配；&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=127</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=127"/>
				<updated>2022-04-24T02:54:09Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* A133 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;br /&gt;
&lt;br /&gt;
2022年4月24日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，增加AW869A 5.8G Wi-Fi支持；&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	<entry>
		<id>http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=126</id>
		<title>源码/文档版本迭代记录</title>
		<link rel="alternate" type="text/html" href="http://hdonline.a40pi.top/index.php?title=%E6%BA%90%E7%A0%81/%E6%96%87%E6%A1%A3%E7%89%88%E6%9C%AC%E8%BF%AD%E4%BB%A3%E8%AE%B0%E5%BD%95&amp;diff=126"/>
				<updated>2022-04-22T08:26:53Z</updated>
		
		<summary type="html">&lt;p&gt;Hdadmin：/* Android 10.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=源码/文档版本迭代记录=&lt;br /&gt;
==通用部分==&lt;br /&gt;
==A33==&lt;br /&gt;
===Android 4.4===&lt;br /&gt;
2022年2月17日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2022年1月29日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年4月6日：&lt;br /&gt;
&lt;br /&gt;
1. 更新了烧录固件（上一个固件有问题，无法正常启动。）&lt;br /&gt;
&lt;br /&gt;
==A64==&lt;br /&gt;
===Android 6.0===&lt;br /&gt;
2021年12月20日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
===Linux===&lt;br /&gt;
2021年12月25日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A40i==&lt;br /&gt;
===Android 7.1===&lt;br /&gt;
2022年2月28日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
==A133==&lt;br /&gt;
===Android 10.0===&lt;br /&gt;
2022年1月13日：&lt;br /&gt;
&lt;br /&gt;
1. 初始版本（源码、固件）&lt;br /&gt;
&lt;br /&gt;
2022年3月25日：&lt;br /&gt;
&lt;br /&gt;
1. 修正重新进行./build.sh config操作后kernel defconfig被覆盖，导致android编译报错的问题；&lt;br /&gt;
&lt;br /&gt;
2. 关于休眠后无法唤醒的问题：请参考F.A.Q汇总。&lt;br /&gt;
&lt;br /&gt;
（仅变更源码，固件无变化。）&lt;br /&gt;
&lt;br /&gt;
2022年3月26日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，解决移远EC20通信模块有信号强度无4G图标且无法上网的问题；&lt;br /&gt;
&lt;br /&gt;
2022年4月22日：&lt;br /&gt;
&lt;br /&gt;
1. 更新烧录固件，禁用AC107麦克风阵列，适配GC5035AF摄像头（单摄，对焦暂不支持）；&lt;/div&gt;</summary>
		<author><name>Hdadmin</name></author>	</entry>

	</feed>