IPC Hi3518EV300开发板——1. Linux系统移植
前言这里使用的是润和的 IPC Hi3518EV300 开发板。默认具备:Hi3518EV200 SDKarm-himix100-linux.tgz 交叉编译工具链Linux虚拟机或者环境熟悉Linux相关操作Linux1. 准备基本环境将Linux shell改为bash查看shell是否为bash,在终端运行如下命令ls -l /bin/sh如果显示为“/bin/sh -> bash”则
前言
预告:
!!!!下一篇出uvc相关及驱动的教程!!!!
开发板:
这里使用的是润和的 IPC Camra Hi3518EV300
开发板。
默认具备:
Hi3518EV200 SDK
arm-himix100-linux.tgz
交叉编译工具链- Linux虚拟机或者环境
- 熟悉Linux相关操作
- uboot 相关操作
1. 准备基本环境
1. 将Linux shell改为bash
查看shell是否为bash,在终端运行如下命令
ls -l /bin/sh
如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:
- 方法一:在终端运行如下命令,然后选择 no。
sudo dpkg-reconfigure dash
- 方法二:先删除sh,再创建软链接。
sudo rm -rf /bin/sh sudo ln -s /bin/bash /bin/sh
2. 展开SDK
- 解压SDK、进入
tar -zxvf Hi3516EV200_SDK_V1.0.1.0.tgz cd Hi3516EV200_SDK_V1.0.1.0/
- 展开SDK
./sdk.unpack
3.交叉编译工具
- 解压安装
tar zxvf arm-himix100-linux.tgz cd arm-himix100-linux/
- 安装
sudo ./arm-himix100-linux.install
- 设置环境
echo "export PATH=/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH" >> ~/.bashrc echo "export LC_ALL=C" >> ~/.bashrc arm-himix100-linux-gcc --v
安装成功:
3.编译osdrv
参考:osdrv 下 readme
-
准备工具
下载linux-4.9.37.tar.gz
cd osdrv #进入osdrv # 将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中 wget -P opensource/kernel/ https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.9.37.tar.gz # 将下载的 yaffs2utils-0.2.9.tar.gz 存放到osdrv的tools/pc/mkyaffs2image/目录中 wget -P tools/pc/mkyaffs2image/ https://github.com/dorigom/yaffs2utils/archive/0.2.9.tar.gz # 将下载的 gdb-7.9.1.tar.gz 存放到 osdrv的tools/board/gdb/目录中 wget -P tools/board/gdb/ http://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz # 将下载的 ncurses-6.0.tar.gz 存放到 osdrv的tools/board/gdb/目录中 wget -P tools/board/gdb/ http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz # 将下载的 util-linux-2.31.tar.gz 存放到 osdrv的tools/pc/cramfs_tool/目录中 wget -P tools/pc/cramfs_tool/ https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-2.31.tar.gz
-
完整编译
make OSDRV_CROSS=arm-himix100-linux CHIP=hi3518ev300 all
-
编译过程报错解决
-
先安装下面的依赖包:
sudo apt-get install libc6 libc6-dev libc6-dev-i386 sudo apt-get install libx32gcc-4.8-dev lib32stdc++6 gcc-multilib lib32ncurses5 sudo apt-get install lib32z1 lib32z1-dev sudo apt-get install libstdc++6 lib32stdc++6 sudo apt-get install build-essential sudo apt-get install libusb-1.0-0-dev sudo apt-get install libtool sudo apt-get install bison sudo apt-get install libncurses5-dev sudo apt-get install mtd-utils sudo apt-get install uuid-dev
-
报错1:
mv: cannot stat '/home/xxxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/pc/\ uboot_tools/hiregbin-v5.0.1/reg_info_hi3516ev200.bin': No such file or directory Makefile:174: recipe for target 'hiregbin_prepare' failed make: *** [hiregbin_prepare] Error 1
解决:
sudo apt install lib32z1-dev
原因:
Hi3518EV300
是 32 位开发板,电脑是64位,安装32位库依赖。 -
报错2:
cp: cannot stat '/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/opensource/uboot/\ u-boot-2016.11/u-boot-hi3516ev200.bin': No such file or directory Makefile:189: recipe for target 'hiboot' failed make: *** [hiboot] Error 1
解决:
sudo vi /etc/default/locale vi opensource/uboot/u-boot-2016.11/Makefile
注释 第23行:
unexport LC_ALL
,改为:#unexport LC_ALL
-
报错3
Makefile:45: recipe for target '/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/pc/ \ jffs2_tool/tmp/sbin/mkfs.jffs2' failed make[1]: *** [/home/xxxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/pc/ \ jffs2_tool/tmp/sbin/mkfs.jffs2] Error 1
解决:
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig" sudo apt-get install automake
原因:缺少
mtd-utils2.0.2
依赖库,同时依赖于>=automake1.15.1
版本 -
报错4:
make[1]: *** [/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/ \ board/eudev-3.2.7/tmp/eudev-3.2.7/udevd] Error 1 make[1]: Leaving directory '/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/ \ board/eudev-3.2.7' Makefile:377: recipe for target 'hiboardtools' failed
解决:
sudo apt-get install gperf
-
-
编译成功
出现---------finish osdrv work
即成功编译注意,这里采用全部编译,只是保证 为后面单独修改编译提供便利,大佬是可以采用单独编译的!!!
5. 生成目录
编译完的image,rootfs等存放在osdrv/pub目录下
pub/
|-- bin
| |-- board_uclibc
| | |-- doc_loadbios
| | |-- docfdisk
| | |-- flash_erase
| | |-- flash_eraseall
| | |-- flash_lock
| | |-- flash_otp_dump
| | |-- flash_otp_info
| | |-- flash_otp_lock
| | |-- flash_otp_write
| | |-- flash_unlock
| | |-- flashcp
| | |-- ftl_check
| | |-- ftl_format
| | |-- gdb-arm-himix100-linux
| | |-- jffs2dump
| | |-- jffs2reader
| | |-- mkfs.jffs2
| | |-- mkfs.ubifs
| | |-- mtd_debug
| | |-- .....
| |-- pc
| |-- lzma
| |-- make_ext4fs
| |-- mkfs.cramfs
| |-- mkfs.jffs2
| |-- mkfs.ubifs
| |-- mksquashfs
| |-- mkyaffs2image100
| |-- nand_product
| |-- ubinize
|-- hi3518ev300_spi_image_uclibc------------------------------------ himix100编译出的镜像文件
| |-- uImage_hi3516ev200 ----------------------------------------- kernel镜像
| |-- u-boot-hi3516ev200.bin ------------------------------------- u-boot镜像
| |-- rootfs_hi3516ev200_64k.jffs2 ------------------------------- 64K jffs2 文件系统镜像
| |-- rootfs_hi3516ev200_128k.jffs2 ------------------------------ 128K jffs2 文件系统镜像
| |-- rootfs_hi3516ev200_256k.jffs2 ------------------------------ 256K jffs2 文件系统镜像
| |-- rootfs_hi3516ev200_2k_4bit.yaffs2 -------------------------- yaffs2 文件系统镜像
| |-- rootfs_hi3516ev200_2k_24bit.yaffs2 ------------------------- yaffs2 文件系统镜像
| |-- rootfs_hi3516ev200_4k_4bit.yaffs2 -------------------------- yaffs2 文件系统镜像
| |-- rootfs_hi3516ev200_4k_24bit.yaffs2 ------------------------- yaffs2 文件系统镜像
| |-- rootfs_hi3516ev200_2k_128k_32M.ubifs------------------------ 2k 128k UBI 文件系统镜像
| |-- rootfs_hi3516ev200_4k_256k_50M.ubifs------------------------ 4k 256k UBI 文件系统镜像
|
|-- rootfs_uclibc.tgz ------------------------------------------- himix100编译出的rootfs文件系统
6. PC烧录
-
文件准备:
osdrv -> pub -> hi3518ev300_spi_image_uclibc
目录下的这三个文件是我们烧录需要的:
这里文件系统具体可以根据uboot启动看你的 SPI Flash 的Block Size 进行选择
文件 说明 u-boot-hi3516ev200.bin u-boot镜像 uImage_hi3516ev200 kernel镜像 rootfs_hi3516ev200_64k.jffs2 64K jffs2 文件系统镜像 将这三个文件拷贝到你的Windows下,打开HiTools,开始我们的最激动人心的时刻!!!
- !!!!!!设置相关参数!!!!!!!(设置不对,可能烧录就有问题)
!!!!!!这里不清楚,就按我下面设置一模一样设置,不要乱改值!!!!!!
- 选择USB口
- 选择你开发板的端口号(去设备管理器查看)
- 选择按分区烧写
- 选择刚才让你拷贝过来的3个文件,一定按顺序加入
- 将器件类型改为:
spi nor
- 不明白的就按我的一模一样的设置(建议尽量不要乱改,这里的大小设置是完全够折腾的)
- 勾选第二个和第三个烧录,第一个uboot不建议烧录!
-
现在进行烧录,这里参考我的这篇文章,已经完完全全的写明白,按步骤操作即可:
7. 开发板uboot启动设置(!!重要!!)
烧录完成后会自动进入系统,但此时由于 uboot
设置参数不正确,无法引导内核启动,所以还需要设置uboot
。
-
烧录完成后,在SecureCRT可以看到
hisilicon #
说明uboot
启动了。
-
修改
bootargs
和bootcmd
# 复制过去 setenv bootargs "console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs) rw" setenv bootcmd "sf probe 0;sf read 0x40000000 0x100000 0x400000;bootm 0x40000000"; saveenv # 保存参数 reset #重启
这里
bootargs
和bootcmd
参数设置可以参考这篇文章: -
此时你应该就可以看到可以引导进入内核和挂载文件系统了。
_ _ _ _ _ _ _ _ _ _ _ _ \ _ _ _ _ _ ___ / /__/ \ |_/ / __ / - _ ___ / / / / / / _ _ _ _/ / / \_/ \_ ______ ___________\___\__________________ Welcome to HiLinux. None of nfsroot found in cmdline. ~ #
8. 正式烧录完成进入Linux
然后相关的驱动之类的就需要自己加油探索研究了!!!
更多推荐
所有评论(0)