人工智能AI合集:嵌入式LinuxAI开发套件OrangePI AIPRO初体验

目录

🍅点击这里查看所有博文

  随着人工智能技术的飞速发展,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诱骗的手段,无法正常使用。供电功率协商都会出问题,推测开发板的电源管理芯片也不太行,在劣质的充电器和充电线上连协商一个正常的供电功率都做不到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇雪长安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值