[文章]IPC Hi3518EV300开发板——1. Linux系统移植

阅读量3058
1
1
前言:
这里使用的是润和的 IPC Hi3518EV300 开发板




本篇文章如果格式不正确或者其他问题,可以转到我的博客食用!
https://blog.csdn.net/qq_30722795/article/details/113528349




默认具备:


  • Hi3518EV200 SDK
  • arm-himix100-linux.tgz 交叉编译工具
  • Linux虚拟机或者相关环境
  • 熟悉Linux相关操作




1. 准备基本环境

将Linux shell改为bash

查看shell是否为bash,在终端运行如下命令

  1. ls -l /bin/sh
复制代码

如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:

  • 方法一:在终端运行如下命令,然后选择 no。

  1. sudo dpkg-reconfigure dash
复制代码
  • 方法二:先删除sh,再创建软链接。
  1. sudo rm -rf /bin/sh
  2. sudo ln -s /bin/bash /bin/sh
复制代码



1. 展开SDK
  • 解压SDK、进入

  1. tar -zxvf Hi3516EV200_SDK_V1.0.1.0.tgz
  2. cd Hi3516EV200_SDK_V1.0.1.0/
复制代码


  • 展开SDK
  1. ./sdk.unpack
复制代码



2. 交叉编译工具


  • 解压安装
  1. tar zxvf arm-himix100-linux.tgz
  2. cd arm-himix100-linux/
复制代码
  • 安装
  1. sudo ./arm-himix100-linux.install
复制代码
  • 设置环境
  1. echo "export PATH=/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH" >> ~/.bashrc
  2. echo "export LC_ALL=C" >> ~/.bashrc
  3. arm-himix100-linux-gcc --v
复制代码




  • 安装成功:








3.编译osdrv参考:osdrv下readme


  • 准备工具
下载linux-4.9.37.tar.gz
  1. cd osdrv #进入osdrv
  2. # 将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中
  3. wget -P opensource/kernel/ https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.9.37.tar.gz

  4. # 将下载的 yaffs2utils-0.2.9.tar.gz 存放到osdrv的tools/pc/mkyaffs2image/目录中
  5. wget -P tools/pc/mkyaffs2image/ https://github.com/dorigom/yaffs2utils/archive/0.2.9.tar.gz

  6. # 将下载的 gdb-7.9.1.tar.gz 存放到 osdrv的tools/board/gdb/目录中
  7. wget -P tools/board/gdb/ http://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz

  8. # 将下载的 ncurses-6.0.tar.gz 存放到 osdrv的tools/board/gdb/目录中
  9. wget -P tools/board/gdb/ http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz

  10. # 将下载的 util-linux-2.31.tar.gz 存放到 osdrv的tools/pc/cramfs_tool/目录中
  11. wget -P tools/pc/cramfs_tool/ https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-2.31.tar.gz
复制代码



  • 完整编译

  1. make OSDRV_CROSS=arm-himix100-linux CHIP=hi3518ev300 all
复制代码



  • 编译过程报错解决

首先安装这些依赖包:
  1. sudo apt-get install libc6 libc6-dev libc6-dev-i386
  2. sudo apt-get install libx32gcc-4.8-dev lib32stdc++6 gcc-multilib lib32ncurses5
  3. sudo apt-get install lib32z1 lib32z1-dev
  4. sudo apt-get install libstdc++6 lib32stdc++6  
  5. sudo apt-get install build-essential
  6. sudo apt-get install libu***-1.0-0-dev
  7. sudo apt-get install libtool
  8. sudo apt-get install bison
  9. sudo apt-get install libncurses5-dev
  10. sudo apt-get install mtd-utils
  11. sudo apt-get install uuid-dev
复制代码

  • 报错1:

  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
  2. Makefile:174: recipe for target 'hiregbin_prepare' failed
  3. make: *** [hiregbin_prepare] Error 1
复制代码

解决:
  1. sudo apt install lib32z1-dev
复制代码
原因:Hi3518EV300是 32 位开发板,电脑是64位,安装32位库依赖。


  • 报错2:

  1. 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
  2. Makefile:189: recipe for target 'hiboot' failed
  3. make: *** [hiboot] Error 1
复制代码
解决:

  1. sudo vi /etc/default/locale
  2. vi opensource/uboot/u-boot-2016.11/Makefile
