这一篇随笔讲叙述下基于Hi3559AV100的BOXER-8410AI板载u-boot、kernel及rootfs烧录具体过程及遇到问题的解决方法与心得。

1、前期板载启动测试和烧录手段

1.1、烧写方法一-利用MicroUSB接口烧录准备

  烧写测试:拿到板子后,根据官方文档是通过板载中MicroUSB连接到PC端,之后进行串口通信,但是一顿操作下来之后,发现PC端没有发现com口,后面分析原因,可能是板载没有进行MicroUSB的驱动加载,导致PC端没有加载com口,具体解决方面可以参考《HiBurn工具使用指南》,个人操作如下:
  文档说:单板上电时,需要进入 USB 模式,进入 USB 模式的方法请参考 SDK 包里面的文档《Hi35xxVxxx SDK 安装使用说明》,但是在安装说明中没有找到类似的地方,直接忽略即可。  
  结合文档:Hi3559V100芯片支持 USB 非裸烧,需要提前在 Windows 平台的 PC 机上,安装好指定的驱动,安装方法如下:由于 USB 裸烧或非裸烧,还跟板端配置及软件配合相关,实际是否支持以实际发布版本为准。
①. 从 http://zadig.akeo.ie 上下载 zadig.exe 文件,请根据自己的操作系统下载相应的
exe 执行文件,当前最新版本如下(请以实际为准):
  zadig_2.3.exe
  以 win7 系统下驱动安装为例(文档说win10 暂不支持,虽然说win10不支持,但其实通过实践win10也是OK的)。
②. 用 HiBurn 工具串口功能烧写 uboot,烧写完成之后,在单板的 uboot 下输入命令usb device,USB 接口与 PC 端相连,进入升级模式,PC 端设备管理器出现HiUSBBurn 设备如图1所示,此时 windows 会自动搜索驱动程序,等待 windows 搜索驱动程序搜索不到之后进行第③步。 

图1 HiUSB安装图解

③. 打开 zadig_2.3.exe 文件,选择 Options->List All Devices,将 List All Devices 勾
上,如图 2所示。 

图2 勾选 List All Devices
④. 在红色方框位置选择 hiUSBBurn 设备,然后方框内选择驱动 libusbK,点击“Install Driver”,如图3所示,之后点击Install Driver,等待驱动安装完成。 

图3 安装 libusbK
⑤. LibusbK 安装完成之后,打开设备管理器,查看驱动是否安装正确,如图4为正确安装后的状态。 

图4 驱动正确安装后的设备管理器

1.2、烧写方法二-利用Console Port接口进行烧录-推荐使用(最稳定)

  拿到板子后,连接 Console Port 端口,在 putty (其他串口工具也可以)进行串口连接(通过打开设备管理器选择对应com串口),波特率设置为 115200,在接通板子电源后,putty 软件上点击连接,随后按下板子开关键,可以看到板子正在启动,最后进入到系统,不需要账号密码,在 home目录下可以进行一些脚本的测试,包括 HDMI 等的测试。(但是在测试过程中发现厂家自带的系统是没有网口驱动的,即其内核没有搭建网口驱动,因为后续的开发用到了网口,所以需要重新烧录内核)

2、Hi3559AV100 镜像烧录步骤

  起初参考了厂家发来的文档《BOXER-8410AI Manual 1st Ed.pdf》(但是貌似是 hisilicon 官方提供的文档),在 P40 页 33.3 Flash Image Steps,但
是按起步骤来搞不定,主要是因为 microUSB 连接之后没有串口显示即没有 com口,在 Hitool 软件下进行烧录时,用 USB Port 模式也可以不能行,主要是 USB的驱动可能没有事先装好,可能需要事先装好 libusbK(HiUSBBurn)驱动,(但是 Hi3559AV100 只支持 USB 非裸烧,非裸烧即为不勾选 uboot,仅勾选其他分区进行烧写,此时需要保证当前单板上已经存在 uboot,烧写时工具会启动 uboot,与其交互,通过向 uboot 发送 TFTP 命令与 Write 命令,完成烧写)
--------->具体步骤见《HiBurn 工具使用指南.pdf》1、5 步骤 7 P6 页。
  之后自己摸索了一下,成功进行了镜像烧录,具体的硬件连接需要将板载端Console Port 端口与 PC 相连,之后去官网下载镜像:
https://www.aaeon.com/cn/p/edge-ai-box-pc-hisilicon-hi3559a-boxer-8410ai因为板子型号为 BOXER-8410AI-A2-1010,因此选择如下:

  目录如下:

  之后打开 Hitool 软件,注意点如下:

  但是官网给的根文件系统太大了,用串口下载大概需要 1~2 天的时间,因此根据《Hi3559A╱C V100 SDK 安装及升级使用说明.pdf》下 3.2 P7 页,参照单系统 Linux 方案烧写步骤,到虚拟机下 SDK 目录下找到发布包image_glibc_multi-core_arm64(一定注意osdrv编译时make选项选择为emmc烧录,否则无法烧录),如下图所示:

  选择文件系统大小为 16.7M 的根文件系统,如下:

  随后在 Hitool 界面下,点击如下图所示,更换根系统:最后在板子通电的情况下(板子上开关指示灯不亮),点击 Hitool 的烧写:


  之后按下板子开关,随后 Hitool 控制台显示如下,即正在烧写。(注意:全过程不需要在板子上按 update 或者 reset 按键) 

  随后继续烧写镜像,等大概 40 分钟即可。

3、NFS 挂载-网口激活与启用(板载根文件为虚拟机下的根文件系统)

