hi3516cv500 SDK包编译与运行
一、交叉编译器的安装
1、我们需要的交叉编译器是toolchain.part1.rar
在Ubuntu下我们需要解压rar文件,需要安装rar这个软件包
sudo apt-get install rar
rar x /home/xxxx/toolchain.part1.rar /home/your path
tar -zxvf arm-himix200-linux.tgz
==注意这里的路径都是绝对路径==
给这个文件添加可执行
chmod +x arm-himix200-linux.install
然后直接运行
./arm-himix200-linux.install
使脚本配置环境生效并修改环境变量
source /etc/profile
sudo vim ~/.bashrc
在.bashrc下面添加这两行
export PATH="/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH"
export LC_ALL=C
然后使环境变量生效
source ~/.bashrc
最后查看交叉编译器是否生效即可
arm-himix200-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-himix200-linux-gcc
COLLECT_LTO_WRAPPER=/opt/hisi-linux/x86-arm/arm-himix200-linux/host_bin/../libexec/gcc/arm-linux-gnueabi/6.3.0/lto-wrapper
Target: arm-linux-gnueabi
Configured with: /home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/src/gcc-6.3.0/configure --host=i386-redhat-linux --build=i386-redhat-linux --target=arm-linux-gnueabi --prefix=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --disable-nls --enable-clocale=gnu --enable-extra-hisi-multilibs --with-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install/target --with-build-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install/target --with-gmp=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --with-mpfr=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --with-mpc=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --enable-libgomp --disable-libitm --enable-poison-system-directories --with-pkgversion='HC&C V100R002C00B035_20190218'
Thread model: posix
gcc version 6.3.0 (HC&C V100R002C00B035_20190218)
二、编译SDK包
当我们安装完交叉编译器之后,还需要解压出SDK包.这样一步只需按照所给的readme_cn.txt去操作就行。
进行完操作后,我们需要安装几个软件包,去支持SDK的解压,可以参考官方的《Hi3516CV500╱Hi3516DV300╱Hi3516AV300 SDK 安装及升级使用说明》
第一步执行
sudo dpkg-reconfigure dash
==直接选择no==
2、由于我自己的ubuntu是64位的,而sdk包的依赖环境为32位的
所以我们需要安装一下软件包
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1
下面这两行是解决SDK包编译时cannot find uuid library required for mkfs.ubifs这个错误的
sudo apt-get install u-boot-tools libuuid1:i386 gperf
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
除此之外还要安装下列软件包(没个一天拿不下来,当然也可能我的网慢)
sudo apt-get install
make
libc6:i386
lib32stdc++6
zlib1g-dev
libncurses5-dev
ncurses-term
libncursesw5-dev
g++ u-boot-tools:i386
texinfo
texlive
gawk
libssl-dev
openssl
bc
当然不止这些安装包,还有一些网络相关的安装包nfs tftp telnetd这些网络相关的软件包(既然都看这个,说明以前就安好了)
3、
创建/etc/ld.so.preload文件并执行,以解决 64位 linuxserver 上某些第三方库编译失败的问题
sudo touch /etc/ld.so.preload
echo "" > /etc/ld.so.preload
4、在返回SDK包目录下执行./sdk.unpack就会展开SDK的内容了
三、编译uboot、kernel、rootfs
(一)编译Uboot
展开sdk包后我们进入目录/osdrv
我们可以先通过make distclean
先清除一下多余的编译文件
官方给的readme说提倡make all 这个很坑所以还是不要使用(当然我后面可能会用到毕竟我懒得一批)
1。进入目录osdrv/opensource/uboot/解压u-boot-2016.11.tgz
tar -zxvf u-boot-2016.11.tgz
这里提供一个脚本方便大家
运行脚本前要先
Windowns下进入到osdrv/tools/pc/uboot_tools/目录下打开对应单板的Excel文件,在main标签中点击"Generate reg bin file"按钮,生成reg_info.bin即为对应平台的表格文件。
从osdrv/tools/pc/uboot_tools目录拷贝reg_info.bin到boot源代码目录,重命名为.reg
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516cv300_defconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j 20
make -C ../../../tools/pc/hi_gzip
cp ../../../tools/pc/hi_gzip/bin/gzip arch/arm/cpu/armv7/hi3516cv300/hw_compressed/ -rf
cp ./reg_info.bin .reg
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin
这样就可以生成u-boot-hi3516cv500.bin
(二)编译kernel
单独编译kernel(以hi3516dv300举例):
待进入内核源代码目录后,执行以下操作
cp arch/arm/configs/hi3516dv300_smp_defconfig .config
(emmc启动时执行如下操作:cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config)
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
单独编译模块(以hi3516dv300举例):
待进入内核源代码目录后,执行以下操作
cp arch/arm/configs/hi3516dv300_smp_defconfig .config
(emmc启动时执行如下操作:cp arch/arm/configs/hi3516dv300_emmc_smp_defconfig .config)
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules