海思Hi3516DV300开发环境搭建
前言
本篇文章是基于ubuntu16.04镜像系统进行开发,镜像文件获得点击如下链接:
官方下载地址(速度慢):
https://www.ubuntu.com/download
浙江大学:
http://mirrors.zju.edu.cn/ubuntu-releases/16.04/
中科大源:
http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/
如果想用其他网站可自行百度。
下文需要的share文件资料都在这:
https://pan.baidu.com/s/1oWt9FGMY464xd7yDL6fMvg
提取码:483a
一、虚拟机的创建
1.VMware Workstation 16 Pro 虚拟机下载安装
参考:https://zhuanlan.zhihu.com/p/369619334
2.ubuntu16.04系统的新建安装
参考:https://blog.csdn.net/m0_72065741/article/details/131069763?spm=1001.2014.3001.5501
3.VMware Tools的安装
安装ubuntu16.04完成后,显示未撑满全屏,需要使用VMware Tools解决此问题。
参考:https://blog.csdn.net/m0_72065741/article/details/131075114?spm=1001.2014.3001.5501
二、arm-himix200-linux交叉编译器的安装
1.传输文件
从PC机复制文件到ubuntu操作系统,虽然VMware Tools的安装可以将文件直接复制到ubuntu操作系统,但是我的貌似不行,所以我使用了另一种方式,借助WinSCP软件传输文件,也可以使用ubuntu直接挂载到PC机下使用共享文件夹。
WinSCP方法参考:
安装教程:https://blog.csdn.net/qq_42951560/article/details/116227677
使用教程:https://blog.csdn.net/m0_72065741/article/details/131105711?spm=1001.2014.3001.5501
PC端文件夹共享到ubuntu方法参考:https://blog.csdn.net/m0_72065741/article/details/131106336?spm=1001.2014.3001.5501
2.安装交叉编译器
先使用命令tar -zxf arm-himix200-linux.tgz解压压缩包
tar -zxf arm-himix200-linux.tgz
打开解压后的文件夹
执行如下命令安装工具链(时间有点久):
sudo ./arm-himix200-linux.install
安装好后,输入reboot命令重启虚拟机,打开终端输入指令arm-himix200-linux-后连按两次tab键,会展现所安装的全部工具链。
接下来,安装开发环境所需的软件包:
sudo apt-get install vim make gcc g++ patch python net-tools swig u-boot-tools bison flex
sudo apt-get install python-dev libssl-dev libncurses-dev python3-dev
sudo apt-get install build-essential lib32z1 lib32stdc++6
安装完成后,查看交叉编译器是否安装成功,输入指令:
arm-himix200-linux-gcc -v
显示6.3.0版本,安装成功
三、U-boot编译
1.先展开SDK
将商家给的SDK包拷贝到自己想要的位置,解压缩压缩包。
因为SDK脚本不支持bash,所以要改成bash,执行命令:
sudo dpkg-reconfigure dash
方向键选择No,按回车
打开Hi3516CV_SDK_V2.0.2.0,执行命令:
./sdk.unpack
即展开了SDK包
展开完成后,将会有这些文件
2.编译U-Boot
打开展开后的SDK目录中的osdrv/opensource/uboot目录,解压u-boot-2016.11.tgz,随后打开解压后的文件。
先执行指令生成.config:
# 根据使用的存储器类型进行选择,Nor和Nand使用前者,eMMC使用后者
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_defconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_emmc_defconfig
再执行编译:
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- -j2
出现如图所示内容即编译成功。
回到展开后的SDK目录,再打开osdrv/tools/pc/uboot_tools目录后解压hiregbin-v5.0.0.tgz并打开。
分别输入下列指令生成镜像:
sudo chmod +x hiregbin
./hiregbin ../Hi3516DV300-DMEB_4L_FLYBY-DDR3_1800M_512MB_16bitx2-A7_900M-SYSBUS_300M.xlsm ./reg.bin
cp reg.bin ../../../../opensource/uboot/u-boot-2016.11/.reg
cd ../../../../opensource/uboot/u-boot-2016.11
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin
出现如图所示,即U-Boot编译成功,生成镜像成功。
四、Kernel编译
先将linux-4.9.37.tar.gz拷贝到ubuntu的SDK目录的osdrv/opensource/kernel目录下并解压
执行下面命令代码:
mv linux-4.9.37 linux-4.9.y && cd linux-4.9.y
patch -p1 < ../linux-4.9.37.patch
再执行如下命令进行编译:
# 根据使用的存储器类型进行选择,Nor和Nand使用前者,eMMC使用后者
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_smp_defconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_emmc_smp_defconfig
执行结果如下
继续执行命令:
# 编译内核
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j2
执行结果如下:
继续执行命令编译模块:
# 编译模块
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules
mkdir _modules_install
make ARCH=arm INSTALL_MOD_PATH=_modules_install modules_install
这是make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules的执行结果
这是后两句代码的执行结果:
最终在 arch/arm/boot/ 目录下得到内核镜像 uImage ;
在 _modules_install 目录下得到编译出的内核驱动ko文件。
五、根文件系统制作
1.shell外壳程序编译
打开SDK下的osdrv/opensource/busybox,解压busybox-1.26.2.tgz并打开
在该文件下执行如下命令:
cp ./config_v200_a7_softfp_neon ./.config
make -j2
make install
2.制作基本目录结构
将SDK目录中osdrv/rootfs_scripts文件中的rootfs.tgz压缩包解压,将rootfs复制到home目录中。
将SDK目录中的osdrv/opensource/busybox/busybox-1.26.2目录下的_install文件夹复制到/home/rootfs/bin中。即在busybox-1.26.2目录中执行如下命令:
sudo cp -r _install /home/rootfs/bin/
再执行下面指令:
sudo vi /home/rootfs/etc/inittab
再第77行插入
::respawn:/sbin/getty -L ttyAMA0 115200 vt100 -n root -I "Auto login as root ..."
3.制作运行库
在/home/rootfs目录下执行如下命令,运行库文件将被拷贝到/home/rootfs/目录下的 lib 目录中:
sudo tar -xf /opt/hisi-linux/x86-arm/arm-himix200-linux/runtime_glibc/a7_softfp_neon-vfpv4/lib.tgz -C ./
将之前kernel编译时编译的模块也复制到lib目录中,模块文件在SDK目录的osdrv/opensource/kernel/linux-4.9.y/_modules_install/lib目录下,打开此目录,执行如下命令:
sudo cp -r modules /home/rootfs/lib
至此,根文件系统制作成功
六、文件系统打包生成镜像文件
将之前与PC端共享的文件夹内的yaffs2utils-0.2.9.tar.gz压缩包拷贝到SDK目录下的osdrv/tools/pc/mkyaffs2image/目录下,解压缩并打开。
在该目录下执行输入指令:
make
即可生成mkyaffs2可执行文件,将此可执行文件复制到/user/bin/目录下
打开home目录:
cd /home
然后执行命令:
sudo mkyaffs2 rootfs rootfs_hi3516dv300.yaffs2 2k 8bit
则根文件系统镜像生成成功。
总结
则u-boot-hi3516dv300.bin、uImage、rootfs_hi3516dv300.yaffs2即为所需要烧入到开发板的镜像文件。