His「海思」开发文档

文章目录

      • 1. 配置环境变量
        • 1.1 lunch命令
        • 1.2 代码编译文件 Android.mk
        • 1.3 修改Jack配置,为每个用户设置不同的端口号
      • 2. 编译
        • 2.1 更新api
        • 2.2 完整编译
        • 2.3 编译Android系统内核
        • 2.4 修改Android系统内核配置
        • 2.5 编译调试内核驱动模块
        • 2.6 编译system等分区镜像
        • 2.7 编译recovery小系统
        • 2.8 修改Android recovery小系统内核配置
        • 2.9 编译recovery update.zip包
        • 2.10 清除编译结果
        • 2.11 修改SDK配置文件
        • 2.12 单独编译wifi驱动
        • 2.13 编译fastboot镜像
        • 2.14 编译64位版本
      • 3. 镜像烧写
      • 4. bootargs分区环境变量设置方法
        • 4.1 制作bootargs.bin 的方法:
        • 4.2 平时调试时,修改bootargs内容方法
        • 4.3 fastboot命令说明:
      • 5. 量产工具(MAC地址烧写工具:HiProInfo)
      • 6. 内存工具

1. 配置环境变量

注意事项:
1、 本部分内所有编译命令都需要在代码根目录下执行
2、 每一次重新登录编译机器,切换shell后,都需要执行上述操作配置环境变量
3、 版本支持enguserdebug/user模式编译
4、 以下操作以Hi3798CV200芯片为例

版本支持enguserdebug/user模式编译,环境变量配置需要执行如下操作:

source build/envsetup.sh
lunch Hi3798CV200-eng 或 lunch Hi3798CV200-userdebug 或 lunch Hi3798CV200-user

1.1 lunch命令

Hi3798CV200:产品名称,out目录的目录结构根据此名称生成
eng:编译默认为eng模式,同步支持userdebug/user模式

1.2 代码编译文件 Android.mk

LOCAL_MODULE_TAGS的默认值都为optional,此种配置在编译时不会自动拷贝至生成目录。
如果需要编译时默认拷贝至生成目录,编译生成文件为动态库、jar包、可执行文件和预编译文件

device/hisilicon/bigfish/build/product_package.mk中增加对应模块的$(LOCAL_MODULE)名称。
编译生成文件为apk时,则需要在上述文件中中增加$(LOCAL_PACKAGE_NAME)的名称

1.3 修改Jack配置,为每个用户设置不同的端口号

  1. 修改config.properties, 例如:
vim ~/.jack-server/config.properties
#Fri Apr 18 11:10:09 CST 2016
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=9076
jack.server.admin.port=9077
jack.server.config.version=1
jack.server.time-out=7200
  1. 修改config.properties文件属性为600,例如:
#chmod 600 config.properties
  1. 修改jack-settings,例如:
vim ~/.jack-settings
# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=9076
SERVER_PORT_ADMIN=9077

2. 编译

注意事项:

1.编译前需要按照<一>中配置环境变量,配置完成后才可以执行下面命令

2.本章内除第10节《修改sdk配置文件》以外,所有编译命令都需要在代码根目录下执行

3.本章命令无相互依赖关系,均可以单独执行

4.本章所有编译烧写镜像的命令,编译完成后,都会拷贝镜像到out/target/product/Hi3798CV200/目录

5.编译命令中的tee命令为记录编译log,log文件存放在代码根目录下,以tee命令后面所带参数命名文件中

2.1 更新api

注意:

如果有新增对外接口及变量,需要运行下面命令更新frameworks/base/api/current.txt文件,否则Android系统无法编译通过。

在代码根目录下执行:

make update-api

2.2 完整编译

在代码根目录下执行:

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

编译结果:

在out目录会有Nand,Emmc两个目录,Nand目录下镜像适合烧写到Nand单板,Emmc目录下镜像适合烧写到eMMC单板

Emmc目录包含:

kernel.img // Adnroid 系统内核镜像
recovery.img //recovery 系统镜像
system.ext4,userdata.ext4,cache.ext4,private.ext4 // 文件系统镜像
bootargs.bin  	//bootargs分区镜像
Hi3798CV200-emmc.xml //分区表
update.zip // 升级包
fastboot.bin //fastboot镜像
baseparam.img  //base镜像
logo.img	//logo镜像
fastplay.img	//fastplay镜像
pq_param.bin	//pq_param镜像

2.3 编译Android系统内核

注意:

1.此命令可以直接执行,不需要完整编译以后再执行

2.此命令生成的临时文件在out/target/product/Hi3798CV200/obj/KERNEL_OBJ/目录中

在代码根目录下执行:

make kernel -j32 2>&1 | tee kernel.log