(即虚拟机下 16.7M 的 rootfs,ext4 格式-emmc类型)


挂载命令:
mount -t nfs -o nolock -o tcp -o rsize=32768,wsize=32768 192.168.43.27:/nfsroot /mnt

4、板载简单测试(板载根文件为虚拟机下的根文件系统)

(即虚拟机下 16.7M 的 rootfs,ext4 格式)
在虚拟机/nfsroot/test_hello 目录下首先编写一个简单的 hello 程序,具体
hello.c 代码如下:


  并通过交叉编译器编译成可执行文件,输入如下命令:$aarch64-himix100-linux-gcc -o hello hello.c(且发现,通过交叉编译器生成的可执行文件,在虚拟机端是运行不过的,只有用 gcc 来编译才可以在虚拟机上运行,但用 gcc 编译的可执行文件,在板载端运行不了)。
  之后进行验证,在虚拟机挂载好/nfsroot 目录之后,进入到/mnt/nfsroot/test_hello 目录下直接输入 $ ./hello,输出结果如下所示,是正常运行的。(其可以很好说明交叉编译链已经安装成功)

5、使用网口烧写官网给的根文件系统(速度最快效率最高)

  通过上述步骤2 Hi3559AV100 镜像烧录步骤下,已经启用了网口,之后直接通过Hitool的网口下载,选择正确的板端配置IP,在Burn eMMC一栏选择对应的根文件系统,在不断电的情况下,直接点击烧录,之后开启网口的步骤和上述2一样。(因为官方给的根文件系统自带了很多驱动,省去了重新配置kernel driver menuconfig)

Hi3559板载u-boot、kernel及rootfs烧录过程及心得的更多相关文章

  1. 实现Hi3559板载自启动网卡、NFS及Telnet服务

    实现Hi3559板载开机自启动网卡.NFS及Telnet服务通过直接在home目录下,编辑.bashrc,vi ~/.bashrc 1 ifconfig eth0 up 2 ifconfig eth0 ...

  2. 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】

    转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...

  3. Hi3559AV100-自己编译了u-boot、kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路

    这篇随笔主要给出了Hi3559AV100-自己编译了u-boot.kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路. 问题 (1)对于 u-boot 为官方的,kernel ...

  4. 02.将uboot,kernel,rootfs下载到开发板上

    转载,侵删 将uboot,kernel,rootfs下载到开发板上 1.为什么要下载 所谓下载,也称烧录,部署. 1.1.什么是u-boot Hi3518EV200 单板的 Bootloader 采用 ...

  5. HI3518EV200+AR0130开发板烧录uboot、kernel、rootfs及其参数配置

    分区名 分区大小 起始地址 截至地址bootloader:1M 0x00000000 0x00100000kernel: 3M 0x00100000 0x00400000rootfs: 12M 0x0 ...

  6. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

  7. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】

    转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...

  8. BeagleBone硬件概览Ethernet端口板载LEDc重置按钮等介绍

    BeagleBone硬件概览Ethernet端口板载LEDc重置按钮等介绍 你进入BeagleBone世界的第一步就是将它连接以得到命令提示,然后你就可以处理文件以及执行命令了.在这里,你就可以定制你 ...

  9. 在树莓派3B、Ubuntu 18.04关闭板载Wifi、蓝牙

    树莓派没有传统的BIOS设置界面,文件/boot/firmware/config.txt就相当一个BIOS设置.这里是config.txt的详细文档:https://github.com/raspbe ...

随机推荐

  1. 牛客NC15879 A Simple Problem

    传送门:A Simple Problem 题意 给定两个序列s1和s2,同样的数字可以用相同的别的数字代替(并且也可以是出现过的数字),问s2在s1中出现了几次. 题解 首先预处理一下这两个序列,因为 ...

  2. Java 窗口 绘制图形 #2

    写在前面: 高考结束咧,爽到啊,好耶 完善了Java 窗口 绘制图形 #1里面的程序 加入了缩放平移功能,给代码加了注释 1 package my_package; 2 3 import java.a ...

  3. Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal (思维,逆序对)

    题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换 ...

  4. codeforces578C. Weakness and Poorness

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  5. Codeforces Round #667 (Div. 3) D. Decrease the Sum of Digits (贪心)

    题意:给你一个正整数\(n\),每次可以对\(n\)加一,问最少操作多少次是的\(n\)的所有位数之和不大于\(s\). 题解:\(n\)的某个位置上的数进位,意味这后面的位置都可以被更新为\(0\) ...

  6. 解决M1 MacBook无法使用pip安装Numpy

    问题描述 Python官方已发布支持M1 Apple Silicon的版本,但是在使用pip包管理工具安装一些依赖时发生了错误,这里面就包括在科学计算领域常用的numpy.pandas等.目前可以通过 ...

  7. Linux下的C语言编程

    一.在Linux下的C语言编程所需工具(下面所列举的都是我编程所用的工具) 1.文本编辑器 Vim 2.编译链接工具 gcc 3.调试器 gdb 4.项目管理工具 make和makefile 二.VI ...

  8. Sublime text 3 中 Package Control安装

    安装前 ctrl+shift+p  在命令板中输入PC,如下图表示没安装: 使用ctrl+~调出sublime软件的控制台命令窗口:粘贴运行 import urllib.request,os,hash ...

  9. JavaScript事件绑定的三种方式

    (一)事件绑定的三种方式 (1)通过on的形式 <script type="text/javascript"> var div = document.getElemen ...

  10. 006.NET 项目建立+传值

    1. 创建项目 2.传值(控制器向视图传递) 接收值 3.视图向控制器传递 4.session配置