
人工智能AI合集:嵌入式LinuxAI开发套件OrangePI AIPRO初体验
随着人工智能技术的飞速发展,AI已经不再是遥不可及的高科技概念,而是逐渐融入到我们的日常生活中。从智能手机的语音助手到家庭中的智能音箱,再到工业自动化和医疗诊断,AI的应用无处不在。然而,要想真正掌握并应用这些技术,不仅需要理论知识,更需要实践操作。这正是嵌入式AI学习的核心所在。嵌入式系统,作为现代电子设备的核心,其与AI技术的结合,为智能设备的开发提供了无限可能。从简单的自动化任务到复杂的图像
目录
随着人工智能技术的飞速发展,AI已经不再是遥不可及的高科技概念,而是逐渐融入到我们的日常生活中。从智能手机的语音助手到家庭中的智能音箱,再到工业自动化和医疗诊断,AI的应用无处不在。然而,要想真正掌握并应用这些技术,不仅需要理论知识,更需要实践操作。这正是嵌入式AI学习的核心所在。
嵌入式系统,作为现代电子设备的核心,其与AI技术的结合,为智能设备的开发提供了无限可能
。从简单的自动化任务到复杂的图像和语音识别,嵌入式AI开发板成为了学习这些技术的理想平台。它们不仅易于操作,而且功能强大,能够满足从初学者到专业人士的各种需求。
对于大多数人来说,日常生活中的无时无刻都能接触的到AI应用。比如平时最常见的停车场的车牌识别
、上班打卡机的人脸识别
、能自由对话的语音助手
等等。它们都有一个共同的特点,就是体积小巧且功能强大。这些应用的落地都离不开嵌入式AI。
随着AI技术的不断发展和普及,我们的生活将变得更加智能、便捷和高效。未来,嵌入式AI将继续深入到更多领域,为我们的生活带来更多惊喜和便利。无论是智能家居
、智能交通
、智能医疗
还是智能制造
,嵌入式AI都将扮演着重要的角色,推动着科技的不断进步和社会的发展。
因此,学习和掌握AI技术变得愈发重要。只有不断学习、实践和创新
,我们才能更好地应对未来的挑战和机遇。
本系列博客所述资料均来自互联网资料
,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的AI事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法
。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。
文章目录
前言
本人也在近期意外获得一块高性能的AI开发板OrangePI AIPRO
。计划以此为媒介,学习一下AI相关的技术栈。本篇文章主要介绍一下这款开发平台,并不会涉及到多么高深的技术,主要是我也不会,本人还没学过AI呢。本质上也是一个门外汉,所以各位也不要有太大的期望。
开箱
开发套件包含以下物品:充电器一个,双头type-c数据线一根,主板一块。
主板下方携带一块大大的散热模块,想必还散热不错。主板上方是一个无线模块支持WIFI5和蓝牙4.2,蓝牙和WiFi天线通过天线座连接到一个天线贴纸上,不过就我本人而言,我不是很喜欢这种天线,不仅很容易丢还有点碍事,板载天线我认为会更好一些。
开发套件提供的电源,最大支持20V*3.25A的输出,峰值功率可达65W。
开发套件携带一张32GB的闪迪高速存储卡,这一点商家考虑的很细心,省的我还去买。不过这个SD卡座有点不太友好,拿到的那一刻下意识的按了一下,差点给按坏。为啥不做成,按一下进去在按一下出来的呢。
开发板简介
Orange Pi AI Pro 是一款由深圳市迅龙软件有限公司联合华为推出的高性能 AI 开发板。这款开发板搭载了昇腾 AI 处理器,具备强大的计算能力,特别适合用于教育、机器人、无人机等场景。硬件规格如下:
- 昇腾 AI 处理器:集成了 4 核 64 位 Arm 处理器和 AI 处理器。
- AI 算力:
- 半精度(FP16):4 TFLOPS
- 整数精度(INT8):8 TOPS
- 内存:提供 8GB 和 16GB 两种版本,类型为 LPDDR4X。
- 存储:
- 板载 32MB SPI Flash。
- 支持 Micro SD 卡插槽。
- 支持 eMMC 插座,可外接 eMMC 模块。
- 支持 M.2 M-Key 接口,可接 2280 规格的 NVMe SSD 或 SATA SSD。
- 以太网:支持 10/100/1000Mbps,板载 PHY 芯片为 RTL8211F。
- Wi-Fi+蓝牙:支持 2.4G 和 5G 双频 Wi-Fi,蓝牙版本为 BT4.2,模组为欧智通 6221BUUC。
- USB:2 个 USB3.0 Host 接口,1 个 Type-C 接口(仅支持 USB3.0)。
- 摄像头:2 个 MIPI CSI 2 Lane 接口。
- 显示:2 个 HDMI 接口,1 个 MIPI DSI 接口。
- 音频:1 个 3.5mm 耳机孔,支持音频输入输出,2 个 HDMI 音频输出。
- 40 pin 扩展口:用于扩展 UART、I2C、SPI、PWM 和 GPIO 等接口。
- 按键:1 个复位键,1 个关机键,1 个升级按键。
- 拨码开关:2 个拨码开关,用于控制 SD 卡、eMMC 和 SSD 启动选项。
- 电源:支持 Type-C 供电,适配器规格为 20V PD-65W。
- LED 灯:1 个电源指示灯和 1 个软件可控指示灯。
- 风扇接口:4pin,0.8mm 间距,支持 PWM 控制。
- 电池接口:2pin,2.54mm 间距,支持 3 串电池,支持快充。
- 调试串口:Micro USB 接口的调试串口。
板载接口还是很丰富的,可以说是应有尽有。具体有哪些我也不抄了,自己看下图吧。
使用体验
开机
开发板支持从 TF 卡、eMMC 和 SSD(支持 NVMe SSD 和 SATA SSD)启动。 具体从哪个设备启动是由开发板背面的两个拨码(BOOT1 和 BOOT2)开关来控制的。
BOOT1 和 BOOT2 两个拨码开关都支持左右两种设置状态,所以总共有 4 种 设置状态,开发板目前只使用了其中的三种。
- BOOT0 和 BOOT1 都拨到左侧:未使用的组合。
- BOOT0 拨到右侧,BOOT1 拨到左侧:从 SATA SSD 和 NVMe SSD 启动。
- BOOT0 拨到左侧,BOOT1 拨到右侧:从 eMMC 启动。
- BOOT0 和 BOOT1 都拨到右侧:从 TF 卡启动。
由于开发套件只包含SD卡,并未包含EMMC模块,故我们选择将BOOT0和BOOT1都拨到右侧。
接上,鼠标,键盘,HDMI,最后接入电源。风扇转一下停一下,持续几秒就没后文了,很不幸出师不利。怀疑是SD卡默认没有刷入系统,接上电脑一看。有系统哇,为啥还不行呢。
查看开机日志
开机失败,作为一个开发人员第一时间应该想到的是,查看开机日志,看日志中有没有报错。开发板上有一个uart口是用于查看设备的运行日志的。
使用数据线连接电脑。打开串口调试工具,我这边日常使用的是Electerm。这个工具比较好的地方就是不仅开源还可以跨平台多端支持,且配置文件可以云同步,换电脑也不怕配置丢失。
官方文档推荐的是Mobaterm,这个对个人是免费的,需要注意的是该工具商用还是要掏钱的,且不跨平台,且不支持云同步,我并不喜欢用。这里可以按照自己的喜好,选择不同的工具。
这里以Electerm为例,Linux系统下以115200
波特率打开串口/dev/ttyACM0
。
为什么是/dev/ttyACM0
?这里可以通过dmesg查看usb接入时的日志。日志中会提示接入了什么设备SerialNumber: 579B005206
,操作系统分配的什么端口cdc_acm 1-1:1.0: ttyACM0: USB ACM device
。
becase@7080:~$ dmesg
[541875.671971] usb 1-7: USB disconnect, device number 49
[541878.870737] usb 1-7: new full-speed USB device number 50 using xhci_hcd
[541879.020054] usb 1-7: New USB device found, idVendor=1a86, idProduct=55d3, bcdDevice= 4.45
[541879.020058] usb 1-7: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[541879.020059] usb 1-7: Product: USB Single Serial
[541879.020060] usb 1-7: SerialNumber: 579B005206
[541879.023266] cdc_acm 1-7:1.0: ttyACM0: USB ACM device
[541930.518184] usb 1-7: USB disconnect, device number 50
[541944.410993] usb 1-1: new full-speed USB device number 51 using xhci_hcd
[541944.564262] usb 1-1: New USB device found, idVendor=1a86, idProduct=55d3, bcdDevice= 4.45
[541944.564265] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[541944.564266] usb 1-1: Product: USB Single Serial
[541944.564267] usb 1-1: SerialNumber: 579B005206
[541944.567402] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
打开端口后,给开发板重新上电开机,看到有如下日志输出。日志中没有明显报错,看不懂没有什么头绪。
Pll Init ..pll[0] inited
pll[2] inited
pll[3] inited
pll[4] inited
pll[5] inited
OK.
reset src:0x00000001
lsadc dreset ok
lsadc0 init ok
adc0in0:91 adc0in1:588 adc0in2:223
adc1in2:2 adc1in3:91
adc boardId:10251
Load main hboot1_a
Load main hilink25
hboot1a hash dc44e2b7.
Boot Entry.
Load main hboot1_b
死马当做活马医,重新刷一遍系统试一下。
下载镜像
点我跳转到官方镜像下载地址,可以看到有Ubuntu和OpenEuler。由于该开发板使用的华为的昇腾 AI 处理器,自然也是支持华为的欧拉系统的。虽然你支持不过我不会用,所以还是选择ubuntu
镜像。
下载完成需要解压才可以被烧录程序识别,解压出来是以.img
结尾。
烧录镜像
烧录程序选择BalenaEtcher
,这 是一款流行的开源软件,用于烧录(写入)镜像文件到存储设备,如 SD卡、USB驱动器或eMMC等。市面上绝大部分的通过SD卡启动的开发板,都是使用该工具烧录的。
启动界面如下,第一个选项选择,要烧录的镜像。第二个选项选择,要烧录的存储介质。最后点击那个大大的Flash按钮。
稍等片刻,等待烧录完成即可。
结论
一顿操作后,发现还是不行。故怀疑是供电有问题,更换自己用的手机充电器。发现正常启动。
NOTICE: Int ID:174, syscnt:0x2c305f19
NOTICE: intNum 174, nodeStatus1 0x40 !
NOTICE: [RasCbbCommonHandler]:[71L] moduleBase c1260000
NOTICE: [RasCbbCommonHandler]:[81] UE
NOTICE: [Module] MATA0
NOTICE: [FillHisiModuleErrorInfo]:[275L] moduleID = 0x14
NOTICE: [Module] MATA0
NOTICE: SubSysID:0xff, DeviceID:0x0, SubSysNum:0x0
NOTICE: RECOVERABLE!
NOTICE: HestNotifiedOS
NOTICE: [RasCbbCommonHandler]:[89] Handler end
NOTICE: base = 0xc1260000
NOTICE: ERR_FRL = 0x142aa2
NOTICE: ERR_FRH = 0x0
NOTICE: ERR_CTRLL = 0x515
NOTICE: ERR_CTRLH = 0x0
NOTICE: ERR_STATUSL = 0xfc30050e
NOTICE: ERR_STATUSH = 0x0
NOTICE: ERR_ADDRL = 0x10080010
NOTICE: ERR_ADDRH = 0xe0000001
NOTICE: ERR_MISC0L = 0x0
NOTICE: ERR_MISC0H = 0x0
NOTICE: ERR_MISC1L = 0xe798005
NOTICE: ERR_MISC1H = 0x800122
NOTICE: el3_int exit!
cpu 0 entering scheduler
>>>>>>>>>>>>LiteOS start succeed!<<<<<<<<<<<
Ubuntu 22.04.3 LTS orangepiaipro ttyAMA0
orangepiaipro login:
开机后桌面如下,长呼一口气。之前真是吓我一跳,差点以为开发板是坏的。
随后用我的数据线以及我的充电器,和开发套件自带的数据线以及充电器,两两组合做交叉验证。发现只有我自己的充电器和我自己的数据线能给开发板使用。开发套件带的充电器和数据线全是坏的或者说供电不稳定的,这也是绝了白折腾我半个小时。
远程连接
查询IP
连接网线,在路由器的后台查询到设备orangepiaipro
的IP地址是192.168.101.8
。
SSH连接
SSH(Secure Shell)是一种网络协议,用于加密方式远程登录到计算机系统。它主要用于在网络服务中提供安全、可靠的远程登录和其他网络服务。
我这边烧录的Ubuntu镜像,默认情况下是开启了SSH服务的。可以选择通过SSH连接开发板进行操作。
通过SSH连接到设备端,用户名为HwHiAiUser
,密码为Mind@123
。查询系统版本为Ubuntu 22.04.3 LTS
。
becase@7080:~$ ssh HwHiAiUser@192.168.101.8
The authenticity of host '192.168.101.8 (192.168.101.8)' can't be established.
ECDSA key fingerprint is SHA256:bByvKK4hbDpvuc0bet7lQQabfHEx71fLip5TeJR6oHw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.101.8' (ECDSA) to the list of known hosts.
HwHiAiUser@192.168.101.8's password:
___ ____ _
/ _ \ _ __ __ _ _ __ __ _ ___ | _ \ (_)
| | | || '__|/ _` || '_ \ / _` | / _ \ | |_) || |
| |_| || | | (_| || | | || (_| || __/ | __/ | |
\___/ |_| \__,_||_| |_| \__, | \___| |_| |_|
|___/
Welcome to Orange Pi Ai Pro
This system is based on Ubuntu 22.04.3 LTS (GNU/Linux 5.10.0+ aarch64)
This system is only applicable to individual developers and cannot be used for commercial purposes.
By using this system, you have agreed to the Huawei Software License Agreement.
Please refer to the agreement for details on https://www.hiascend.com/software/protocol
(base) HwHiAiUser@orangepiaipro:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
(base) HwHiAiUser@orangepiaipro:~$
VNC连接
VNC(Virtual Network Computing)是一种远程桌面协议,它允许用户通过网络连接到远程计算机并以图形化界面进行操作。在Ubuntu操作系统上,我们可以通过下面的步骤安装和配置VNC服务器。
首先需要在Ubuntu上安装VNC服务器。在SSH终端执行该下面的命令
(base) HwHiAiUser@orangepiaipro:~$ sudo apt update
(base) HwHiAiUser@orangepiaipro:~$ sudo apt install tightvncserver
安装完成后,还需要配置VNC服务器以设置访问密码和其他选项。首次运行该命令时,它会提示设置一个密码(建议输入Mind@123
),并询问是否还要设置一个view-only密码(可用可不用)。密码用于连接到VNC服务器进行操作,view-only密码用于只能查看而不能操作的连接。
(base) HwHiAiUser@orangepiaipro:~$ tightvncserver
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
New 'X' desktop is orangepiaipro:2
Creating default startup script /home/HwHiAiUser/.vnc/xstartup
Starting applications specified in /home/HwHiAiUser/.vnc/xstartup
Log file is /home/HwHiAiUser/.vnc/orangepiaipro:2.log
配置完成后,运行下面的命令启动VNC服务器。这里需要注意的是VNC的默认端口是5900,这里传入1的话,那么连接接开发板的VNC端口要填写5901。
(base) HwHiAiUser@orangepiaipro:~$ tightvncserver :1
A VNC server is already running as :1
在远程管理器上填写VNC连接的服务器IP192.168.101.8
和端口5091
。
输入前面VNC初始化时填写的密码Mind@123
,即可远程连接到开发板的桌面。
性能测试
使用UnixBench完成性能基准测试。 UnixBench 是一套广泛使用的基准测试工具,主要用于评估 Unix-like 系统(包括 Linux 发行版、macOS 等)的性能。它通过一系列测试来衡量系统的不同方面,如 CPU 性能、内存速度、磁盘 I/O 性能等
使用git clone https://github.com/kdlucas/byte-unixbench.git
下载x性能测试工具。
(base) HwHiAiUser@orangepiaipro:~/Downloads$ git clone https://github.com/kdlucas/byte-unixbench.git
Cloning into 'byte-unixbench'...
remote: Enumerating objects: 258, done.
remote: Counting objects: 100% (97/97), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 258 (delta 76), reused 59 (delta 59), pack-reused 161
Receiving objects: 100% (258/258), 209.78 KiB | 1.06 MiB/s, done.
Resolving deltas: 100% (146/146), done.
进入到UnixBench路径下,使用make编译工具源码。
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ make
make distr
make[1]: Entering directory '/home/HwHiAiUser/Downloads/byte-unixbench/UnixBench'
Checking distribution of files
./pgms exists
./src exists
./testdir exists
./tmp exists
./results exists
make[1]: Leaving directory '/home/HwHiAiUser/Downloads/byte-unixbench/UnixBench'
make programs
make[1]: Entering directory '/home/HwHiAiUser/Downloads/byte-unixbench/UnixBench'
gcc -o pgms/arithoh -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Darithoh src/arith.c
gcc -o pgms/register -Wall -pedantic -O3 -ffast-math -march=native -mtune=native -I ./src -DTIME -Ddatum='register int' src/arith.c
xxxxxxxxxxx
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ ls
Makefile README Run USAGE WRITING_TESTS pgms results src testdir tmp
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ ./Run
编译完成会生成一个Run文件,控制台运行Run二进制文件。等待测试结果,时间很长很长很长,估摸着跑了有半个多小时。
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ ls
Makefile README Run USAGE WRITING_TESTS pgms results src testdir tmp
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ ./Run
# # # # # # # ##### ###### # # #### # #
# # ## # # # # # # # ## # # # # #
# # # # # # ## ##### ##### # # # # ######
# # # # # # ## # # # # # # # # #
# # # ## # # # # # # # ## # # # #
#### # # # # # ##### ###### # # #### # #
Version 5.1.3 Based on the Byte Magazine Unix Benchmark
Multi-CPU version Version 5 revisions by Ian Smith,
Sunnyvale, CA, USA
January 13, 2011 johantheghost at yahoo period com
------------------------------------------------------------------------------
Use directories for:
* File I/O tests (named fs***) = /home/HwHiAiUser/Downloads/byte-unixbench/UnixBench/tmp
* Results = /home/HwHiAiUser/Downloads/byte-unixbench/UnixBench/results
------------------------------------------------------------------------------
....................
1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
1 x Execl Throughput 1 2 3
1 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
1 x File Copy 256 bufsize 500 maxblocks 1 2 3
1 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
1 x Process Creation 1 2 3
1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
1 x Shell Scripts (1 concurrent) 1 2 3
1 x Shell Scripts (8 concurrent) 1 2 3
4 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
4 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
4 x Execl Throughput 1 2 3
4 x File Copy 1024 bufsize 2000 maxblocks 1 2 3
4 x File Copy 256 bufsize 500 maxblocks 1 2 3
4 x File Copy 4096 bufsize 8000 maxblocks 1 2 3
4 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
4 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
4 x Process Creation 1 2 3
4 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
4 x Shell Scripts (1 concurrent) 1 2 3
4 x Shell Scripts (8 concurrent) 1 2 3
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: orangepiaipro: GNU/Linux
OS: GNU/Linux -- 5.10.0+ -- #1 SMP Mon Feb 26 15:29:07 CST 2024
Machine: aarch64 (aarch64)
Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
CPU 0: (96.0 bogomips)
CPU 1: (96.0 bogomips)
CPU 2: (96.0 bogomips)
CPU 3: (96.0 bogomips)
10:35:14 up 1:01, 2 users, load average: 17.32, 17.39, 17.02; runlevel Jul
------------------------------------------------------------------------
Benchmark Run: Fri Jul 19 2024 10:35:14 - 11:03:23
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 18893177.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 4354.3 MWIPS (9.8 s, 7 samples)
Execl Throughput 1179.8 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 532368.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 187810.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1192465.7 KBps (30.0 s, 2 samples)
Pipe Throughput 871454.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 121185.7 lps (10.0 s, 7 samples)
Process Creation 5336.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4036.3 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1121.3 lpm (60.0 s, 2 samples)
System Call Overhead 846033.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 18893177.2 1619.0
Double-Precision Whetstone 55.0 4354.3 791.7
Execl Throughput 43.0 1179.8 274.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 532368.4 1344.4
File Copy 256 bufsize 500 maxblocks 1655.0 187810.3 1134.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 1192465.7 2056.0
Pipe Throughput 12440.0 871454.2 700.5
Pipe-based Context Switching 4000.0 121185.7 303.0
Process Creation 126.0 5336.8 423.6
Shell Scripts (1 concurrent) 42.4 4036.3 951.9
Shell Scripts (8 concurrent) 6.0 1121.3 1868.8
System Call Overhead 15000.0 846033.2 564.0
========
System Benchmarks Index Score 825.1
------------------------------------------------------------------------
Benchmark Run: Fri Jul 19 2024 11:03:23 - 11:31:41
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 56273640.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 14856.9 MWIPS (7.7 s, 7 samples)
Execl Throughput 3335.2 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1402731.3 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 524689.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 3133562.8 KBps (30.0 s, 2 samples)
Pipe Throughput 2592391.6 lps (10.0 s, 7 samples)
Pipe-based Context Switching 308950.3 lps (10.0 s, 7 samples)
Process Creation 12302.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 8213.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1139.0 lpm (60.1 s, 2 samples)
System Call Overhead 2441933.6 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 56273640.9 4822.1
Double-Precision Whetstone 55.0 14856.9 2701.3
Execl Throughput 43.0 3335.2 775.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 1402731.3 3542.3
File Copy 256 bufsize 500 maxblocks 1655.0 524689.4 3170.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 3133562.8 5402.7
Pipe Throughput 12440.0 2592391.6 2083.9
Pipe-based Context Switching 4000.0 308950.3 772.4
Process Creation 126.0 12302.2 976.4
Shell Scripts (1 concurrent) 42.4 8213.7 1937.2
Shell Scripts (8 concurrent) 6.0 1139.0 1898.4
System Call Overhead 15000.0 2441933.6 1628.0
========
System Benchmarks Index Score 2057.9
最后跑分结果单核825.1分,多核2057.9分,在嵌入式平台中性能是很强的了。要知道龙芯3A4000是桌面级别的CPU单核也只有876分,多核也不过2741分。
开发环境
安装docker
我这边喜欢用docker来部署各类开发环境,避免安装乱七八糟的软件和编译器影响到系统本身,把开发环境和系统环境隔离开。
(base) HwHiAiUser@orangepiaipro:~$ sudo apt install docker.io
把用户添加到docker组,方便操作。
(base) HwHiAiUser@orangepiaipro:~$ sudo usermod -aG docker $USER
由于国内dockerhub镜像源被禁,现在无法直接访问,且国内大部分的代理镜像源也都被关闭。这里先不说小猫这些东西。选择合法的途径,直接采用国内的atomhub镜像源测试即可。
简单介绍一下AtomHub ,它由开放原子开源基金会牵头,联合多家行业伙伴发起,遵循OCI(Open Container Initiative,以下简称“OCI”)容器镜像标准,旨在为开发者提供开放中立、安全可信、高效便捷的新一代开源容器镜像中心。
常用的镜像都是有的,一些个人开发者上传的定制镜像,可能就有点悬了。
运行下面的命令安装一个hello-world镜像,测试是否能正常工作。
(base) HwHiAiUser@orangepiaipro:~$ docker run hub.atomgit.com/library/hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
部署python3的开发环境
进入到ubuntu环境使用apt安装python3,默认安装的版本是3.10.12
。
(base) HwHiAiUser@orangepiaipro:~$ docker run -it --name my_python hub.atomgit.com/library/ubuntu
root@b19f19390fa1:/# apt update
xxxxxxxx
root@b19f19390fa1:/# apt install python3
xxxxxxxx
root@b19f19390fa1:/# python3 --version
Python 3.10.12
root@b19f19390fa1:/# python3
Python 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello_world")
hello_world
>>> print(1+1)
2
退出容器回到本机一看,发现python3的版本还是3.9.2。说明在docker容器中安装的软件和外界没有任何关系,不会影响到外界的依赖关系。容器是一个独立的开发环境。
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ python3 --version
Python 3.9.2
。
总结
从收到开发板到开机配置,再到跑相关的工程,总体来说十分坎坷,尤其是这个充电器供电有问题,无法开机,耽误我几个小时时间去排查。
天线的设计不是很喜欢,容易损坏和丢失,如果是板载天线就更好了。
建议初学者可以搭配上外壳,真的很容易摔坏,我就摔了一下,sd卡槽的天灵盖就被掀起来了,SD卡也被直接摔断,在我手上还没活过十分钟。
当然也有好的一面,开发板整体接口丰富,性能强劲,资源较多,文档全是中文对中文开发者还是比较友好的。
关于无法开机的问题
闲来无事用了一个功率计看了一下充电功率,得出以下结论,品质有待提高哇。
- 使用我自己的手机充电器+我自己的手机充电线。不通过任何中间手段,能直接以5v2a约为10w的功率开机。
- 使用我自己的手机充电器+开发套件带的原装充电线。只是更换一个数据线,PD诱骗到5v电流上不去无法开机。将电压修改到9v,这时候电流维持在1a左右可以正常开机。推测原装充电线品质太差,无法以5v2a方式稳定输出2a以上的电流,达不到10w供电功率。
- 使用开发套件原装的充电器+原装的充电线。更换头和线,PD诱骗到5v/9v电流都上不去无法开机。改为12v就可以开机,此时电流只有几百毫安。推测充电器也是劣质的,峰值电流太低,5v2a和9v1a都做不到。
- 原装线和原装头,不通过PD诱骗的手段,无法正常使用。供电功率协商都会出问题,推测开发板的电源管理芯片也不太行,在劣质的充电器和充电线上连协商一个正常的供电功率都做不到。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)