海思3516EV200 编译Uboot Kernel 文件系统

文章中提到的压缩包如果SDK包里没有的话直接去网上下载

这个压缩包最好在Linux环境下解压运行

解压后进入Hi3516EV200_SDK_V1.0.1.1 执行:./sdk.unpack(请用root或sudo 权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。

( 如果您需要通过WINDOWS 操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。)

编译osdrv

1.osdrv 顶层 Makefile 使用说明

本目录下的编译脚本支持 arm-himix100-linux 和 arm-himix200-linux 工具链,其中 arm-himix100-linux 对应uclibc库。arm-himix200-linux 对应glibc库。具体命令如下(以hi3516ev200举例)

a:linux-4.9.37.tar.gz 将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中

b:yaffs2utils-0.2.9.tar.gz 将下载的 yaffs2utils-0.2.9.tar.gz 存放到osdrv的tools/pc/mkyaffs2image/目录中

c:gdb-7.9.1.tar.gz将下载的 gdb-7.9.1.tar.gz 存放到 osdrv的tools/board/gdb/目录中

d:ncurses-6.0.tar.gz将下载的 ncurses-6.0.tar.gz 存放到 osdrv的tools/board/gdb/目录中

e:util-linux-2.31.tar.gz将下载的 util-linux-2.31.tar.gz 存放到 osdrv的tools/pc/cramfs_tool/目录中

f:xz-5.2.2.tar.bz2将下载的 xz-5.2.2.tar.bz2 存放到 osdrv的tools/pc/squashfs4.3/目录中

n: squashfs4.3.tar.gz将下载的 squashfs4.3.tar.gz 存放到 osdrv的 tools/pc/squashfs4.3 目录中

g:e2fsprogs-1.42.13.tar.gz将下载的 e2fsprogs-1.42.13.tar.gz 存放到 osdrv的tools/board/e2fsprogs/中

h: lzo-2.09.tar.gz将下载的 lzo-2.09.tar.gz 存放到 osdrv的tools/pc/jffs2_tool/目录中

i:eudev-3.2.7.tar.gz将下载的 eudev-3.2.7.tar.gz 存放到 osdrv的tools/board/eudev-3.2.7目录中

j: libuuid-1.0.3.tar.gz将下载的 libuuid-1.0.3.tar.gz 存放到 osdrv的tools/board/mtd-utils/目录中

k: zlib-1.2.11.tar.gz

由于zlib 工具在pc端及board端多处都有使用到,所以需要将源码包分别放置到下面路径:

将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/board/mtd-utils/ 目录中

将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/pc/zlib/ 目录中

将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/pc/squashfs4.3/ 目录中

l: mtd-utils-2.0.2.tar.bz2

由于mtd-utils在pc端及board端都有使用到,所以需要将源码包分别放置到下面路径:

将下载的 mtd-utils-2.0.2.tar.bz2 存放到 osdrv的 tools/board/mtd-utils/ 目录中

将下载的 mtd-utils-2.0.2.tar.bz2 存放到 osdrv的 tools/pc/jffs2_tool/目录中

m:gzip-1.8.tar.gz将下载的 gzip-1.8.tar.gz 存放到 osdrv的 tools/pc/hi_gzip/ 目录中

(1)编译整个osdrv目录:(多半成功不了)

注意:默认不发布内核源码包,只发布补丁文件。内核源码包需自行从开源社区上下载。

从linux开源社区下载v4.9.37版本的内核:

1)进入网站:www.kernel.org

2)选择HTTP协议资源的Index of /pub/选项,进入子页面

3)选择linux/菜单项,进入子页面

4)选择kernel/菜单项,进入子页面

5)选择v4.x/菜单项,进入子页面

6)下载linux-4.9.37.tar.gz (或者linux-4.9.37.tar.xz)到osdrv/opensource/kernel目录下

make all

其中 hi3516dv200 和 hi3516ev300 支持 arm-himix200-linux 工具链

make OSDRV_CROSS=arm-himix200-linux CHIP=hi3516dv200 all

make OSDRV_CROSS=arm-himix200-linux CHIP=hi3516ev300 all

注意:由于Makefile中文件系统编译依赖组件较多,不能保证单独编译的文件系统可用,建议采用make all编译;

但可单独编译uboot,kernel;

可以传如下参数:

a, BOOT_MEDIA:spi(default) or emmc

b, CHIP:hi3516ev200(default) or hi3516ev300 or hi3518ev300 or hi3516dv200

c, 如果客户想要更换可以使用TARGET_XLSM=*.xlsm来指定所需要的u-boot表格文件

(2)清除整个osdrv目录的编译文件:

make clean

(3)彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:

make distclean

(4)单独编译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