在out目录中Nand,Emmc都会生成 kernel.img,两份kernel.img是一样,只是分别拷贝到了Nand,Emmc目录

清除编译结果:

rm -rf out/target/product/Hi3798CV200/obj/KERNEL_OBJ/

2.4 修改Android系统内核配置

① 默认Android系统内核配置文件由device/hisilicon/Hi3798CV200/BoardConfig.mk
ANDROID_KERNEL_CONFIG变量配置。

device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录

② 此命令可以直接执行,不需要完整编译以后再执行。执行后会弹出配置界面,通过此界面修改内核配置文件。

③ 修改完毕后请保存退出,修改后的文件保存为临时文件
out/target/product/Hi3798CV200/obj/KERNEL_OBJ/.config
请修改完毕后,将内核配置文件保存在
device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录

④ 如需要修改默认Android系统内核配置文件名称
修改device/hisilicon/Hi3798CV200/BoardConfig.mkANDROID_KERNEL_CONFIG变量的值为新的文件名,并同步修改device/hisilicon/bigfish/sdk/configs/目录下的对应的sdk配置文件中CFG_HI_KERNEL_CFG变量的值。对应的sdk的配置文件的名称由device/hisilicon/Hi3798CV200/BoardConfig.mk中的HISI_SDK_ANDROID_CFG变量定义。新的内核配置文件请保存到device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录下

⑤ 内核配置文件要求均以_defconfig结尾

⑥ 修改完成后,可以执行第3小节所述的命令编译出Android系统内核镜像

⑦ 建议执行此命令前,删除内核临时文件存放目录:out/target/product/Hi3798CV200/obj/KERNEL_OBJ/

kernel_menuconfig

2.5 编译调试内核驱动模块

在代码根目录下执行:

./device/hisilicon/Hi3798CV200/kernel_module.sh

脚本执行完成后,会在out的system/lib/modules目录下生成驱动模块文件以及load加载脚本,并会修改以下目录及文件:

device/hisilicon/Hi3798CV200/build/kernel.mk
device/hisilicon/Hi3798CV200/etc/init.Hi3798CV200.sh
device/hisilicon/bigfish/sdk

注意:

1.本脚本命令可以直接执行,不需要完整编译以后再执行

2.本脚本命令会对原源码进行修改,并且会在SDK_DIR目录下产生大量的过程文件

3.本脚本命令只用于驱动模块调试

4.本脚本命令执行后,需要重新打包镜像文件(如update.zip)

2.6 编译system等分区镜像

注意:此命令可以直接执行,不需要完整编译以后再执行

在代码根目录下执行:

make ubifs -j32 2>&1 | tee ubifs.log

编译完成后,会在out的Nand目录生成:

system_4K_1M.ubi
data_4K_1M.ubi
cache_4K_1M.ubi

其中,.ubi扩展名的镜像,如:

4K: PageSize:页大小
1M: BlockSize:块大小

在代码根目录下执行:

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

编译完成后,会在out的Emmc目录生成:

system.ext4
userdata.ext4
cache.ext4

2.7 编译recovery小系统

在代码根目录下执行:

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

在out目录中Nand,Emmc都会生成 recovery.img,两份recovery.img是一样,只是分别拷贝到了Nand,Emmc目录

清除编译结果:

rm -rf out/target/product/Hi3798CV200/obj/RECOVERY_OBJ/

注意:
1.此命令可以直接执行,不需要完整编译以后再执行
2.此命令生成的临时文件在out/target/product/Hi3798CV200/obj/RECOVERY_OBJ/目录中/

2.8 修改Android recovery小系统内核配置

在代码根目录下执行:

make recovery_menuconfig

注意事项:

1.默认Android recovery小系统内核配置文件由device/hisilicon/Hi3798CV200/BoardConfig.mk中
  RECOVERY_KERNEL_CONFIG变量配置。
  内核配置文件存放在:
  `device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录`
  
2.此命令可以直接执行,不需要完整编译以后再执行。执行后会弹出配置界面,通过此界面修改内核配置文件

3.修改完毕后请保存退出,修改后的文件保存为临时文件out/target/product/Hi3798CV200/obj/RECOVERY_OBJ/.config
  请修改完毕后,将内核配置文件保存在device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录下
  的对应文件
  
4.如需要修改默认Android recovery小系统内核配置文件名称,请修改device/hisilicon/Hi3798CV200/BoardConfig.mk中
  RECOVERY_KERNEL_CONFIG变量的值为新的文件名
  新的内核配置文件请保存到device/hisilicon/bigfish/sdk/source/kernel/linux-3.x.y/arch/arm/configs/目录下
  
5.内核配置文件要求均以_defconfig结尾

6.修改完成后,可以执行第6小节所述的命令编译出Android recovery小系统内核镜像

