前言

预告:

!!!!下一篇出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
  1. 解压SDK、进入

    tar -zxvf Hi3516EV200_SDK_V1.0.1.0.tgz
    cd Hi3516EV200_SDK_V1.0.1.0/
    
  2. 展开SDK
    ./sdk.unpack
    
3.交叉编译工具
  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
    

安装成功:

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.bin u-boot镜像
    uImage_hi3516ev200 kernel镜像
    rootfs_hi3516ev200_64k.jffs2 64K 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 启动了。

  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


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

IPC Hi3518EV300开发板——1. Linux系统移植相关推荐

  1. 最近在对郎成2440开发板作linux系统移植?最新的进展!

    2008年国庆开始拿到板子. 1.至10-12日板子的工具链建立完毕,可linux那边的工具链还没有开始. 2.10-12日开始作linux操作系统移植. 第一步:裁剪内核. 目前遇到的主要问题是如何 ...

  2. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  3. 烧录imx6需要的linux空间,IMX6Q学习笔记——开发板的Linux系统更新和烧录

    IMX6Q学习笔记--开发板的Linux系统更新和烧录 记录自己在电鱼电子开发SAIL-IMX6Q全能板后,并且对系统和模块进行简单测试的过程之后对开发板的Linux系统进行更新和烧录的记录过程,算是 ...

  4. Friendly ARM开发板安装Linux系统教程

    友善之臂ARM9开发板安装Linux系统教程 前言:智能蘑菇房项目的运行环境是友善之臂ARM9开发板,所以需要在上面灌一个linux系统,下面我来简单介绍一下. 准备 读卡器 SD卡 串口线一根(US ...

  5. 只需4步,让OKA40i-C开发板的Linux系统拥有中文显示

    如果你试着在Linux系统里面输入中文,那么将会有一片乱码呈现在你面前,这是因为Linux系统的默认语言是英文.但是如果可以显示中文的话,那么在使用过程中的便利程度一定会大大提升.今天小编就通过飞凌嵌 ...

  6. 游学电子教您:如何给原子的imx6开发板烧录Linux系统

    义县游学电子科技有限公司官方帐号,科技爱好者 今天游学电子带您一起学习下imx6开发板如何烧录系统.使用的开发板是原子的,这里有个注意的地方是我们烧录的系统是到emmc中,而非sd卡中. 01 步骤方 ...

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

    前言 因为 Hi3518EV300 是支持HarmonyOS.LiteOS.Linux多系统的,鸿蒙移植因为有 Hi3516DV300,基本都一模一样,所有感觉也没什么可做的,干脆跑Linux吧,顺便 ...

  8. linux can总线接收数据串口打包上传_使用Zedboard开发板学习Linux的移植及驱动开发...

    本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计中需要CPU完 ...

  9. ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    嵌入式linux系统与主机通过串口传输文件 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载.但如果网络用不了,只能通过串口下载怎 ...

  10. 干货讲解 | OKT507-C开发板基于Linux系统的应用笔记

    OKT507-C开发板,具有2路网卡(百兆/千兆),支持3路声卡,包括HDMI声卡输出.CPU内置声卡以及外扩WM8960声卡,支持录音,耳机与喇叭放音. 不仅如此,OKT507-C开发板还支持LCD ...

最新文章

  1. 去掉 java BigDecimal 类对象后面没用的零
  2. 工具栏,状态栏(VC_MFC)
  3. Linux系统没有home分区,我的linux系统home分区挂不上了
  4. saml2_向SAML响应中添加自定义声明–(如何为WSO2 Identity Server编写自定义声明处理程序)...
  5. html input 上标,javascript – 文本类型的输入字段中的上标
  6. 正版phpStorm2019激活,phpStorm图文教程(转)
  7. 如何快速开发一个支持高效、高并发的分布式ID生成器(三)
  8. SQL Server 2008 R2 里迁移系统数据库的方法
  9. [MS评估文档]SharePoint Portal Server 2003 的 10 大优点
  10. Socket 连接建立过程
  11. ffmpeg 中添加264支持
  12. photoshop 2021在m1 mac上导出png发生未知错误的解决方案
  13. 对一个“老”架构的重新思考
  14. [Virus Analysis]恶意软件分析(二)玩出花的批处理(中)
  15. centos 发送匿名邮件
  16. 酷开系统AI智能让生活更简单化
  17. 阿里云 数据库mysql卸载安装,基本上所有坑全趟了
  18. 对女朋友超级抠门的星座男 12星座老公的致命缺点 12星女无法招架的求爱手段...
  19. 浏览器状态响应码详解 1XX/2XX/3XX/4XX/5XX
  20. fieldset lengend 的应用

热门文章

  1. 2022年(第八届)全国大学生统计建模大赛
  2. 数学模型的相关概念及意义等理论内容
  3. 获取电话名录的九种方法
  4. WEB前端资源项目整合
  5. 分享Python入门经典基础题(day1)附完整答案
  6. 重庆铜梁中学空调计量项目远程预付费电能管理系统的设计与应用
  7. 教学管理系统数据库设计Mysql_教务管理系统数据库设计方案.docx
  8. IEEE论文投稿模板大全
  9. Java Swing MySQL图书管理系统
  10. PTA 数据结构题集