【海思篇】【Hi3516DV300】一、 逐步搭建开发环境

目的: 熟悉环境和流程,让更多的爱好者了解海思、加入海思。

目录

1 安装ubunu14

2 软件包安装

3 安装交叉编译工具

4 安装SDK

步骤 1.解压缩 SDK 包

步骤 2. 展开 SDK 包内容

步骤 3. 编译uboot (参考osdrv下readme)

步骤 4. 编译kernel(参考osdrv下readme)

步骤 5. 制作根文件系统(参考osdrv下readme)

5 一键全部编译


1 安装ubunu14

我的ubuntu14如下,安装方法网上很多,通用。

#uname -a

Linux ubuntu 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

2 软件包安装

步骤 1. 配置默认使用 bash
执行 sudo dpkg-reconfigure dash 选择 no
步骤 2. 安装软件包
执行:sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc
步骤 3. 创建/etc/ld.so.preload 文件,并执行 echo "" > /etc/ld.so.preload,以解决 64bit linux server 上某些第三方库编译失败的问题。

3 安装交叉编译工具

步骤 1. 解压工具链。
执行如下命令进行解压:
tar –xvf arm-himixXXX-linux.tgz
步骤 2. 安装工具链。
运行命令 sudo ./arm-himixXXX-linux.install 即可完成此工具链的安装。
其它工具链安装方法与上述描述类似。

4 安装SDK

Hi3516CV500_SDK_V2.0.1.1.tgz的文件,该文件就是 Hi3516C V500 的软件开发包。


步骤 1.解压缩 SDK 包


在 linux 服务器上(或者一台装有 linux 的 PC 上,主流的 linux 发行版本均可以),使用命令:tar -zxf Hi3516CV500_SDK_V2.0.1.1.tgz,解压缩该文件,可以得到一个Hi3516CV500_SDK_V2.0.1.1 目录。


步骤 2. 展开 SDK 包内容


返回 Hi3516CV500_SDK_V2.0.1.1 目录,运行./sdk.unpack(请用 root 或 sudo 权限执行)将会展开 SDK 包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过 WINDOWS 操作系统中转拷贝 SDK 包,请先运行./sdk.cleanup,收起SDK 包的内容,拷贝到新的目录后再展开。

步骤 3. 编译uboot (参考osdrv下readme)

#sdk目录所属者配为当前用户(非常重要)
chown -R userXXX Hi3516CV500_SDK_V2.0.1.1

#解压
tar -xzf u-boot-2016.11.tgz
cd u-boot-2016.11

#编译
source /etc/profile
export LC_ALL=C
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_defconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
cp ../../../tools/pc/uboot_tools/reg_info.bin .reg 
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin

#uboot_tools目录下制作reg.bin,参考readme
cd Hi3516CV500_SDK_V2.0.1.1/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1
chmod 777 hiregbin
./hiregbin ./Hi3516dv300.xlsm ./reg.bin

#生成u-boot-z.bin
cp ../../../tools/pc/uboot_tools/reg.bin .reg 
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin

步骤 4. 编译kernel(参考osdrv下readme)

#下载linux内核源码
1)进入网站:www.kernel.org
2)选择HTTP协议资源的https://www.kernel.org/pub/选项,进入子页面
3)选择linux/菜单项,进入子页面
4)选择kernel/菜单项,进入子页面
5)选择v4.x/菜单项,进入子页面
6)下载linux-4.9.37.tar.gz (或者linux-4.9.37.tar.xz)到osdrv/opensource/kernel目录下   

#打补丁
1)将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中
2)在linux服务器中进入 osdrv 的根目录,执行如下命令:
cd opensource/kernel
tar -zxf linux-4.9.37.tar.gz
mv linux-4.9.37 linux-4.9.y
cd linux-4.9.y
patch -p1 < ../linux-4.9.37.patch
cd ../
tar -czf linux-4.9.y.tgz linux-4.9.y
cd ../../  

#注意:
若下载的内核格式为linux-4.9.37.tar.xz,
第一步先用:
xz -d linux-4.9.37.tar.xz
命令将linux-4.9.37.tar.xz解压为linux-4.9.37.tar。
第二步再用:
tar -xvf linux-4.9.37.tar
解压linux-4.9.37.tar。

#编译
cd linux-4.9.y
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hi3516dv300_smp_defconfig
# cp arch/arm/configs/hi3516dv300_smp_defconfig  .config 等效于上一句命令
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j 16
# -j 16表示开启16个线程编译,根据机器cpu配置

