Hi3751V811 开发环境搭建

一、 Android 开发环境要求

  • 操作系统:AndroidO 需要 64 位04(不支持 16.04)
  • 硬盘空间:如果是校验代码,至少需要 100GB 可用磁盘空间;如果要进行编译,则还需要 150GB。如果要进行多次编译或使用 ccache,则需要更多空间
  • Python 版本:4~2.7
  • 4 需要 JDK 版本 1.6,Android5.1 需要 JDK 版本为 1.7,Android7.0 需要 JDK 版本为 1.8,Android8.0 需要 JDK 版本为 1.8
  • 交叉编译工具链:arm-hisiv610-linux-,aarch64-hisiv610-linux
  • make 版本:GNU Make 3.81

二、开发环境搭建

1. 更换源

① 备份源列表

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 

② 打开 sources.list 文件

$ sudo vim /etc/apt/sources.list

 

③ 修改 sources.list 文件

# 阿里镜像源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

或者使用网易的源
# 网易镜像源
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse


④ 更新并升级

$ sudo apt-get update && sudo apt-get upgrade


2. 安装工具包

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc python uboot-mkimage lzma

注:ia32-libs lib32readline5-dev uboot-mkimage 提示安装失败,根据提示安装替代包

3. 安装 JDK

编译 Android4.X 版本请安装 JDK1.6,Android5.X 请安装 JDK1.7,Android7.X 请安装 JDK1.8。

JDK1.6

$ sudo apt-get install sun-java6-jdk

JDK1.7

$ sudo apt-get install openjdk-7-jdk

JDK1.8

$ sudo apt-get install openjdk-8-jdk

我这里安装的是 JDK1.8,安装失败可以使用如下方法:

$ sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk

4. 安装交叉编译工具链

将 tools.tar.gzaa 和 tools.tar.gzab 合并成一个文件:

$ cat tools.tar.gzaa tools.tar.gzab > tools.tar.gz

解压:

$ tar -xzvf tools.tar.gz -C ~/Desktop/hisilicon/tools/

进入到生成目录:

$ cd ~/Desktop/hisilicon/tools/device/hisilicon/bigfish/sdk/tools/linux/toolchains/

解压文件:

$ tar -xvf aarch64-hisiv610-linux.tar
$ tar -xvf arm-hisiv610-linux.tar


进入对应目录执行:

64 位

$ cd aarch64-hisiv610-linux/
$ chmod u+x aarch64-hisiv610-linux.install
$ sudo ./aarch64-hisiv610-linux.install

32 位

$ cd arm-hisiv610-linux/
$ chmod u+x arm-hisiv610-linux.install
$ sudo ./arm-hisiv610-linux.install


安装完成后执行 source 更新

$ source /etc/profile

输入“arm-hisiv610-linux-”后按 tab 键,如果能自动将命令补齐,则说明安装成功。

 

注:

如果无法自动补齐,通过下面命令确认环境变量是否正确:

$ echo $PATH

如果不正确请用 root 用户编辑 /etc/profile 文件:

$ sudo vi /etc/profile

编译 32bit 添加如下语句:

export PATH="/home/root/bin/x86-arm/arm-hisiv200-linux/target/bin:$PATH"

编译 64bit 添加如下语句:

export PATH=/opt/hisi-linux/arm64/aarch64-linux-gnu/bin/:/opt/hisi-linux/:$PATH

5. 设置最大打开文件数

当编译过程中遇到如下错误时:

Exception in thread "main" java.lang.RuntimeException: error while reading to file: java.io.FileNotFoundException, msg:cts/tools/vm-tests/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java (Too many openfiles) atutil.build.BuildDalvikSuite.parseTestMethod(BuildDalvikSuite.java:743) atutil.build.BuildDalvikSuite.handleTests(BuildDalvikSuite.java:359) atutil.build.BuildDalvikSuite.compose(BuildDalvikSuite.java:170) Atutil.build.BuildDalvikSuite.main(BuildDalvikSuite.java:136)


需要设置打开最大文件数限制,方法如下:

$ sudo vi /etc/security/limits.conf

在最后一行添加如下内容:

* - nofile 8192

重新登录后,执行 ulimit -n:检查是否设置正确,如果配置正确,命令执行结果应为:8192

