文章目录
1.环境说明
- 操作系统:UbuntuServer 18.04
- 海思SDK:Hi3518E_SDK_V1.0.3.0.tgz
- 硬件:hi3518e
2.安装依赖软件
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y bzip2 lib32z1-dev lib32stdc++6 lrzsz make \
u-boot-tools wget uuid-dev libncurses5-dev \
g++ gcc zlib1g-dev
3.修改sh
ubuntu默认使用的sh是指向dash的,而海思的sdk包中的脚本需要bash
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 14 09:49 /bin/sh -> dash
$ sudo rm -f /bin/sh
$ sudo ln -s /bin/bash /bin/sh
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jul 9 03:45 /bin/sh -> /bin/bash
4.SDK部署
4.1.解压SDK
$ tar -zxvf Hi3518E_SDK_V1.0.3.0.tgz
$ cd Hi3518E_SDK_V1.0.3.0/
$ ./sdk.unpack
4.2.安装交叉编译工具链
$ cd osdrv/opensource/toolchain/arm-hisiv300-linux/
$ sudo ./cross.install.v300
$ source /etc/profile
4.2.1.测试
如果安装完成,执行下列操作可以正常显示gcc的版本信息
$ arm-hisiv300-linux-gcc -v
4.3.更新mtd-utils
SDK中自带的mtd-utils软件包是1.5.0版本,在高版本ubuntu中不匹配,需要更新到1.5.2版本
4.3.1.获取mtd-utils_1.5.2
$ cd osdrv/tools/pc/jffs2_tool/
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/universe/m/mtd-utils/mtd-utils_1.5.2.orig.tar.bz2
$ mv mtd-utils_1.5.2.orig.tar.bz2 mtd-utils-1.5.2.tar.bz2
4.3.2.修改Makefile中指定的源码包
# 原始内容
MTD_UTILS := mtd-utils-1.5.0
# 修改之后的内容
MTD_UTILS := mtd-utils-1.5.2
5.编译
工作目录:
$cd Hi3518E_SDK_V1.0.3.0/osdrv
编译生成目录
-
Hi3518E_SDK_V1.0.3.0/osdrv/pub/image_uclibc:烧录用的镜像
-
镜像说明
Hi3518E_SDK_V1.0.3.0/osdrv/pub/image_uclibc$ tree . ├── rootfs_hi3518ev200_128k.jffs2 ├── rootfs_hi3518ev200_256k.jffs2 ├── rootfs_hi3518ev200_2k_128k_32M.img ├── rootfs_hi3518ev200_2k_4bit.yaffs2 ├── rootfs_hi3518ev200_32M.ext4 ├── rootfs_hi3518ev200_64k.jffs2 ├── u-boot-hi3518ev200.bin └── uImage_hi3518ev200
-
rootfs_hi3518ev200_xxx: 烧录用的根文件系统镜像
-
u-boot-hi3518ev200.bin:uboot镜像
-
uImage_hi3518ev200:kernel镜像
-
-
Hi3518E_SDK_V1.0.3.0/osdrv/pub/rootfs_uclibc.tgz:根文件系统
5.1.编译
5.1.1.编译所有(uboot、kernel、rootfs)
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
5.1.2.单独编译kernel
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage
5.1.3.单独编译module
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- modules
5.1.4.单独编译uboot
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-
5.1.5.构建可执行uboot
-
将生成的
u-boot.bin
复制到osdrv/tools/pc/uboot_tools/
目录下, -
运行
./mkboot.sh reg_info.bin u-boot-ok.bin
-
生成的
u-boot-ok.bin
即为可用的u-boot镜像
5.2.清除
5.2.1.clean
清除整个osdrv目录的编译文件:
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 clean
5.2.2.distclean
彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 distclean