一、MQ-Quad 简介
前段时间刷某宝,偶然看到了一个很精致的板子,是芒果派的MQ-Quad开发板,然后一看CPU,是全志的H616 SOC(双核Cortext-A53),觉得实在太棒了,然后就迫不及待入手了,放上官网(mangopi.org/mqquad)的图片。
这款板子共有两个色,一个是黑色的,另一个是少见的有点骚气的粉红色的,我觉得粉红色的看起来有点怪怪的,所有最后选择了常见的黑色板子(主要是因为更便宜......)
由于这篇文章写得比较晚,所以没有开箱的图片,我就简单拍了一张我这边已经使用了一段时间之后的照片,从图中可以看到,我自己加了一个金黄色的散热片(为了省钱,没有买原配的散热片), 然后自己把排针焊接上。
由于这个板子是不带EMMC的所以需要再买一个TF卡作为硬盘,有了硬盘之后,就可以烧写系统了。
二、下载镜像及工具
我们打开官网(mangopi.org.cn/mqquad),就可以看到系统镜像的下载链接了,如下图所示(红框中)
我们可以看到有三种镜像分别是嵌入式Tina-Linux、Debian以及Android 10 TV,由于我本人比较喜欢Debian系统,所以这里以Debian为例演示一下系统烧写的过程。
镜像下载完成之后,开始下载工具,在上图的工具一栏我们看到有不同系统的烧写工具,这里我们用Win32DiskImager为例,就下载这个工具吧。
三、烧写系统
下载系统镜像到本地电脑并安装好Win32DiskImager之后,然后将TF链接到电脑,就可以开始烧写系统了,打开烧写工具,选择镜像文件,选择TF卡对应的设备,然后点击“写入”按钮,即可开始烧写。
四、上电开机
烧写完系统后,我们就可以连接电源开机了,为了方便查看系统的启动日志,我们连接上串口板,如图。
连接好了,插上电源线,就可以看到终端打印出系统启动日志
U-Boot SPL 2021.10-orangepi (Oct 05 2022 - 14:25:44 +0800)
pmic id is 0x4b
DRAM: 1024 MiB
Trying to boot from MMC1
NOTICE: BL31: v2.7(debug):ea7aee20
NOTICE: BL31: Built : 04:47:26, Oct 3 2022
NOTICE: BL31: Detected Allwinner H616 SoC (1823)
NOTICE: BL31: Found U-Boot DTB at 0x4a082610, model: OrangePi Zero2
INFO: ARM GICv2 driver initialized
INFO: Configuring SPC Controller
INFO: PMIC: Probing AXP305 on RSB
ERROR: RSB: set run-time address: 0x10003
INFO: Could not init RSB: -65539
INFO: BL31: Platform setup done
INFO: BL31: Initializing runtime services
INFO: BL31: cortex_a53: CPU workaround for 855873 was applied
INFO: BL31: cortex_a53: CPU workaround for 1530924 was applied
INFO: PSCI: Suspend is unavailable
INFO: BL31: Preparing for EL3 exit to normal world
INFO: Entry point address = 0x4a000000
INFO: SPSR = 0x3c9
INFO: Changed devicetree.
U-Boot 2021.10-orangepi (Oct 05 2022 - 14:25:44 +0800) Allwinner Technology
CPU: Allwinner H616 (SUN50I)
Model: OrangePi Zero2
I2C: ready
DRAM: 1 GiB
MMC: mmc@4020000: 0
Loading Environment from FAT... Unable to use mmc 0:1... In: serial@5000000
Out: serial@5000000
Err: serial@5000000
Net: phy interface7
Could not get PHY for ethernet@5020000: addr 1
No ethernet found.
Autoboot in 1 seconds, press <Space> to stop
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
3566 bytes read in 3 ms (1.1 MiB/s)
## Executing script at 4fc00000
U-boot loaded from SD
Boot script loaded from mmc
207 bytes read in 2 ms (100.6 KiB/s)
37578 bytes read in 8 ms (4.5 MiB/s)
4203 bytes read in 6 ms (683.6 KiB/s)
Applying kernel provided DT fixup script (sun50i-h616-fixup.scr)
## Executing script at 45000000
10735613 bytes read in 891 ms (11.5 MiB/s)
22261768 bytes read in 1844 ms (11.5 MiB/s)
Moving Image from 0x40080000 to 0x40200000, end=417a0000
## Loading init Ramdisk from Legacy Image at 4ff00000 ...
Image Name: uInitrd
Image Type: AArch64 Linux RAMDisk Image (gzip compressed)
Data Size: 10735549 Bytes = 10.2 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 4fa00000
Booting using the fdt blob at 0x4fa00000
Loading Ramdisk to 495c3000, end 49ffffbd ... OK
Loading Device Tree to 0000000049551000, end 00000000495c2fff ... OK
Starting kernel ...
Loading, please wait...
Starting version 247.3-7+deb11u1
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.36.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk1p1] fsck.ext4 -a -C0 /dev/mmcblk1p1
/dev/mmcblk1p1: recovering journal
/dev/mmcblk1p1: clean, 208654/3244880 files, 1663915/7670784 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.
Welcome to Orange Pi 3.0.8 Bullseye!
[ OK ] Created slice system-getty.slice.
[ OK ] Created slice system-modprobe.slice.
[ OK ] Created slice system-serial\x2dgetty.slice.
[ OK ] Created slice User and Session Slice.
[ OK ] Started Forward Password R…uests to Wall Directory Watch.
[ OK ] Set up automount Arbitrary…s File System Automount Point.
[ OK ] Reached target Local Encrypted Volumes.
[ OK ] Reached target Remote File Systems.
[ OK ] Reached target Slices.
[ OK ] Reached target Swap.
[ OK ] Reached target System Time Set.
[ OK ] Listening on Syslog Socket.
[ OK ] Listening on fsck to fsckd communication Socket.
[ OK ] Listening on initctl Compatibility Named Pipe.
[ OK ] Listening on Journal Audit Socket.
[ OK ] Listening on Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket.
[ OK ] Listening on udev Control Socket.
[ OK ] Listening on udev Kernel Socket.
Mounting Huge Pages File System...
Mounting POSIX Message Queue File System...
Mounting Kernel Debug File System...
Starting Restore / save the current clock...
Starting Set the console keyboard layout...
Starting Create list of st…odes for the current kernel...
Starting Load Kernel Module configfs...
Starting Load Kernel Module drm...
Starting Load Kernel Module fuse...
[ OK ] Started Nameserver information manager.
[ OK ] Reached target Network (Pre).
Starting Load Kernel Modules...
Starting Remount Root and Kernel File Systems...
Starting Coldplug All udev Devices...
[ OK ] Mounted Huge Pages File System.
[ OK ] Mounted POSIX Message Queue File System.
[ OK ] Mounted Kernel Debug File System.
[ OK ] Finished Restore / save the current clock.
[ OK ] Finished Create list of st… nodes for the current kernel.
[ OK ] Finished Load Kernel Module configfs.
[ OK ] Finished Load Kernel Module drm.
[ OK ] Finished Load Kernel Module fuse.
[ OK ] Finished Remount Root and Kernel File Systems.
Mounting FUSE Control File System...
Mounting Kernel Configuration File System...
Starting Load/Save Random Seed...
Starting Create System Users...
[ OK ] Finished Set the console keyboard layout.
[ OK ] Mounted FUSE Control File System.
[ OK ] Mounted Kernel Configuration File System.
[ OK ] Finished Create System Users.
Starting Create Static Device Nodes in /dev...
[ OK ] Finished Load Kernel Modules.
[ OK ] Finished Create Static Device Nodes in /dev.
[ OK ] Reached target Local File Systems (Pre).
Mounting /tmp...
Starting Apply Kernel Variables...
Starting Rule-based Manage…for Device Events and Files...
[ OK ] Mounted /tmp.
[ OK ] Finished Apply Kernel Variables.
[ OK ] Finished Coldplug All udev Devices.
[ OK ] Reached target Local File Systems.
Starting Set console font and keymap...
Starting Helper to synchronize boot up for ifupdown...
Starting Orange Pi ZRAM config...
Starting Wait for udev To …plete Device Initialization...
[ OK ] Finished Set console font and keymap.
[ OK ] Finished Helper to synchronize boot up for ifupdown.
Starting Raise network interfaces...
[ OK ] Started Rule-based Manager for Device Events and Files.
[ OK ] Listening on Load/Save RF …itch Status /dev/rfkill Watch.
Starting Load/Save RF Kill Switch Status...
[ OK ] Started Load/Save RF Kill Switch Status.
[ OK ] Found device /dev/ttyS0.
[ OK ] Finished Raise network interfaces.
[ OK ] Reached target Hardware activated USB gadget.
[ OK ] Finished Load/Save Random Seed.
[ OK ] Finished Orange Pi ZRAM config.
Starting Orange Pi memory supported logging...
[ OK ] Finished Wait for udev To Complete Device Initialization.
Starting Braille Device Support...
[ OK ] Started Braille Device Support.
[ OK ] Finished Orange Pi memory supported logging.
Starting Journal Service...
[ OK ] Started Journal Service.
Starting Flush Journal to Persistent Storage...
[ OK ] Finished Flush Journal to Persistent Storage.
Starting Create Volatile Files and Directories...
[ OK ] Finished Create Volatile Files and Directories.
[ OK ] Started Entropy Daemon based on the HAVEGE algorithm.
Starting Update UTMP about System Boot/Shutdown...
[ OK ] Finished Update UTMP about System Boot/Shutdown.
[ OK ] Reached target System Initialization.
[ OK ] Started CUPS Scheduler.
[ OK ] Started Daily Cleanup of Temporary Directories.
[ OK ] Reached target Paths.
[ OK ] Listening on CUPS Scheduler.
[ OK ] Listening on D-Bus System Message Bus Socket.
[ OK ] Reached target Sockets.
Starting Orange Pi hardware monitoring...
Starting Orange Pi hardware optimization...
[ OK ] Finished Orange Pi hardware monitoring.
[ OK ] Finished Orange Pi hardware optimization.
[ OK ] Reached target Basic System.
Starting Save/Restore Sound Card State...
Starting Bluetooth management mechanism...
[ OK ] Started Regular background program processing daemon.
[ OK ] Started D-Bus System Message Bus.
Starting Network Manager...
Starting Remove Stale Onli…t4 Metadata Check Snapshots...
Starting LSB: Load kernel …d to enable cpufreq scaling...
Starting System Logging Service...
Starting Self Monitoring a…g Technology (SMART) Daemon...
Starting Resets System Activity Logs...
Starting User Login Management...
Starting Disk Manager...
Starting WPA supplicant...
[ OK ] Finished Save/Restore Sound Card State.
[ OK ] Reached target Sound Card.
[ OK ] Finished Remove Stale Onli…ext4 Metadata Check Snapshots.
[ OK ] Started System Logging Service.
[ OK ] Finished Resets System Activity Logs.
[ OK ] Started LSB: Load kernel m…ded to enable cpufreq scaling.
Starting LSB: set CPUFreq kernel parameters...
[ OK ] Started LSB: set CPUFreq kernel parameters.
Starting LSB: Set sysfs variables from /etc/sysfs.conf...
[ OK ] Started Self Monitoring an…ing Technology (SMART) Daemon.
[ OK ] Started User Login Management.
[ OK ] Started WPA supplicant.
[ OK ] Started LSB: Set sysfs variables from /etc/sysfs.conf.
[ OK ] Started Network Manager.
[ OK ] Reached target Network.
[ OK ] Reached target Network is Online.
Starting chrony, an NTP client/server...
Starting CUPS Scheduler...
Starting LSB: Advanced IEEE 802.11 management daemon...
Starting OpenVPN service...
Starting Authorization Manager...
Starting /etc/rc.local Compatibility...
Starting OpenBSD Secure Shell server...
[ OK ] Started strongSwan IPsec I…IKEv2 daemon using ipsec.conf.
Starting Permit User Sessions...
[ OK ] Started Unattended Upgrades Shutdown.
Starting LSB: layer 2 tunelling protocol daemon...
[ OK ] Started LSB: Advanced IEEE 802.11 management daemon.
[ OK ] Finished OpenVPN service.
[ OK ] Finished Permit User Sessions.
Starting Light Display Manager...
Starting Hostname Service...
[ OK ] Started Hostname Service.
[ 19.806333] rc.local[1060]: MJPG Streamer Version: git rev: 85f89a8c321e799fabb1693c5d133f3fb48ee748
[ 19.841405] rc.local[1060]: i: Using V4L2 device.: (null)
[ 19.856977] rc.local[1060]: i: Desired Resolution: 1280 x 720
[ 19.872501] rc.local[1060]: i: Frames Per Second.: 5
[ 19.888513] rc.local[1060]: i: Format............: JPEG
[ 19.904693] rc.local[1060]: i: TV-Norm...........: DEFAULT
[ 19.925125] rc.local[1060]: i: init_VideoIn failed
[ OK ] Started Authorization Manager.
[ OK ] Started OpenBSD Secure Shell server.
[ OK ] Started /etc/rc.local Compatibility.
[ OK ] Started Getty on tty1.
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Reached target Login Prompts.
[ OK ] Started chrony, an NTP client/server.
[ OK ] Reached target System Time Synchronized.
[ OK ] Started Trigger anacron every hour.
[ OK ] Started Daily apt download activities.
[ OK ] Started Daily apt upgrade and clean activities.
[ OK ] Started Periodic ext4 Onli…ata Check for All Filesystems.
[ OK ] Started Discard unused blocks once a week.
[ OK ] Started Daily rotation of log files.
[ OK ] Started Daily man-db regeneration.
[ OK ] Started Run system activit…ounting tool every 10 minutes.
[ OK ] Started Generate summary o…esterday's process accounting.
[ OK ] Reached target Timers.
[ OK ] Started Run anacron jobs.
[ OK ] Started Disk Manager.
Starting Network Manager Script Dispatcher Service...
[ OK ] Started Network Manager Script Dispatcher Service.
[ 21.458412] rc.local[1088]: [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[ 21.480513] rc.local[1088]: [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
[ 21.500754] rc.local[1088]: - using env: export GIN_MODE=release
[ 21.516672] rc.local[1088]: - using code: gin.SetMode(gin.ReleaseMode)
[ 21.532612] rc.local[1088]: [GIN-debug] GET /turn --> main.main.func1 (3 handlers)
[ 21.556478] rc.local[1088]: [GIN-debug] GET /light --> main.main.func2 (3 handlers)
[ 21.576494] rc.local[1088]: [GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
[ 21.596538] rc.local[1088]: Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[ 21.616568] rc.local[1088]: [GIN-debug] Listening and serving HTTP on :8082
[ OK ] Started LSB: layer 2 tunelling protocol daemon.
[ 22.819676] rc.local[1093]: 2023/02/02 03:17:17 [W] [service.go:133] login to server failed: dial tcp: lookup tt.leoay.com on 192.168.8.1:53: dial udp 192.168.8.1:53: connect: network is unreachable
[ 22.848460] rc.local[1093]: dial tcp: lookup tt.leoay.com on 192.168.8.1:53: dial udp 192.168.8.1:53: connect: network is unreachable
[ OK ] Started CUPS Scheduler.
Orange Pi 3.0.8 Bullseye ttyS0
orangepizero2 login: orangepi
Password:
___ ____ _ _____ ____
/ _ \| _ \(_) |__ /___ _ __ ___|___ \
| | | | |_) | | / // _ \ '__/ _ \ __) |
| |_| | __/| | / /| __/ | | (_) / __/
\___/|_| |_| /____\___|_| \___/_____|
Welcome to Orange Pi 3.0.8 Bullseye with Linux 5.16.17-sun50iw9
System load: 2% Up time: 4 min
Memory usage: 33% of 984M IP: 192.168.8.107
CPU temp: 39°C Usage of /: 22% of 30G
Last login: Thu Feb 2 02:31:18 UTC 2023 from 192.168.8.116 on pts/0
到这里,算是已经启动成功了,但是这个板子目前没有以太网的接口,所以只能通过wifi连接网络,我们可以直接通过命令行修改网络连接配置,连接网络,也可以通过HDMI连接到显示器在桌面中修改网络连接,这里不进行演示了,如果有问题的话,大家可以在评论区讨论。
五、总结
好了,今天这篇文章就写到这儿了,因为是MQ-Quad的第一篇文章,所以比较简单,不过其实我也想了一些比较好玩的想法,后面的文章会一一实现,敬请期待!