7.建议执行此命令前,删除内核临时文件存放目录:out/target/product/Hi3798CV200/obj/RECOVERY_OBJ/

2.9 编译recovery update.zip包

注意:

1.此命令可以直接执行,不需要完整编译以后再执行

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

在代码根目录下执行:

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

2.10 清除编译结果

注意:

1.所有的编译过程文件均在out目录下,执行此命令将清除所有编译结果

2.如需单独清除Android系统内核临时文件、Android recovery小系统内核临时文件和fastboot临时文件
请参考对应小节中的的方法,直接删除临时文件存放目录即可

在代码根目录下执行:

make clean

2.11 修改SDK配置文件

注意:
1、此命令需要在SDK目录device/hisilicon/bigfish/sdk执行

2、SDK配置文件存放位置:device/hisilicon/bigfish/sdk/configs/

3、产品使用的SDK配置文件的名称在各产品BoardConfig.mkHISI_SDK_ANDROID_CFG变量中定义,如:

device/hisilicon/Hi3798CV200/BoardConfig.mk
HISI_SDK_ANDROID_CFG := hi3798cv2dmo_hi3798cv200_android_cfg.mak

4、执行此命令会通过弹出的图形界面修改SDK配置文件,修改后保存退出,修改后的配置文件保存在SDK配置文件存放目录,原配置文件保存为:“配置文件名.old”,存放在SDK配置文件存放目录

5、用户也可以进入SDK配置文件存放目录,直接手动修改对应的配置文件

6、修改前,请确定所使用的SDK配置文件的文件名

进入SDK目录:

cd device/hisilicon/bigfish/sdk

执行命令"make menuconfig SDK_CFGFILE=configs/要修改的配置文件名"弹出修改界面,如:
make menuconfig SDK_CFGFILE=configs/hi3798cv200/hi3798cv2dmo_hi3798cv200_android_cfg.mak

2.12 单独编译wifi驱动

在代码根目录下执行:

make kernel -j32 2>&1 | tee kernel.log
注意:
1.wifi驱动在编译内核时一并编译。编译完成后,会更新out目录中system/lib/modules目录下对应的wifi驱动
2.临时文件生成在out/target/product/Hi3798CV200/obj/KERNEL_OBJ/drivers/wifi
3、PCIE接口wifi请参考readme_for_pcie_wifi.txt,在.\device\hisilicon\bigfish\sdk\source\component\wifi\drv路径下

2.13 编译fastboot镜像

注意:

1.产品对应的默认fastboot.bin存放在device/hisilicon/Hi3798CV200/prebuilts/目录下
2.完整编译时,会直接拷贝此目录下的fastboot.bin至out目录,不会编译fastboot
3.编译fastboot依赖于device/hisilicon/Hi3798CV200/BoardConfig.mk中定义的sdk配置文件中对fastboot的配置:
HISI_SDK_ANDROID_CFG : hi3798cv2dmo_hi3798cv200_android_cfg.mak修改好对应的配置文件后,再执行此命令
4.此命令生成的临时文件在out/target/product/Hi3798CV200/obj/NAND_HIBOOT_OBJ/或
	out/target/product/Hi3798CV200/obj/EMMC_HIBOOT_OBJ/目录中
6.fastboot镜像除fastboot本身功能外,还与分区表,bootargs分区镜像相关,如其中一个更新,则需要对应更新其他的镜像
7.如不需要更新fastboot镜像,此命令可以不执行

在代码根目录下执行:

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

会在out目录下的 Nand,Emmc中分别生成fastboot.bin

make hiboot-nand -j32  单独编译生成Nand目录中 fastboot.bin
make hiboot-emmc -j32  单独编译生成Emmc目录中 fastboot.bin

如果要修改 fastboot 所使用的reg文件,bootargs存放位置,请直接在
device/hisilicon/Hi3798CV200/BoardConfig.mk 中修改

for emmc fastboot // 适合 eMMc 的单板 fastboot.bin

BOOT_REG_NAME := hi3798cv2dmb_hi3798cv200_DDR3-1866_2GB_8bitx4_4layers.reg
EMMC_BOOT_ENV_STARTADDR :=0x100000
EMMC_BOOT_ENV_SIZE=0x10000
EMMC_BOOT_ENV_RANGE=0x10000

nand fastboot configure // 适合 Nand 的单板 fastboot.bin

BOOT_REG_NAME := hi3798cv2dmb_hi3798cv200_DDR3-1866_2GB_8bitx4_4layers.reg
NAND_BOOT_ENV_STARTADDR :=0x800000
NAND_BOOT_ENV_SIZE=0x10000
NAND_BOOT_ENV_RANGE=0x10000

