ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Hi3518EV300开发板——1. Linux系统移植

2021-02-02 15:33:47  阅读:404  来源: 互联网

标签:linux sudo Hi3518EV300 -- osdrv apt 开发板 install Linux


前言

这里使用的是润和的 IPC Hi3518EV300 开发板。
开发板

默认具备:

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

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
  1. 解压SDK、进入
    tar -zxvf Hi3516EV200_SDK_V1.0.1.0.tgz
    cd Hi3516EV200_SDK_V1.0.1.0/
    
  2. 展开SDK
    ./sdk.unpack
    

2.交叉编译工具
  1. 解压安装
    tar zxvf arm-himix100-linux.tgz
    cd arm-himix100-linux/
    
  2. 安装
    sudo ./arm-himix100-linux.install
    
  3. 设置环境
    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
    

安装成功: success


3.编译osdrv

参考:osdrv 下 readme

  1. 准备工具
    下载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
    
  2. 完整编译

    make OSDRV_CROSS=arm-himix100-linux CHIP=hi3518ev300 all
    
  3. 编译过程报错解决

    1. 先安装下面的依赖包

      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
      
    2. 报错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位库依赖。

    3. 报错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


    1. 报错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版本

    2. 报错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
      
  4. 编译成功
    出现 ---------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烧录
  1. 文件准备:

    1. osdrv -> pub -> hi3518ev300_spi_image_uclibc 目录下的这三个文件是我们烧录需要的:

    这里文件系统具体可以根据uboot启动看你的 SPI Flash 的Block Size 进行选择

    说明
    u-boot-hi3516ev200.binu-boot镜像
    uImage_hi3516ev200kernel镜像
    rootfs_hi3516ev200_64k.jffs264K jffs2 文件系统镜像

    将这三个文件拷贝到你的Windows下,打开HiTools,开始我们的最激动人心的时刻!!!


  1. !!!!!!设置相关参数!!!!!!!(设置不对,可能烧录就有问题)
    !!!!!!这里不清楚,就按我下面设置一模一样设置,不要乱改值!!!!!!
    在这里插入图片描述
    1. 选择USB口
    2. 选择你开发板的端口号(去设备管理器查看)
    3. 选择按分区烧写
    4. 选择刚才让你拷贝过来的3个文件,一定按顺序加入
    5. 将器件类型改为:spi nor
    6. 不明白的就按我的一模一样的设置(建议尽量不要乱改,这里的大小设置是完全够折腾的)
    7. 勾选第二个和第三个烧录,第一个uboot不建议烧录!

  1. 现在进行烧录,这里参考我的这篇文章,已经完完全全的写明白,按步骤操作即可:

    Hi3518EV300开发板——移植Linux 0.串口快速烧录教程


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

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

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

  2. 修改bootargsbootcmd

    # 复制过去
    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	#重启
    

    这里bootargsbootcmd参数设置可以参考这篇文章:

    Hi3516DV300开发板——3.烧录过程问题、uboot相关设置及移植前准备

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

    
                _ _ _ _ _ _ _ _ _ _ _ _
                \  _  _   _  _ _ ___
                / /__/ \ |_/
               / __   /  -  _ ___
              / /  / /  / /
      _ _ _ _/ /  /  \_/  \_ ______
    ___________\___\__________________
    
    Welcome to HiLinux.
    None of nfsroot found in cmdline.
    
    ~ # 
    
8. 正式烧录完成进入Linux

Linux

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

标签:linux,sudo,Hi3518EV300,--,osdrv,apt,开发板,install,Linux
来源: https://blog.csdn.net/qq_30722795/article/details/113528349

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有