步骤 5. 制作根文件系统(参考osdrv下readme)

===> mtd-utils编译不过问题

# mtd-utils编译不过问题,直接引用海思原文
一、mtd-utils2.0.2依赖以下几个库,以ubuntu为例,安装方式请参考下面命令:
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config autoconf

二、由于mtd-utils2.0.2通过pkg-config工具检查各个库是否正常安装,因此请参考如下方式设置pkg-config工具搜索路径:
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"

三、mtd-utils2.0.2依赖于automake1.15.1版本,请参考如下方式安装automake1.15.1版本:
        1、删除原有automake版本
        sudo apt-get autoremove automake
        2、下载1.15.1版本
                1)Windows系统中使用浏览器访问automake工程url并下载对应源码包:
                https://lists.gnu.org/archive/html/info-gnu/2017-06/msg00007.html
                2)linux系统中可以使用下面命令下载:
                wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
        3、编译安装automake1.15.1
                tar zxvf automake-1.15.1.tar.gz
                cd automake-1.15.1/
                ./configure
                make
                make install

四、编译mtd-utils2.0.2

==> tools编译(这里就直接编译了,不去一个一个编译,中间唯一编译不过的就是{mtd-utils编译不过问题})

cd Hi3516CV500_SDK_V2.0.1.1/osdrv
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hipctools
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- hiboardtools

==> 生成文件系统

#编译和安装busybox
cd Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/busybox
tar xf busybox-1.26.2.tgz
cd busybox-1.26.2
cp config_v200_a7_softfp_neon .config
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- install

#利用busybox制作根文件系统
cd Hi3516CV500_SDK_V2.0.1.1/osdrv/pub
mkdir rootfs_glibc
cd rootfs_glibc
cp -R ../../opensource/busybox/busybox-1.26.2/_install/* .
mkdir etc dev lib tmp var mnt home proc
##etc lib dev必须配置, etc直接拷贝busybox下的examples, dev直接先拷贝上ubunt下的dev, lib是应用程序所需的库
cp -R ../../opensource/busybox/busybox-1.26.2/examples/* etc/
cp -R /dev/* dev/

#SPI NOR Flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到SPI NOR Flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。
下面以块大小为64KB为例:
cd Hi3516CV500_SDK_V2.0.1.1
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x10000 -o osdrv/pub/rootfs_glibc_64k.jffs2


结果:

编译得到了u-boot-z.bin 、uImage和rootfs_glibc_64k.jffs2。

 

5 一键全部编译

如果直接在osdr下make all,先解决{mtd-utils编译不过问题}就可以直接全部编译了!

Hi3516CV500_SDK_V2.0.1.1/osdrv$  ls pub/hi3516dv300_spi_smp_image_glibc/ -lah
total 71M
drwxr-xr-x 2 developer root      4.0K Mar 28 09:58 .
drwxrwxr-x 5 developer developer 4.0K Mar 28 09:58 ..
-rw-r--r-- 1 developer developer 4.1M Mar 28 09:58 rootfs_hi3516dv300_128k.jffs2
-rw-r--r-- 1 developer developer 4.1M Mar 28 09:58 rootfs_hi3516dv300_256k.jffs2
-rw-rw-r-- 1 developer developer 6.4M Mar 28 09:58 rootfs_hi3516dv300_2k_128k_32M.ubifs
-rw-r--r-- 1 developer developer 9.7M Mar 28 09:58 rootfs_hi3516dv300_2k_24bit.yaffs2
-rw-r--r-- 1 developer developer 9.5M Mar 28 09:58 rootfs_hi3516dv300_2k_4bit.yaffs2
-rw-r--r-- 1 developer developer  11M Mar 28 09:58 rootfs_hi3516dv300_4k_24bit.yaffs2
-rw-rw-r-- 1 developer developer 8.3M Mar 28 09:58 rootfs_hi3516dv300_4k_256k_50M.ubifs
-rw-r--r-- 1 developer developer  11M Mar 28 09:58 rootfs_hi3516dv300_4k_4bit.yaffs2
-rw-r--r-- 1 developer developer 4.1M Mar 28 09:58 rootfs_hi3516dv300_64k.jffs2
-rwxr-xr-- 1 developer developer 299K Mar 28 09:50 u-boot-hi3516dv300.bin
-rw-rw-r-- 1 developer developer 3.5M Mar 27 18:33 uImage_hi3516dv300_smp

 

你可能感兴趣的:(【海思篇】【Hi3516DV300】一、 逐步搭建开发环境)