6. 确认服务器 umask 的值

在编译服务器 shell 中输入 umask 命令,查看返回值是否为 0022

$ umask

如果不是,则需要编辑 /etc/profile 文件

$ sudo vi /etc/profile

添加如下语句:

umask 022


重新登录后,确认 umask 值是否正确即可

$ source /etc/profile

7. 确认服务器 make 版本

在编译服务器 shell 中输入 make –v命令,查看 make 版本是否为 3.81 或 3.82

$ make -v

如果不是,则需要使用 sudo apt-get install 命令安装对应的版本

$ sudo apt-get install make=3.81

8. 在服务器根目录建立 /run/shm 目录

执行命令:

$ sudo mkdir -p /run/shm/
$ sudo chmod 777 -R /run/shm/

 

三、开发编译

1. 解压源码包

源码在发布包目录下的 Software 目录下,我这里使用的版本是:HiDPTAndroidV500R002C00SPC060,执行命令合并压缩包后解压:

$ cat HiDPTAndroidV500R002C00SPC060.tar* > HiDPTAndroidV500R002C00SPC060.tar.gz
$ tar -zvxf HiDPTAndroidV500R002C00SPC060.tar.gz -C ~/Desktop/hisilicon


2. 下载内核源码包

下载链接:https://android.googlesource.com/kernel/common/+archive/34803e7c1c92f53603f6aa11235915afc2589290.tar.gz

下载的内核源码包的名字: common-34803e7c1c92f53603f6aa11235915afc2589290.tar.gz

将下载的包拷贝到 device/hisilicon/bigfish/sdk 目录进行编译

3. 更新 patch 包

解压 patch 包

$ tar -zxvf HiDPTAndroidV500R002C00SPC060_patch

拷贝 delete.sh 文件到 Android 源码目录

$ cd ~/hisilicon/sdk
$ cp ~/hisilicon/HiDPTAndroidV500R002C00SPC060_patch/file_patch/delete.sh ./

 

执行 delete.sh 脚本

$ chmod 777 delete.sh
$ ./delete.sh

 

拷贝新 patch 包的 file_patch/new/ 目录下的文件,到完整开发代码包的根目录