复制代码
注释 第23行:unexport LC_ALL,改为:#unexport LC_ALL



  • 报错3:

  1. Makefile:45: recipe for target '/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/pc/ jffs2_tool/tmp/***in/mkfs.jffs2' failed
  2. make[1]: *** [/home/xxxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/pc/
  3. jffs2_tool/tmp/***in/mkfs.jffs2] Error 1
复制代码
解决:

  1. sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
  2. export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"
  3. sudo apt-get install automake
复制代码
原因:缺少 mtd-utils2.0.2 依赖库,同时依赖于>=automake1.15.1版本



  • 报错4:
  1. 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
  2. make[1]: Leaving directory '/home/xxx/Hi3516EV200_SDK_V1.0.1.0/osdrv/tools/
  3. board/eudev-3.2.7'
  4. Makefile:377: recipe for target 'hiboardtools' failed
复制代码
解决:

  1. sudo apt-get install  gperf
复制代码


4. 编译成功

出现 ---------finish osdrv work即成功编译


注意,这里采用全部编译,只是保证 为后面单独修改编译提供便利,大佬是可以采用单独编译的!!!








5. 生成目录
编译完的image,rootfs等存放在osdrv/pub目录下

  1. pub/
  2. |-- bin
  3. |   |-- board_uclibc
  4. |   |   |-- doc_loadbios
  5. |   |   |-- docfdisk
  6. |   |   |-- flash_erase
  7. |   |   |-- flash_eraseall
  8. |   |   |-- flash_lock
  9. |   |   |-- flash_otp_dump
  10. |   |   |-- flash_otp_info
  11. |   |   |-- flash_otp_lock
  12. |   |   |-- flash_otp_write
  13. |   |   |-- flash_unlock
  14. |   |   |-- flashcp
  15. |   |   |-- ftl_check
  16. |   |   |-- ftl_format
  17. |   |   |-- gdb-arm-himix100-linux
  18. |   |   |-- jffs2dump
  19. |   |   |-- jffs2reader
  20. |   |   |-- mkfs.jffs2
  21. |   |   |-- mkfs.ubifs
  22. |   |   |-- mtd_debug
  23. |   |   |-- .....
  24. |   |-- pc
  25. |       |-- lzma
  26. |       |-- make_ext4fs
  27. |       |-- mkfs.cramfs
  28. |       |-- mkfs.jffs2
  29. |       |-- mkfs.ubifs
  30. |       |-- mksquashfs
  31. |       |-- mkyaffs2image100
  32. |       |-- nand_product
  33. |       |-- ubinize
  34. |-- hi3518ev300_spi_image_uclibc------------------------------------ himix100编译出的镜像文件
  35. |   |-- uImage_hi3516ev200 ----------------------------------------- kernel镜像
  36. |   |-- u-boot-hi3516ev200.bin ------------------------------------- u-boot镜像
  37. |   |-- rootfs_hi3516ev200_64k.jffs2 ------------------------------- 64K jffs2 文件系统镜像
  38. |   |-- rootfs_hi3516ev200_128k.jffs2 ------------------------------ 128K jffs2 文件系统镜像
  39. |   |-- rootfs_hi3516ev200_256k.jffs2 ------------------------------ 256K jffs2 文件系统镜像
  40. |   |-- rootfs_hi3516ev200_2k_4bit.yaffs2 -------------------------- yaffs2 文件系统镜像
  41. |   |-- rootfs_hi3516ev200_2k_24bit.yaffs2 ------------------------- yaffs2 文件系统镜像
  42. |   |-- rootfs_hi3516ev200_4k_4bit.yaffs2 -------------------------- yaffs2 文件系统镜像
  43. |   |-- rootfs_hi3516ev200_4k_24bit.yaffs2 ------------------------- yaffs2 文件系统镜像
  44. |   |-- rootfs_hi3516ev200_2k_128k_32M.ubifs------------------------ 2k 128k UBI 文件系统镜像
  45. |   |-- rootfs_hi3516ev200_4k_256k_50M.ubifs------------------------ 4k 256k UBI 文件系统镜像
  46. |
  47. |-- 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不建议烧录!

现在进行烧录,这里参考我的这篇文章,已经完完全全的写明白,按步骤操作即可:
https://blog.csdn.net/qq_30722795/article/details/113501321







7. 开发板uboot启动设置(!!重要!!


烧录完成后会自动进入系统,但此时由于 uboot 设置参数不正确,无法引导内核启动,所以还需要设置uboot。


  • 烧录完成后,在SecureCRT可以看到
    1. hisilicon #
    复制代码
    说明 uboot 启动了。



  • 修改bootargs 和 bootcmd

  1. # 复制过去
  2. setenv bootargs "console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs) rw"
  3. setenv bootcmd "sf probe 0;sf read 0x40000000 0x100000 0x400000;bootm 0x40000000";
  4. saveenv        # 保存参数
  5. reset        #重启
复制代码

这里bootargs 和 bootcmd参数设置可以参考这篇文章:https://blog.csdn.net/qq_30722795/article/details/109383230


  • 此时你应该就可以看到可以引导进入内核和挂载文件系统了。

  1.                        _ _ _ _ _ _ _ _ _ _ _ _
  2.                          _  _   _  _ _ ___
  3.                        / /__/  |_/
  4.                      / __   /  -  _ ___
  5.                   / /  / /  / /
  6.        _ _ _ _/ /  /  _/  _ ______
  7. ________________________________

  8. Welcome to HiLinux.
  9. None of nfsroot found in cmdline.

  10. ~ #
复制代码


  • 正式烧录完成进入Linux





然后相关的驱动之类的就需要自己加油探索研究了!!!








1 条评论

2022-02-20 18:23:34
沙发
请问SDK在哪里下载的
回复举报

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友