编译uboot和内核之前,先参考前一章配置Hi3531编译环境<海思[hi3531]编译环境搭建(针对用于编译程序不制作内核和系统的开发者)>

单独编译kernel:

  1. 将下载的 linux-3.18.20.tar.gz 存放到 hi3531dv100 svn osdrv的opensource/kernel目录中(这个内核文件可以找我拿Q:812417530)
    在这里插入图片描述
  2. 在linux服务器中进入 hi3531dv100 svn osdrv 的根目录,执行如下命令:
    cd opensource/kernel
    tar -zxf linux-3.18.20.tar.gz
    mv linux-3.18.20 linux-3.18.y
    cd linux-3.18.y
    patch -p1 < …/hi3531dv100_for_linux_v3.18.y.patch
    在这里插入图片描述
  3. 待进入内核源代码目录后,执行以下操作
cp arch/arm/configs/hi3531d_xxx_defconfig .config
//下面有对该配置的解释
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig
//然后会弹出一个窗口点击保存关闭就好,如果无需配置其他的话 

在这里插入图片描述

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage
//如图所示编译成功

在这里插入图片描述

  1. 在这里解释一下编译的参数:
    注意:我们用的是nand模式不是spi flash模式(这个要问硬件工程师),从片和主片这个要涉及芯片级联才会用到,默认你就用主片就好
hi3531d_xxx_defconfig参数设置说明:
为hi3531d_full_defconfig时,使用SPI Nor Flash或SPI Nand Flash,PCIE选择主片模式;
为hi3531d_full_slave_defconfig时,使用SPI Nor Flash或SPI NandFlash,PCIE选择从片模式;
为hi3531d_nand_defconfig时,使用Nand Flash,PCIE选择主片模式;
为hi3531d_nand_slave_defconfig时,使用Nand Flash,PCIE选择从片模式;

单独编译uboot:

  1. 编译之前进入include/config,找到hi3531d_nand.h文件。
    修改添加参数
#define CONFIG_BOOTCOMMAND ‘nand read 0x41000000 0x100000 0x1500000(意思是在0x41下载并保存文件然后烧到初始位置为0x10烧录大小为0x15);bootm 0x41000000’
#define CONFIG_BOOTARGS 'mem=128M(按照我的理解这个就是系统内存类似C盘) console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot),15M(kernel),48M(rootfs),64M(test)'

在这里插入图片描述
待进入boot源代码目录后,执行以下操作

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- hi3531d_xxx_config
make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux-
或者
make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- hi3531d_xxx_config
make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux-
//参数说明:
//hi3531d_xxx_config设为hi3531d_config时,使用SPI Nor Flash或SPI Nand Flash;
//hi3531d_xxx_config设为hi3531d_nand_config时,使用Nand Flash;

在这里插入图片描述
将生成的 u-boot.bin 复制到 osdrv/tools/pc/uboot_tools/ 目录
执行命令:

./mkboot.sh reg_info_hi3531d.bin u-boot_hi3531d.bin

将生成可用的 u-boot_hi3531d.bin 镜像文件
在这里插入图片描述

制作文件系统镜像:

  1. 首先自己制作根文件目录把mpp文件夹里面的.ko文件(海思库).so文件(动态库)都拷贝到根文件目录还有根文件目录profile设置好(根文件系统在Hi3531DV100_SDK_V1.0.5.0/package下的rootfs_uclibc.tgz(把它解压出来))。
    在这里插入图片描述
    如图所示的文件夹cp到解压出来的文件系统(rootfs_uclibc)中
    在这里插入图片描述
  2. 其实在Hi3531DV100_SDK_V1.0.5.0/package中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。
    在这里插入图片描述
    如图所示为SDK编译好的文件系统
  3. 自定义编译系统文件
    在这里插入图片描述
    解析一下我的命令参数含义
SPI Nor Flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到SPI Nor
Flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。下面以块大小为64KB为例:
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2(用绝对路径这里的是相对路径)
或者
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x10000 -o osdrv/pub/rootfs_glibc_64k.jffs2(用绝对路径这里的是相对路径)
Nand Flash和SPI Nand Flash使用yaffs2格式的镜像,制作yaffs2镜像时,需要用到Nand Flash的pagesize和ecc。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkyaffs2image工具,根据打印信息填写相关参数。
示例:
2KB pagesize、4bit ecc命令格式为:
如果制作Nand的镜像,则使用mkyaffs2image610工具:
./mkyaffs2image610 ../../../../../package/rootfs_uclibc ../../../../pub/rootfs_uclibc_2k_4bit.yaffs2 1 2
*********我用的是这条************
../../../../../package/rootfs_uclibc:意思是你要生成系统镜像的系统文件夹
../../../../pub/rootfs_uclibc_2k_4bit.yaffs2:意思是生成的镜像保存的路径
或者
osdrv/pub/bin/pc/mkyaffs2image610 osdrv/pub/rootfs_glibc osdrv/pub/rootfs_glibc_2k_4bit.yaffs2 1 2
如果制作SPI Nand的镜像,则使用mkyaffs2image100工具:
osdrv/pub/bin/pc/mkyaffs2image100 osdrv/pub/rootfs_uclibc osdrv/pub/rootfs_uclibc_2k_4bit.yaffs2 1 2
或者
osdrv/pub/bin/pc/mkyaffs2image100 osdrv/pub/rootfs_gclibc osdrv/pub/rootfs_uclibc_2k_4bit.yaffs2 1 2

说明:
	当FLASH_TYPE=spi时,生成的mkyaffs2image工具是mkyaffs2image100;
	当FLASH_TYPE=nand时,生成的mkyaffs2image工具是mkyaffs2image610;

准备烧录工具Hitool烧录镜像(烧录工具可以找我拿:Q:812417530)

  1. 将本地连接的IP地址设置为192.168.1.81,子网掩码255.255.255.0 (因为我配置了板端ip为,在hi3531d_nand.h里面配置),如下图:

在这里插入图片描述
在这里插入图片描述
最后配置烧写地址,点击烧写,烧写完重启就OK拉
在这里插入图片描述

Logo

更多推荐