$ cp -r ~/hisilicon/HiDPTAndroidV500R002C00SPC060_patch/file_patch/new/* ./

4. 开启串口

由于版本串口已禁用,需要在编译前执行如下命令打开串口:

cd  device/hisilicon/bigfish/sdk/configs/hi3751v810
sed -i "s/CFG_HI_CLOSE_BOOT_PRINT_AND_UART0=y/# CFG_HI_CLOSE_BOOT_PRINT_AND_UART0 is not set/g" `grep "CFG_HI_CLOSE_BOOT_PRINT_AND_UART0=y" -rl ./`


5. 环境配置

进入代码根目录下,执行:

$ source build/envsetup.sh

$ lunch Hi3751V811_DMO-eng


6. 完整编译

进入代码根目录下,执行:

$ make bigfish -j32 2>&1 | tee bigfish.log

此命令会编译出下面的镜像:

非安版本 out\target\product\ Hi3751V811\Emmc 目录下:

atf镜像: atf.bin

atv分区镜像: atv.ext4

deviceinfo分区镜像: deviceinfo.img

dtb分区镜像: Hi3751VXXX.dtb

panel分区镜像: panel.img

tcon分区镜像: tcon.bin

Android系统内核镜像: kernel.img

Android system分区镜像: system.ext4

Android userdata分区镜像:  userdata.ext4

Android cache分区镜像: cache.ext4

Android sdcard分区镜像: sdcard.ext4

bootargs分区镜像:  bootargs_Hi3751V811-emmc.bin

分区表: Hi3751V811-emmc.xml

recovery小系统内核镜像: recovery.img

recovery用update包: update.zip

fastboot 升级用 usb_update.bin: usb_update.bin

fastboot镜像: fastboot-burn-emmc.bin

bootmusic镜像: bootmusic.img

bootmusicsec镜像: bootmusicsec.img

默认预编译的baseparam分区镜像:  baseparam.img

默认预编译的logo分区镜像: logo.img

vendor分区镜像(Android8.0) vendor.ext4

安全版本 out\target\product\Hi3751V811\Security_L2\MAINTAIN 目录下,除非安版本镜像外,新增:

trustedcore分区镜像: trustedcore.img

securestore分区镜像: securestore.ext4

device\hisilicon\bigfish\sdk\tools\windows 目录下:

烧写工具:  HiTool-[version](DPT).zip

其中,[version] 为 HiTool 工具的某一个发布版本号,具体版本请以发布包中的为准。

7. 编译 Android 内核分区镜像

进入代码根目录下,执行:

$ make kernel –j32 2>&1 | tee kernel.log

此命令会编译出镜像:kernel.img

此镜像会拷贝至 out\target\product\Hi3751V811\ Emmc 目录下。

编译过程文件存放在:out/target/product/Hi3751V811/obj/KERNEL_OBJ/

 

8. 修改 Android 内核配置

进入代码根目录下,执行:

$ make kernel_menuconfig

注:

  • 默认 Android 内核配置文件记录在 device/hisilicon/Hi3751VXXX/Hi3751V811_XXX.mk 文件的 ANDROID_KERNEL_CONFIG 变量中。
  • 此命令修改的内核配置文件存放在临时目录:out/target/product/Hi3751VXXX/obj/KERNEL_OBJ/.config,请注意将修改后的文件保存至:device/hisilicon/bigfish/sdk/source/kernel/ linux-4.9.y/arch/arm64/configs/ 目录下对应文件。
  • 如需要修改 Android 系统编译内核时所使用的内核配置文件名称,请修改 device/hisilicon/Hi3751VXXX/Hi3751V811_XXX.mkANDROID_KERNEL_CONFIG 变量的值为新的文件名,并同步修改 device/hisilicon/bigfish/sdk/configs/hi3751v811 目录下的对应的 sdk 配置文件中 CFG_HI_KERNEL_CFG 变量的值。对应的 sdk 的配置文件的名称由 device/hisilicon/Hi3751V811/Hi3751V811_TEST.mk 中的 HISI_SDK_ANDROID_CFG 变量定义。新的内核配置文件请保存到 device/hisilicon/bigfish/sdk/source/kernel/ linux-4.9.y/arch/arm64/configs/ 目录下。
  • 内核配置文件要求均以 _defconfig 结尾。
  • 建议执行此命令前,删除内核临时文件存放目录:out/target/product/Hi3751V811/obj/KERNEL_OBJ/


9. 编译 Emmc 器件上的 Android 系统分区镜像

进入代码根目录下,执行:

$ make ext4fs -j32 2>&1 | tee ext4fs.log

此命令会编译出下面的镜像:

out\target\product\Hi3751V811\Emmc 目录下:

system.ext4    userdata.ext4    cache.ext4

sdcard.ext4    kernel.img

 

10. 编译 Android recovery 小系统内核分区镜像

进入代码根目录下,执行:

$ make recoveryimg -j32 2>&1 | tee recovery.log

此命令会编译出镜像:recovery.img

此镜像会拷贝至 out\target\product\Hi3751V811\Emmc 目录下。

编译过程文件存放在:out/target/product/Hi3751V811/obj/RECOVERY_OBJ/

11. 修改 Android recovery 小系统内核配置

进入代码根目录下,执行:

$ make recovery_menuconfig

注:

  • 默认 Android recovery 小系统内核配置文件记录在 device/hisilicon/Hi3751V811/BoardConfig.mk 文件的 RECOVERY_KERNEL_CONFIG 变量中。
  • 此命令修改的内核配置文件存放在临时目录:out/target/product/Hi3751V811/obj/RECOVERY_OBJ/.config,请注意将修改后的文件保存至:device/hisilicon/bigfish/sdk/source/kernel/ linux-4.9.y/arch/arm64/configs/ 目录下对应文件。
  • 如需要修改默认 Android recovery 小系统内核配置文件名称,请修改 device/hisilicon/Hi3751V811/ Hi3751V811_XXX.mkRECOVERY_KERNEL_CONFIG 变量的值为新的文件名。新的内核配置文件请保存到 device/hisilicon/bigfish/sdk/source/kernel/ linux-4.9.y/arch/arm64/configs/ 目录下。
  • 内核配置文件要求均以 _defconfig 结尾。
  • 建议执行此命令前,删除内核临时文件存放目录:out/target/product/Hi3751V811/obj/RECOVERY_OBJ/


12. 编译 Android recovery 升级包 update.zip

进入代码根目录下,执行:

$ make updatezip -j32 2>&1 | tee updatezip.log

此命令会编译出镜像: update.zip

非安版本在 out\target\product\Hi3751V811\Emmc 目录下:

安全版本在 out/target/product/Hi3751V811/Security_L2/MAINTAIN 目录下:

如不需要 recovery update 包,此命令可以不执行。

 

13. 修改海思 SDK 配置文件

SDK 配置文件存放目录:device/hisilicon/bigfish/sdk/configs/hi3751v810

此命令需要到 SDK 目录下执行:cd device/hisilicon/bigfish/sdk

执行命令:

$ make menuconfig SDK_CFGFILE=configs/hi3751v810/需要修改的配置文件名

可以修改对应的配置文件,如:

$ make menuconfig SDK_CFGFILE=configs/hi3751v810/hi3751demo2b_hi3751v810_android_64bit_3072M_4layer_cfg.mak

保存退出后,修改将保存在 device/hisilicon/bigfish/sdk/configs/hi3751v810 目录下对应的配置文件。

 

注:

  • 产品使用的 SDK 配置文件的名称在各产品 Hi3751V811_XXX 的HISI_SDK_ANDROID_CFG 变量中定义,如:

               device/hisilicon/Hi3751V811/ Hi3751V811_DMO.mk

               HISI_SDK_ANDROID_CFG :=hi3751demo2b_hi3751v811_android_64bit_3072M_4layer_cfg.mak

  • 执行此命令会通过弹出的图形界面修改 SDK 配置文件,修改后保存退出,修改后的配置文件保存在 SDK 配置文件存放目录,原配置文件保存为:"配置文件名.old",存放在 SDK 配置文件存放目录。
  • 用户也可以进入 SDK 配置文件存放目录,直接手动修改对应的配置文件。
  • 修改前,请确定所使用的 SDK 配置文件的文件名。


14.编译 fastboot 分区镜像

进入代码根目录下,执行:

$ make hiboot -j32 2>&1 | tee hiboot.log

此命令会编译出下面的镜像:

out\target\product\Hi3751V811\Emmc 目录下:fastboot-burn-emmc.bin

编译过程文件存放在:out/target/product/Hi3751V811obj/EMMC_HIBOOT_OBJ/

四、镜像烧录

1. 烧录工具 HiTool

烧录工具路径:device/hisilicon/bigfish/sdk/tools/windows/HiTool/HiTool-DPT-[version].zip

打开 HiTool 工具,界面如下,


① 将开发板上的串口及以太网口连接到电脑上后上电,工具里面选择对应的 COM 口及本机服务器 IP,我这里是 COM4 及 168.38.10。
② 修改板端配置:

     IP 地址:192.168.38.0

     网关:192.168.38.1

     子网掩码:255.255.255.0
③ 传输方式选择:网口(下载速度更快)
④ 修改 PC 端以太网配置:

打开 控制面板 \ 网络和 Internet \ 网络连接,选择以太网属性,如下图所示


选择 Internet 协议版本 4(TCP/IPV4)属性,选择手动填入 IP 地址,添加对应的 IP 地址、子网掩码及网关,如下图所示,



2. 镜像准备

将编译编译生成的 out/target/product/Hi3751V811/Emmc 目录下的镜像文件拷贝到对应的 Windows 目录下,对应的镜像文件如下图所示,


3. 开始烧录

① 选择 HiTool 工具下的 Burn Emmc or UFS 选项,点击浏览,选择编译生成的分区表:Hi3751V811-emmc.xml,如下图所示,

② 点击烧写按钮,如果通信正常,左下角控制台会提示给开发板重新上电,这时候重新上电后就可以开始烧录,如下图所示,



③ 烧录完成后,会有提示烧写成功,如下图所示,



4. 调试指引

在调试阶段,可通过命令获取某个目录的读写权限。

以获取 system 目录读写权限为例,在串口输入以下命令:

$ su
$ busybox mount -o remount,rw /system

 

五、参考资料

《Android 解决方案 开发指南》

《HiDPTAndroidV500R002C00SPC060版本描述文件》

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论