Banana Pi M2M 是一款采用 ARM SoC 的开发板,在非常小巧的外形中提供了出色的计算性能。板体为 51 mm 见方,搭载 Allwinner A33 四核 Cortex-A7 SoC 和 512 MB DDR3 内存。
四核 ARM Cortex-A7 CPU,R16
512 MB DDR3 SDRAM
WiFi(AP6212)及板载蓝牙
一块 BPI-M2 Magic、一张至少 8 GB 的 SD 卡、一根 TTL 串口线和一个电源适配器。
下载镜像并核对 MD5 校验值。
准备一张至少 8 GB 的 TF 卡和一根 USB 转串口线。
将 USB 转串口线连接到 40 针排针的 UART2,用于内核控制台调试。
| USB 接口旁的三针 UART0 在 BPI 发布的默认镜像中不能用作调试串口,因为 SD 卡与 UART0 复用相同的引脚,而默认镜像需要同时支持 SD 卡和 eMMC。如果只从 eMMC 启动,并希望启用 UART0 作为调试串口且不需要 SD 卡支持,请参阅 为仅使用 eMMC 的镜像启用 UART0 调试。 |
在 Linux 电脑上安装 bpi-tools。如果无法访问该网址或遇到其他问题,请前往 bpi-tools 仓库 手动下载该工具。
$ apt-get install pv
$ curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash
下载最新的 Linux 镜像,并确认 MD5 校验值正确。
默认登录账号:pi/bananapi 或 root/bananapi。
Windows
使用 Balena Etcher 烧录镜像。
Balena Etcher 是 Balena 提供的开源图形化烧录工具,可将操作系统镜像写入 SD 卡或 USB 存储设备。
单击“Flash from file”选择镜像。
单击“Select target”选择目标设备。
单击“Flash!”开始烧录。
Linux
可以选择以下两种方法。
使用 Linux 上的 bpi-tools 烧录镜像。先将 SD 卡插入 Linux 电脑
$ sudo bpi-copy xxx-bpi-m2m-xxx.img.zip /dev/sdX
使用 Linux 的 dd 命令烧录镜像。如果 /dev/sdX 的分区被自动挂载,请先将其卸载。bpi-copy 实际执行的操作与此 dd 命令相同。
$ sudo apt-get install pv
$ sudo unzip -p xxx-bpi-m2m-xxx.img.zip | pv | dd of=/dev/sdX bs=10M status=noxfer
准备一张已烧录 Linux 镜像的 SD 卡,并用该卡启动开发板。
将 eMMC 镜像复制到 U 盘,把 U 盘插入开发板并挂载。
使用 bpi-tools 命令烧录
$ sudo bpi-copy xxx-bpi-m2m-xxx.img.zip /dev/mmcblk1
也可以使用 dd 命令烧录。如果 mmcblk1p1 和 mmcblk1p2 分区被自动挂载,请先卸载。bpi-copy 实际执行的操作与此 dd 命令相同
$ sudo apt-get install pv
$ sudo unzip -p xxxb-bpi-m2m-xxx.img.zip | pv | dd of=/dev/mmcblk1 bs=10M status=noxfer
烧录完成后,安全关机并取出 SD 卡。
| 如果 eMMC 以前烧录过 Android 镜像,必须先擦除 Android 的启动分区,再执行步骤 3 或步骤 4。 |
root@bpi-iot-ros-ai:/# echo 0 > /sys/block/mmcblk1/mmcblk1boot0/force_ro
root@bpi-iot-ros-ai:/# echo 0 > /sys/block/mmcblk1/mmcblk1boot1/force_ro
root@bpi-iot-ros-ai:/#
root@bpi-iot-ros-ai:/# dd if=/dev/zero of=/dev/mmcblk1boot0 bs=4096 count=1024
1024+0 records in
1024+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.421164 s, 10.0 MB/s
root@bpi-iot-ros-ai:/# dd if=/dev/zero of=/dev/mmcblk1boot1 bs=4096 count=1024
1024+0 records in
1024+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.428427 s, 9.8 MB/s
在 sunxi-pack/sun8iw5p1/configs/BPI-M2M-LCD7/sys_config.fex 中启用 UART0 节点并禁用 SDC0 节点。
--- a/sunxi-pack/sun8iw5p1/configs/BPI-M2M-LCD7/sys_config.fex
+++ b/sunxi-pack/sun8iw5p1/configs/BPI-M2M-LCD7/sys_config.fex
@@ -262,7 +262,7 @@ twi_sda = port:PE13<3><default><default><default>
;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function
;----------------------------------------------------------------------------------
[uart0]
-uart_used = 0
+uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PF02<3><1><default><default>
@@ -803,7 +803,7 @@ led3_active_low = 1
; that supports SD3.0 cards and eMMC4.4+ flashes
;-------------------------------------------------------------------------------
[mmc0_para]
-sdc_used = 1
+sdc_used = 0
sdc_detmode = 3
sdc_buswidth = 4
sdc_d1 = port:PF00<2><1><2><default>
构建 BSP 源代码。
将引导加载程序文件 SD/bpi-m2m/100MB/BPI-M2M-LCD7-8k.img.gz 复制到 U 盘。BPI 也为这一用途提供了 预构建引导加载程序。
从 eMMC 启动 M2M 开发板,插入 U 盘并将其挂载。
将引导加载程序烧录到 eMMC
$ sudo bpi-bootsel BPI-M2M-LCD7-8k.img.gz /dev/mmcblk0
或者
$ sudo gunzip -c BPI-M2M-LCD7-8k.img.gz | dd of=/dev/mmcblk0 bs=1024 seek=8
$ sync
$ sudo umount /dev/sda1
挂载启动分区,并在 uEnv.txt 中设置内核调试控制台
$ sudo mount -t vfat /dev/mmcblk0p1 /mnt
在 /mnt/bananapi/bpi-m2m/linux/lcd7/uEnv.txt 中将 console=ttyS2,115200 改为 console=ttyS0,115200
$ sudo umount /dev/mmcblk0p1
安全关闭开发板电源,并将调试串口连接到 UART0 三针排针。
两针 HP 接口的音频输出通路
| 两针 HP 接口的音频输出通路 | ||
|---|---|---|
编号 |
控件名称 |
值 |
1 |
headphone volume |
0-63 |
104 |
AIF1IN0L Mux |
AIF1_DA0L |
103 |
AIF1IN0R Mux |
AIF1_DA0R |
100 |
DACL Mixer AIF1DA0L Switch |
1 |
96 |
DACR Mixer AIF1DA0R Switch |
1 |
78 |
HP_R Mux |
DACR HPR Switch |
77 |
HP_L Mux |
DACL HPL Switch |
105 |
Headphone Switch |
1 |
Mic 1 音频输入通路
| Mic 1 音频输入通路 | ||
|---|---|---|
编号 |
控件名称 |
值 |
56 |
AIF1OUT0L Mux |
AIF1_AD0L |
55 |
AIF1OUT0R Mux |
AIF1_AD0R |
51 |
AIF1 AD0L Mixer ADCL Switch |
1 |
47 |
AIF1 AD0R Mixer ADCR Switch |
1 |
24 |
ADCR Mux |
ADC |
25 |
ADCL Mux |
ADC |
34 |
LEFT ADC input Mixer MIC1 boost Switch |
1 |
27 |
RIGHT ADC input Mixer MIC1 boost Switch |
1 |
4 |
MIC1 boost amplifier gain |
0-7 |
ALSA 配置文件 /var/lib/alsa/alsa.state.bpi-m2m 已启用两针 HP 输出和 Mic 1 输入音频通路。系统启动后,/var/lib/bananapi/bpi-autorun.d/S10-audio-bpi-m2m.sh 会恢复这些设置。
使用 bluetoothctl 工具管理蓝牙
执行“bluetoothctl”
如果不熟悉 bluetoothctl,请输入“help”查看更多命令
执行以下命令:
devices
power on
pairable on
discoverable on
agen on
list
scan on
connect to *****
可以使用以下两种方法设置 WiFi 客户端
使用命令设置 WiFi 客户端
$ sudo su
# killall wpa_supplicant
# wpa_passphrase <ssid> <passphrase> > /etc/wpa_supplicant/wpa_supplicant.conf
# ifconfig wlan0 up
# iwlist wlan0 scan
# wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
# dhclient wlan0
还可以使用其他命令行方式,具体请参阅相关工具的在线文档。
使用图形界面设置 WiFi 客户端
本例使用 HDF5640 摄像头。
Guvcview
通过图形界面操作摄像头
Applications → Sound & Video → guvcview
Shell
系统还在 /usr/local/bin 中提供了摄像头测试脚本
测试拍照功能
./test_ov5640_image_mode.sh
测试视频录制功能
./cameratest.sh
安装 RPi.GPIO
git clone https://github.com/BPI-SINOVOIP/RPi.GPIO"
cd RPi.GPIO
sudo apt-get update
sudo apt-get install python-dev python3-dev
安装模块
sudo python setup.py install
或者
sudo python3 setup.py install
使用 RPi.GPIO
cd /usr/local/bin
./bpi_test_g40.py
系统还提供了内置测试命令,位于
/usr/local/bin
更新 WiringPi
执行
bpi-update -c pkglist.conf
执行
bpi-update -c bpi-pkg-bpi-wiringpi.conf
RGB 1602 LCD
执行
/usr/local/bin/bpi_test_lcd1602.sh
0.96 英寸 OLED 显示屏
执行
/usr/local/bin/bpi_test_52pi.sh
8×8 RGB LED 矩阵
首先需要一块用于 8×8 LED 矩阵的 GPIO 扩展板
执行
/usr/local/bin/bpi_test_gpio40.sh