0 更新内容
如果你是小白,如果你不想看吐槽,如果看不太懂地平线开发社区,请先去B站把官方发布的视频看了,比社区的内容要适合小白。
https://space.bilibili.com/437998606
1 拿到板子前想什么
接触开发板的原因是毕业需要做个在嵌入式开发板上的行人检测系统,老师要求不多,检测效果可以差点,但要实时,还有就是花钱少点。
一开始玩的是英伟达的Jetson Nano,感觉还行,网上资料很多,在服务器上跑起来的模型,移到板子上基本直接就能跑了,速度嘛,不用tensorrt加速的话,输入图像尺寸调小,比如128x128,用Nanodet这种极其轻量型网络,使用cuda,backbone使用resnet18或者repvgg,检测效果一般的情况下,FPS能到13帧这样,哈哈哈,可以毕业交差了。
为什么还要去玩一玩地平线的板子呢?主要原因有几点:
- 更便宜,毕业答辩时更有气势点
- Nanodet快的主要原因是大量使用深度可分离卷积,可惜cuda对于深度可分离卷积的支持力度不够大,据说地平线的板子对深度可分离卷积支持的比较友好
- 看看国产AI芯片到底怎么样,虽然看网上数据吊打Jetson Nano,实际自己用了才知道
着重强调:文章是一个小白写的,所以有很多在大佬看来的废话,内容有错误或者侵权的地方,欢迎指正,本人会及时修改。
2 装系统前奏(图个乐)
感谢导师同意给买新板子,在拿到旭日3的板子之前,想着先做点准备,比如拿到板子的第一步,肯定是把系统给装了,怎么装?
果断打开地平线开发社区找资料,这界面乍一看真好看。
乍一看,稳了,有资料,有使用指南,装个系统手到擒来,so easy!
几个链接点开后,小白懵了。专业名词没看懂(尴尬)
先不怪自己菜、我要先吐槽哈哈哈:
2.1 资料下载专区
资料下载专区
给推荐了filezilla
下载软件,虽然下面评论不太好用的样子,但我觉得很快,学校限速1M,用这个平均1.5M,厉害了我的宝。关于这个软件怎么用,详见参考链接。小白不知道下载什么
2.2 X3开发板资料包
上一个界面右侧热门专栏,看到了最热门的X3开发板资料包
,点开看一下。
开头就给了一个下载链接:``
https://developer.horizon.ai/resource/name=AI%20%E8%8A%AF%E7%89%87%E5%B7%A5%E5%85%B7%E9%93%BE%20(AI%20Toolchain)
点开Open_Explorer 【latest】
竟然是介绍使用FileZilla软件的,这软件一定是和地平线有合作吧哈哈哈。
算了,去下载天工开物全量开发包Open_Explorer V1.5吧。
disk_X3SDB_0807_version_1.img
称之为X3SDB系统镜像
docker_gpu_openexplorer_ubuntu_v1.8.6.tar
称之为GPU Docker镜像
docker_cpu_openexplorer_centos_7_v1.11.6.tar
称之为CPU Docker镜像
小白反问两句:三者有什么区别呢?怎么使用呢?
horizon_xj3_open_explorer_v1.5.6_20211224.zip
称之为OE发布包(Open_Explorer 天工开物开发包)
我应该下载哪个呢?各个文件什么意思呢?要是我,铁定在这里加上一个readme.md
。
算了,先下载两个看看吧,下载了docker_gpu_openexplorer_ubuntu_v1.8.6.tar
和horizon_xj3_open_explorer_v1.5.6_20211224.zip
,解压之后,docker_gpu_openexplorer_ubuntu_v1.8.6
文件夹中长这样:
很明显,这样的文件夹,我没有学习的欲望,探索到这儿,这个分支可以停下来了。
horizon_xj3_open_explorer_v1.5.6_20211224
文件夹下是这样的:
release_note.txt
文件中是小白不感兴趣的东西,如下图:
到这儿,我觉得一定是我的打开方式不太对,或者说我的探索路径出现了点问题,不然这个学习流程有点劝退小白啊。内心os:本来就不是给小白看的。
我决定去了解一下各个名词什么意思。
Tips后期推荐:打开文件夹下doc/cn/index.html
,里面是地平线X3J3芯片开发手册,如下图:
在doc/en/index.html
中是英文的芯片开发手册。
3 地平线开发板相关名词解释
在我心目中,简单的系统安装过程是这样的:
两个文件,一个是制作系统的exe软件
,一个是制作系统所需的文件(最好是个压缩包),执行exe软件
,选择压缩包,指定制作系统到哪个"空内存卡"上,制作完成后,把"内存卡"插到板子上,上电开机,完成!
算了,聊远了,回到名词解释。
xj芯片:
征程J系列主要用于车企,旭日X系列主要用于AIOT物联网领域
因此一些文件命名中有x、j,应该指的是芯片类别BPU架构
Brain Processing Unit, 地平线的人工智能处理器架构,对标GPU,加速用的。OpenExplorer 天工开物:
地平线“软硬结合”,"硬"指芯片,“软”指地平线的软件开发平台,主要包括底层的系统框架、AI工具链 AI Toolchain、AI应用开发中间件 AI Express、模型仓库 Model Zoo。
想法:大杂烩?国产想要快,自己说自己的硬件算力强还不行,还得模型、程序能最大程度上把硬件算力利用起来才行,我硬件有100T算力,大家的模型只能用到2T,我硬件有10T算力,大家模型能用到8T。单纯做硬件,做不到垄断地位(没特指NVIDIA啊),谁专门研究你的硬件架构,算法模型去适配你啊,所以还得提供个普通大众模型转换成友好适配自己硬件的工具。AI工具链 AI Toolchain:
方式1:使用地平线的训练框架去训练模型,然后编译部署
方式2:使用其它深度学习框架(如Pytorch),在服务器端训练好深度学习模型,通过这个工具进行模型转换,然后编译部署到芯片上
想法:大家可能用方式2比较多,不知道模型转换、编译部署学习成本大不大(学完回答这个问题)AI应用开发中间件 AI Express:
AI应用开发中间件,主要用于嵌入式板子上层应用开发。有了板子能跑的模型,但大家不能都用命令行窗口输入命令去跑吧;不能跑一个模型开一个命令行窗口吧;多个摄像头输入,信息交互,逻辑处理可视化以及结果显示得集成到应用软件里吧,等等。模型仓库 Model Zoo:
一些如人脸检测算法的代码啊、模型权重啊,让大家看看板子上到底能不能跑模型。
看到这儿,好像是在介绍地平线啊,和给板子装系统好像没什么关系啊。
其实不然,不去找上面的名词解释,我也发现不了地平线开发板集合贴链接和系统镜像安装与开发板连接链接
4 资料准备
4.1 硬件准备:
地平线开发板(买套件内含)+USB转UART串口(4.1节有介绍,买套件内含)+杜邦线(买套件内含)+网线(自备),如下图:
4.2 软件准备:
串口驱动,我装了两个(CP210x_USB2UART_Driver链接
: https://quqi.avyeld.com/s/653819/x3SAwWHBoopNhGlW 查阅码: jglh PL2302-USB-to-Serial Comm Port
: https://quqi.avyeld.com/s/653819/sLfgRyrZqr26fduN 查阅码: olje)
镜像工具=hbupdate=地平线升级工具(V0.8版本链接: https://quqi.avyeld.com/s/653819/zfy72RimSdKBrkmY 查阅码: afjf
V1.0.6版本链接: https://quqi.avyeld.com/s/653819/YibAWzmETLee0j7S 查阅码: 81ol
新版本不卡,建议用新版本)
镜像包disk_X3SDB_0807_version_1.img(链接: https://quqi.avyeld.com/s/653819/yLj2JrV7LB6IV6Dp 查阅码: ieto)
MobaXterm软件=串口调试工具=远程登录工具(链接: https://quqi.avyeld.com/s/653819/18E2HKdCOAngq8Wo 查阅码: thzk)
软件准备如下图:
板子还没到,继续吐槽
4.3 串口驱动
系统镜像安装与开发板连接链接正文里竟然没有串口驱动的链接,是在评论里,评论里的链接打开后如下图:
盲猜CP210x_USB2UART_Driver.zip
、PL2302-USB-to-Serial Comm Port.zip
和PL2303-M_LogoDriver_Setup_v202_20200527.zip
是串口驱动,都要安装?
那hbupdate-芯片升级专用工具
是干嘛的?镜像工具?
解释一下:
CP210x_USB2UART_Driver:CP210x驱动名称,USB2UART:USB转UART接口,UART口:嵌入式设备上所谓的串口就是指UART口,如下图所示:
PL2302-USB-to-Serial Comm Port:PL2302:驱动名称,USB-to-Serial Comm Port:USB转串口
PL2303-M_LogoDriver_Setup_v202_20200527:PL2302可能一些用户使用之后有bug,PL2303解决一下
4.4 镜像工具
好吧,虽然名称多变,但是hbupdate-芯片升级专用工具
果然是镜像工具。电脑系统是win10,下个最新版本吧,不看最后修改日期,还以为hbupdate-芯片升级专用工具.zip
是最合适的呢,下载了hbupdate_win64_v0.8.0.zip
(可去官网下载,也可使用链接: https://quqi.avyeld.com/s/653819/vToA4iqcrs4G7mho 查阅码: naht)。
后期提示:官网镜像工具链接中的软件版本并不是最新的,感谢地平线社区中的技术支持,给提供了更新版的软件(链接: https://quqi.avyeld.com/s/653819/7SX0L51wyvtXCwTi 查阅码: wobk),下文中的镜像工具hbupdate使用基于此版本,当然我也会把哪些参数需要重点注意介绍清楚,殊途同归。
感谢归感谢,吐槽归吐槽:
虽然可能有什么原因,但最新版竟然不放在官网上!
4.5 镜像包
在AI 芯片工具链--天工开物全量开发包V1.5中有disk_X3SDB_0807_version_1.img
镜像,如下图
这个0807应该指的是2021年08月07号发布的吧,还好有修改日期一个月前,疯狂吐槽
在下载专区的SystemImage
文件夹下有镜像,如下图:
这命名...,可能需要对地平线文化有比较深的了解,以及只用地平线这儿的文件下载中心才能理解吧。
前两个文件中的
0922
应该指的是发布日期吧,修改日期一年前,那应该就是2020年09月22号的了,要是其他开发者转存重新分享,没有了这个地方的修改日期作为指导信号,版本直接乱套了吧!X3、xj3表示地平线芯片类型,上文有介绍,上面是X3,下面是xj3?
个人理解:应该是上面仅适用于X3的板子,下面X3和J3的板子都适用吧。上面6个都有Linux,应该表示系统是Linux的,下面两个怎么就没了呢?应该不是自己整了一套新系统吧?
个人理解:觉得名字太长没必要?最后两个文件名中
emmc
和secure_ut_emmc
又有什么深意呢?
个人理解:emmc等效于手机内存(运存)。文件中的
1G
和2G
又是什么意思呢?
应该就是板子emmc规格喽,emmc和1GB&2GB不连在一起,中间加了个日期感觉不太好,日期放最后也行啊。上面6个最后的
wb
是什么意思呢?最后两个怎么又没了呢?系统版本也不多,加个
readme.md
介绍一下不过分吧!
5 镜像安装
5.1 安装驱动和必要软件
- [win10电脑端]安装串口驱动
按道理说,安装CP210x_USB2UART_Driver
即可,我把PL2302-USB-to-Serial Comm Port
也安装了。
检查驱动是否安装成功:
把串口模块(那个USB连着杜邦线的东东)插入电脑USB插口,打开设备管理器,若出现下图中的端口提示,则表示成功;
没有出现下图提示,也不一定是驱动的问题,有可能是电脑USB接口坏了(我的就是,哭了),换个USB接口试试看。实在不行,换台电脑试试(本人,菜鸡建议...)
- [win10电脑端]安装mobaxterm软件
我在文中提供的是便携版,双击直接运行即可。
5.2 连接硬件
终于拿到板子了,开心!
5.2.1 组装开发板
将核心板斜45°角插入底板,压下去即可,很容易的。
5.2.2 USB转UART--与杜邦线连接
GND(开发板)<->GND(USB转串口),TX(开发板)<->RX(USB转串口),RX(开发板)<->TX(USB转串口)
Tip:先插(开发板),对照GND插(USB转串口)
5.2.3 连接网线
一端插在开发板上,一端插在电脑上
5.3 配置网口
[win10电脑端]配置网口(配置电脑IP地址)教程(192.168.1.88)
配置界面如下图:
注意要点:配置过程中,如果电脑连了无线网,一定注意双击以太网配置,否则在后期镜像烧录过程中会出现网络问题,错误提示:The network of the board is blocked!
(同学说,出现这个问题的人挺尴尬的)
5.4 hbupdate配置镜像
5.4.1 镜像工具参数选择
打开镜像工具(hbupdate,又称地平线升级工具、系统安装软件)
5.4.2 操作过程
- 点击
开始升级
,此时会 弹窗提示 要求断电,拔掉开发板电源后,点击ok - 弹窗提示,要求上电,插上电源后,点击ok
- 等待升级进度达到100%即可,不出错的话几分钟,升级完成界面可见上图。
5.5 出错记录
我要是完全顺利,就没这节了哈哈哈
5.5.1 Error:芯片1升级失败
根据提示,是板子上的网络问题。
解决:网卡IP配置的问题,配置成无线网卡了,应该配置以太网的IP。在5.3节有具体介绍。
如果确实是这样改的,但依旧是这个错误,换台电脑就好了。
5.5.2 升级失败后卡了怎么办
不要慌,直接把软件关掉,重新打开就好,板子挺耐捯饬的。
6 开发板连接
板子镜像安装完成后,就该想着怎么连接开发板了。有两种方式可以连接开发板,下面分别介绍。
6.1 串口连接
串口那边正常连接的情况下,电脑端打开mobaxterm,按照下图进行操作:
出现什么输出都没有,如下图:
这是因为板子关机了,板子断电重新上电即可,如下图所示:
停在这儿了,不用在等了,按回车键
就好。
登录root账户,查看ip,如下图:
6.2 网口连接
6.2.1 修改电脑端的IP地址情况下
这一步见5.3节即可,把自己电脑网口改成和开发板默认IP一致即可(用5.3节图中参数的配置即可),MobaXterm中的参数配置如下图:Remote host:后为开发板默认ip。
网线要连的哦
6.2.2 修改开发板的IP地址情况下
此时要先查看自己电脑的以太网IP,打开cmd,输入ipconfig,找到自己以太网ip地址。
在串口连接(见6.2.1节)的情况下,配置开发板ip地址。命令为:
# 子网掩码和默认网关与windows以太网那里保持一致,需要改的ip地址只有最后一个数字
hrut_ipfull s 需要改成的ip地址 子网掩码 默认网关
# 举例
hrut_ipfull s 10.64.32.90 255.255.255.0 10.64.32.1
网线要连的哦
不知道为啥,我开发板端IP总是修改不成功,哭了。
解释:关机重启才生效。reboot
即可
关机指令:poweroff
7 开发板端补充文件
工具链的部分补充工具未包含在系统镜像中,这些工具已经放置在open_explorer开发包中, 进入到 ddk/package/board
执行install.sh
脚本即可。我在windows中使用git bash
执行命令如下:
bash install.sh 192.168.1.10 # 最后是开发板ip,可以先ping一下试试
8 感谢链接
https://blog.csdn.net/weixin_38233274/article/details/81105114
[地平线开发板集合贴](https://developer.horizon.ai/forum/id=61080adfe70b787109b92db4)
[X3开发板镜像烧录和AI Express运行 讲解视频](https://pan.horizon.ai/index.php/s/LZ5DFsXW9XHgqHR)