这里会显示出您选择的修订版和当前版本之间的差别。
jaysnote:hi3798cv200_android_compile [2018/12/07 17:52] jaylee |
jaysnote:hi3798cv200_android_compile [2021/06/22 23:14] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | |||
- | # hi3798cv200 android compile | ||
- | |||
- | * [sdk 百度云下载 密码: | ||
- | |||
- | * 开发环境搭建和初次编译参考`Android 解决方案 开发指南.pdf`- > | ||
- | |||
- | * 烧写工具`HiTool-STB-3.1.35.zip` 会在成功编译镜像后自动拷贝到out文件夹。 | ||
- | |||
- | ```bash | ||
- | $ sudo find / -name HiTool-STB* | ||
- | / | ||
- | ``` | ||
- | |||
- | > **提示**:部分windows应用工具直接打包到了sdk,压缩成tar包。所以对于部分工具需要尝试在解压后linuxsdk 目录搜索。 | ||
- | |||
- | ## sdk 目录结构 | ||
- | |||
- | ```bash | ||
- | $tree | ||
- | ├── abi | ||
- | ├── art | ||
- | ├── bionic | ||
- | ├── bootable | ||
- | ├── build | ||
- | ├── cts | ||
- | ├── dalvik | ||
- | ├── developers | ||
- | ├── development | ||
- | ├── device | ||
- | ├── docs | ||
- | ├── external | ||
- | ├── frameworks | ||
- | ├── hardware | ||
- | ├── install_notes_cn.txt | ||
- | ├── install_notes_en.txt | ||
- | ├── libcore | ||
- | ├── libnativehelper | ||
- | ├── Makefile | ||
- | ├── ndk | ||
- | ├── out | ||
- | ├── packages | ||
- | ├── pdk | ||
- | ├── prebuilts | ||
- | ├── sdk | ||
- | ├── system | ||
- | └── toolss | ||
- | ``` | ||
- | |||
- | ## 初始化环境 | ||
- | |||
- | 参考`ServerInstall.sh`进行初始化环境,主要是包含java 、python、依赖库、gcc安装,然而很多依赖版本过低,所以必须要添加 ubuntu12.04或者14.04源安装。 | ||
- | |||
- | 当前 ubuntu 源已经放弃部分老版本的更新维护,所以没有办法直接降级到文章中的 bardy 08.04 源直接安装,对于java7的安装需要更改source源到到当前维护的最低版本precise、trusty等,即: | ||
- | |||
- | ```c | ||
- | The following releases are also available which have been superseded by later point releases (the current point release is available on releases.ubuntu.com as usual): | ||
- | |||
- | Ubuntu 12.04.4 LTS (Precise Pangolin) | ||
- | Ubuntu 14.04.4 LTS (Trusty Tahr) | ||
- | Ubuntu 16.04.4 LTS (Xenial Xerus) | ||
- | Ubuntu 18.04 LTS (Bionic Beaver) | ||
- | ``` | ||
- | |||
- | > **参考**: | ||
- | |||
- | ### java | ||
- | |||
- | ```bash | ||
- | $sudo apt-get install openjdk-7-jre | ||
- | ``` | ||
- | |||
- | > **警告**:不要尝试使用java8 否则后面会直接提示错误,参考[Troubleshotings/ | ||
- | |||
- | 设置环境变量 | ||
- | |||
- | ```bash | ||
- | #~/.bashrc | ||
- | export JAVA_HOME="/ | ||
- | export PATH="/ | ||
- | ``` | ||
- | |||
- | ### gcc | ||
- | |||
- | 交叉编译环境通过`arm-hisiv200-linux.tar.bz2`安装,解压后参考内根目录的安装脚本,主要包含建立软连接和配置环境变量。 | ||
- | |||
- | ```bash | ||
- | # | ||
- | TOP_DIR=/ | ||
- | TOOL_DIR=$TOP_DIR/ | ||
- | TAR_BIN_DIR=$TOOL_DIR/ | ||
- | BIN_FILES=$TOOL_DIR/ | ||
- | LN_FILE_NAME=arm-hisiv200-linux- | ||
- | TOOLS_PKG=" | ||
- | |||
- | mkdir -p $TAR_BIN_DIR | ||
- | for armlinux in $BIN_FILES | ||
- | do | ||
- | echo "ln $armlinux $TAR_BIN_DIR/ | ||
- | ln $armlinux $TAR_BIN_DIR/ | ||
- | done | ||
- | ``` | ||
- | |||
- | 配置环境变量 | ||
- | |||
- | ```bash | ||
- | export PATH=/ | ||
- | ``` | ||
- | |||
- | ## 烧写固件 | ||
- | |||
- | * `HiBurn 工具使用指南.pdf` | ||
- | |||
- | ### sch | ||
- | |||
- | uboot 烧写原理:HiBurn工具在开始烧写后,首选与bootrom 进行交互,工具DDR参数传送到传到bootrom,为uboot 下载阶段 5%处,然后初始化 DDR,再把uboot 传 输到DDR中,uboot 下载阶段 100%处表示传输完毕,再从 DDR启动uboot,uboot 启 动完成后,工具开始与uboot 进行交互,发送烧写命令,将 DDR中的uboot 烧 到 Flash对应地址中。 | ||
- | 其他镜像分区烧写原理:其他镜像分区,如kernel ,rootfs 等分区,工具默认采用网口 传输的方式,客户可选 | ||
- | |||
- | ### do | ||
- | |||
- | 常规操作,通过串口烧写fastboot,通过tftp烧写其他分区镜像。对于目标烧写设备的静态ip地址信息需要手动指定后通过串口烧写。 | ||
- | |||
- | ![网络配置](images/ | ||
- | |||
- | 成功烧写fastboot过后可以通过串口连接打印环境变量printenv确定静态ip已经正确配置,通过ping 确定已经在同一网络。 | ||
- | |||
- | ## Troubleshootings | ||
- | |||
- | ### apt update failed | ||
- | |||
- | ```bash | ||
- | jay@mxj-build: | ||
- | E: Unable to locate package mingw32 | ||
- | E: Package ' | ||
- | E: Package ' | ||
- | E: Package ' | ||
- | E: Package ' | ||
- | E: Unable to locate package g++-4.4-multilib | ||
- | E: Couldn' | ||
- | E: Couldn' | ||
- | E: Unable to locate package gcc-4.4-multilib | ||
- | E: Couldn' | ||
- | E: Couldn' | ||
- | Please re-login system to make new settings take effect | ||
- | ``` | ||
- | |||
- | 直接通过apt-get 安装如下依赖库和软件包提示找不到源,尝试添加老版本发布源,也不能正常下载,剔除不能正常安装的源,其他的参考[env/ | ||
- | |||
- | ```bash | ||
- | $sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev | ||
- | |||
- | $sudo apt-get install uboot-mkimage ia32-libs gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib | ||
- | ``` | ||
- | |||
- | | ||
- | $sudo apt-get install u-boot-tools | ||
- | ``` | ||
- | |||
- | ### gcc not found | ||
- | |||
- | 参考[env/ | ||
- | |||
- | ### required java version is: " | ||
- | |||
- | ```bash | ||
- | Your version is: openjdk version " | ||
- | The required version is: " | ||
- | |||
- | Please follow the machine setup instructions at | ||
- | ``` | ||
- | |||
- | 参考[init env/ | ||
- | |||
- | ### policy_scan.cpp' | ||
- | |||
- | ``` | ||
- | ost C: libpcre_32 <= external/ | ||
- | build/ | ||
- | ``` | ||
- | |||
- | https:// | ||
- | |||
- | `checkpolicy`用于检测SELinux策略(SELinux policy)的工具,源码位于sdk `external/ | ||
- | |||
- | ```bash | ||
- | $tree external/ | ||
- | external/ | ||
- | ├── Android.mk | ||
- | ├── ChangeLog | ||
- | ├── checkmodule.8 | ||
- | ├── checkmodule.c | ||
- | ├── checkpolicy.8 | ||
- | ├── checkpolicy.c | ||
- | ├── checkpolicy.h | ||
- | ├── COPYING | ||
- | ├── Makefile | ||
- | ├── module_compiler.c | ||
- | ├── module_compiler.h | ||
- | ├── parse_util.c | ||
- | ├── parse_util.h | ||
- | ├── policy_define.c | ||
- | ├── policy_define.h | ||
- | ├── policy_parse.y | ||
- | ├── policy_scan.l | ||
- | ├── queue.c | ||
- | ├── queue.h | ||
- | ├── test | ||
- | │ ├── dismod.c | ||
- | │ ├── dispol.c | ||
- | │ └── Makefile | ||
- | └── VERSION | ||
- | ``` | ||
- | |||
- | 对于sdk的已经原装了bison和flex。这里之所以报错是因为版本flex版本过低。 | ||
- | |||
- | ```bash | ||
- | ./ | ||
- | ├── analyzer | ||
- | ├── bison | ||
- | ├── ccache | ||
- | ├── flex | ||
- | ├── protobuf | ||
- | └── yasm | ||
- | ``` | ||
- | |||
- | 这里直接安装 flex和bison, | ||
- | |||
- | ``` | ||
- | $sudo apt-get install flex bison | ||
- | ``` | ||
- | |||
- | ```bash | ||
- | $~/ | ||
- | total 3328 | ||
- | lrwxrwxrwx 1 jay jay 13 Dec 6 13:55 flex-2.5.39 -> / | ||
- | -rwxr-xr-x 1 jay jay 1473304 Apr 1 2016 flex-2.5.39.bak | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ### serve_image.c compiled failed | ||
- | |||
- | ```bash | ||
- | serve_image.c: | ||
- | serve_image.c: | ||
- | serve_image.c: | ||
- | serve_image.c: | ||
- | serve_image.c: | ||
- | ``` | ||
- | |||
- | |||
- | |||
- | ```bash | ||
- | $find ./ -name " | ||
- | ./ | ||
- | ./ | ||
- | ``` | ||
- | |||
- | 如上目录保存了`mtd-utils-1.5.0.tar.bz2` 会在编译过程解压编译,直接在ubuntu16.04 上面编译会因为兼容导致报错, | ||
- | |||
- | ```bash | ||
- | $ rgrep " | ||
- | ./ | ||
- | ./ | ||
- | ``` | ||
- | |||
- | 需要注意的是,默认`mtd-utils-2.0.0`通过cmake编译,需要cmake configure,这里直接选择修改`/ | ||
- | |||
- | ```bash | ||
- | $vi / | ||
- | |||
- | #define __USE_XOPEN2K | ||
- | ``` | ||
- | |||
- | > **注意**:定义__USE_XOPEN2K 值为0是使其之后所有的条件编译失效,所以要尽量选择在# | ||
- | |||
- | ### unsupported reloc 43 | ||
- | |||
- | ```c | ||
- | out/ | ||
- | prebuilts/ | ||
- | ``` | ||
- | |||
- | `ld`版本过低。https:// | ||
- | |||
- | ```bash | ||
- | $cp / | ||
- | ``` | ||
- | |||
- | </ | ||