基于海思Hi3716cv200的Android源码编译及烧写
1、先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时。而且还多次出现outofmemoryerror 错误。最后将硬件升级为I7 4770、16G内存、2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误。 所以不推荐在虚拟机里面跑。
2、根据官方文档配置编译环境:
官方文档说的是在“发布包/Software/ServerInstall”目录中使用root权限执行ServerInstall.sh脚本,如:
software/ServerInstall$sudo ./ServerInstall.sh
但是经过我的实际操作发现,脚本中对jdk的安装配置指令无法执行,原因是它提供的源不对。我的解决办法是从Oracle官网直接下载jdk-6u45-linux-x64.bin,copy到/usr/lib/jvm(没有的目录要自己建)中进行安装,然后再/etc/bash.bashrc中配置java的环境变量:
export JAVA_HOME="/usr/lib/jvm/xxx" export PATH="/usr/lib/jvm/xxx/bin":$PATH
注意:xxx指代你安装后的java目录名。
然后再执行脚本:
software/ServerInstall$sudo ./ServerInstall.sh
3、重新登录后进入Android源码解压后的目录$ANDROID_SRC,在根目录下依次执行以下命令:
source build/envsetup.sh lunch Hi3716CV200-eng
如果出现bison未找到之类的错误,使用
sudo apt-get install bison
装好即可。
3、所有错误都解决后,就可以执行
make bigfish -j8 2>&1 | tee bigfish.log
命令进行源码的完整编译了。注意我的CPU是I7 4770,属于四核八线程,所以用-j8选项。而华为他们用的编译服务器是64核 CPU、32G内存,所以他们可以用-j32参数。总之,这个参数应该根据你的cpu来选。
4、完整编译的结果就是在out\target\product\Hi3716CV200/下的Nand和Emmc目录下都会生成相应的镜像。接下来就是把这些镜像烧写到他们提供的开发板上。
烧写镜像需要的工具:PC(Windows系统,因为华为只提供了windows下的烧写工具)、海思开发板、usb转串口线,网线,
- 将生成Emmc目录拷贝到PC上。(之所以拷Emmc目录,是因为我这个板子的U14芯片焊接的是Emmc芯片,如果你的板子焊接的是Nandflash,就要拷Nand目录)。
- 将$ANDROID_HOME/devicehisilicon/bigfish/sdk/tools/windows目录拷贝到PC上。windows目录中存储的是烧写工具
- 拿一根usb转串口线,连接板子的J35和PC的USB接口上,打开超级终端。
- 拿一根网线,连接板子的j13和PC的网口,并配置PC的IP地址为192.168.1.1
- 关闭开发板电源,打开windows目录中的Hitool工具,使用其中的HiBurn插件。具体配置见海思提供的视频教程。配置好后,选择”烧写eMMC“,分区表文件选择Emmc目录下的xml文件,然后在下面的选项中把Emmc目录中的所有镜像配置进去。点击”烧写“按钮后,打开开发板电源,就开始少写了,烧写完成会有提示。
5、烧写完成后,使用HDMI线将开发板连接到显示器,启动开发板,开始会出现一段车展视频(FastPlay),随后便会进入Android系统。但是,目前的系统还不能播放mkv,ts等视频文件,原因是没有相关的库文件。这个得需要向华为索要音视频库,然后解压,并将最后的.so文件拷贝到Android系统的/system/lib目录。拷贝方法:
- 将开发板和PC分别联网(必须得保证在同一局域网下,没测试两者互联,想来应该也是可以的),开发板Ip:192.168.0.88,PC ip:192.168.0.86
- 在PC的命令行里执行:
adb kill-server adb connect 192.168.0.88:5555 adb devices(检查是否连接成功) adb remout adb push /audiolib/**/.../prebuilts/ /system/lib
adb reboot
注意:最好在push后reboot前,在超级终端里查看/system/lib目录下是否增加了一些音视频库文件
至此,基于Hi3716c的Android系统开发的前期准备工作就完成了。