这个文件夹上要是有个锁的标志的话需要加个权限 (chmod 777 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 ../../

待进入内核源代码目录后,执行以下操作

cp arch/arm/configs/hi3516ev200_full_defconfig .config

(emmc启动时执行如下操作:cp arch/arm/configs/hi3516ev200_emmc_defconfig .config)

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- menuconfig

这个最好先别动选择Exit(后面需要根据需要生成内核的时候才需要更改这些)

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- uImage

生成的内核文件在arch/arm/boot/uImage  

(emmc启动时执行如下操作:cp arch/arm/configs/hi3516ev200_emmc_defconfig .config)

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- modules

(5)单独编译uboot:

注意:发布包默认按照DMEB板的配置发布,如果客户单板和DEMB板不一致,需要根据客户自己的单板环境修改

uboot表格才能使用,否则可能导致uboot无法启动或者其他问题。

进入 uboot目录 执行: tar -zxf u-boot-2016.11.tgz

待进入 uboot源代码目录 后,执行以下操作

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- hi3516ev200_defconfig

(emmc启动时执行如下操作:make ARCH=arm CROSS_COMPILE=arm-himix100-linux- hi3516ev200_emmc_defconfig)

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- -j 20

编译成功后,将在U-boot 目录下生成u-boot.bin。

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

cp ../../../tools/pc/uboot_tools/reg_info.bin .reg

make ARCH=arm CROSS_COMPILE=arm-himix100-linux- u-boot-z.bin

opensource/uboot/u-boot-2016.11下生成的u-boot-hi3516ev200.bin即为可用的u-boot镜像

(6)制作文件系统镜像:

在osdrv/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制

作文件系统镜像即可-> 这个版本 rootfs_hi3516ev200_64k.jffs2

进入busybox 执行: tar -zxf busybox-1.26.2.tgz

1)配置busybox

进入源码目录 找到config_v100_a7_softfp_neon或config_v200_a7_softfp_neon 复制一份改名为 .config

指定配置文件,更改配置本质上就是改.config文件,不用图形化界面直接打开.config文件直接编辑也行

config_v100_a7_softfp_neon 对应 32bit 操作系统工具链 arm-himix100-linuxlinux-

执行:make menuconfig

busybox的配置界面和内核配置相似,其 功能选项 容易理解,可以根据自己的需求 选择配置。在 Busybox

Settings --- > Build Options 中

第一个选项是用于选择 SDK 推荐的交叉编译器,配置好后保存并退出。欲了解busybox 各选项含义请参考busybox 配置帮助。

2)编译和安装busybox

执行make

make install

编译并安装成功后,在busybox 目录下的_install 目录下生成以下目录及文件:

3)制作根文件系统

在osdrv目录先执行:mkdir rootbox

cd rootbox

在rootbox中创建以下文件夹 etc dev lib tmp var mnt home proc

在内核源码目录下创建名为_modules_install

执行:make ARCH=arm INSTALL_MOD_PATH=_modules_install modules_install

将生成在_modules_install/lib中的modules拷贝到rootbox中

etc 中需要inittab、fstab、init.d/rcS文件等,这些文件最好从 busybox-1.26.2/examples/bootfloppy/etc 目录下

拷贝过来,根据需要自行修改

dev 从系统根目录拷贝sudo cp -R /dev /home/tom/Hi3516EV200_SDK_V1.0.1.1/osdrv/rootbox

更改权限sudo chmod -R 777 dev/

lib 从opt/hisi-linux/x86-arm/arm-himix100-linux/runtime_uclibc/a7_softfp_neon-vfpv4中复制lib压缩包到

rootbox中的lib中并解压

sudo tar -xf /opt/hisi-linux/x86-arm/arm-himix100-linux/runtime_uclibc/a7_softfp_neon-vfpv4/lib.tgz -C ./

将上一步中编译生成在_install中的bin sbin usr linuxrc复制到rootbox中

到这一步rootbox下应该有以下目录及文件

编译生成根文件系统的工具

解压automake-1.15.1

将autoconf-2.6.8解压到automake-1.15.1中

将m4-1.4.9 解压到autoconf-2.6.8中 包含关系如下

执行:./configure  

make

sudo make install

返回上级目录

执行:./configure

make

sudo make install

返回上级目录

执行:./configure

make

sudo make install

解压lzo-2.09.tar.gz

将autoconf-2.68复制到 lzo-2.09 中一份

执行:./configure

make

sudo make install

在jffs2_tool目录下执行make 如果报错uuid和library安装下面的依赖

apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config

生成mkfs.jffs2 把它复制到usr/bin下

在osdrv目录下执行:mkfs.jffs2 -d ./rootbox -l -e 0x10000 -o rootfs.jffs2

生成我们需要的文件系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值