如果需要支持多个单板,则需要根据不同单板的电压配置,选择匹配的表格名填写(BOOT_REG1_NAME/BOOT_REG2_NAME/BOOT_REG3_NAME/...)

清除编译结果:

直接删除out/target/product/Hi3798CV200/obj/NAND_HIBOOT_OBJ/或
out/target/product/Hi3798CV200/obj/NAND_HIBOOT_OBJ/目录即可,即:
rm -rf out/target/product/Hi3798CV200/obj/NAND_HIBOOT_OBJ/
rm -rf out/target/product/Hi3798CV200/obj/EMMC_HIBOOT_OBJ/

2.14 编译64位版本

编译64位版本,需要修改产品目录下的customer.mk,则执行以下步骤(编译其他版本步骤类似):

步骤1:

打开device/hisilicon/Hi3798CV200/customer.mk文件,找到HISI_TARGET_ARCH_SUPPORT所在行,配置HISI_TARGET_ARCH_SUPPORT := 32prefer。

步骤2:

进入代码根目录下,执行:
source build/envsetup.sh
lunch Hi3798CV200-eng
make bigfish -j32 2>&1 | tee bigfish.logsh.log

注意:

1.32位编译和64位编译相互切换时必须先执行make clean操作,然后执行source build/envsetup.sh和lunch Hi3798CV200-eng。

2.各个版本含义:
64kernel:64位内核,应用是32位
32prefer:64位内核,Native进程和系统Android进程是32位优先,应用是32位优先。
64prefer:64位内核,Native进程和系统Android进程是64位优先,应用是64位优先。

3.编译过程文件存放在:
out/target/product/Hi379XXVXXX/obj(存放64位编译过程文件)
和out/target/product/Hi379XXVXXX/obj_arm(存放32位编译过程文件)

3. 镜像烧写

在执行全编译的命令后,在 out 目录下会生成 Nand, Emmc 两个目录,Nand目录中镜像适合烧写到 Nand 的单板,Emmc目录中镜像适合烧写到 eMMc 单板

烧写工具 : HiTool

device/hisilicon/bigfish/sdk/tools/windows/HiTool/
注意事项:
1.第二章中的所有编译烧写镜像相关的命令,编译完成后都会拷贝镜像至out/target/product/Hi3798CV200/目录
2.所有烧写镜像及工具均可以在out/target/product/Hi3798CV200/目录找到
3.除需要烧写system分区和data分区以外,cache分区和sdcard分区也需要烧写。

4. bootargs分区环境变量设置方法

4.1 制作bootargs.bin 的方法:

Nand单板对应的bootargs:

device/hisilicon/Hi3798CV200/etc/bootargs_Hi3798CV200-nand.txt

eMMc 单板对应的bootargs:

device/hisilicon/Hi3798CV200/etc/bootargs_Hi3798CV200-emmc.txt

客户修改好对应bootargs的txt文件,make bigfish 编译系统后,会在 out/target/product/Hi3798CV200/ 下的Nand,Emmc目录对
应生成 bootargs.bin

4.2 平时调试时,修改bootargs内容方法

  1. 连接单板的串口,打开PC机串口工具,选择正确串口
  2. 将单板上电,同时按住ctrl+C键进入fastboot命令行
  3. 设置相关环境变量,具体见示例及说明
  4. 保存环境变量,重启单板

修改 bootargs

setenv bootargs 'console=ttyAMA0,115200 blkdevparts=mmcblk0:1M(fastboot),1M(bootargs),10M(recovery),2M(deviceinfo),8M(baseparam),8M(pqparam),20M(logo),20M(logobak),40M(fastplay),40M(fastplaybak),40M(kernel),20M(misc),8M(userapi),8M(hibdrv),8M(qbflag),300M(qbdata),800M(system),1024M(userdata),100M(cache),-(sdcard)'

修改 bootcmd

setenv bootcmd 'mmc read 0 0x1FFBFC0 0x4B000 0x5000; bootm 0x1FFBFC0'

保存修改

saveenv

4.3 fastboot命令说明:

setenvsaveenvprintenvreset,其中:

setenv 命令为设置环境变量,需要带环境变量名称及参数。
saveenv 命令为保存环境变量,无参数,简写为sa
printenv 命令为显示当前所有环境变量,无参数,简写为pri
reset 命令为重启fastboot,无参数,简写为re

5. 量产工具(MAC地址烧写工具:HiProInfo)

MAC地址烧写工具(HiProInfo

device/hisilicon/bigfish/sdk/tools/windows/HiProInfo/

6. 内存工具

内存工具(MemUtil

device/hisilicon/bigfish/prebuilts/toolchains/memery_tools/

你可能感兴趣的:(His「海思」开发文档)