Banana Pi R64 是一款采用 64 位芯片的路由器开发板,可运行 OpenWrt、Linux 等多种开源操作系统。它配有 4 个千兆 LAN 端口、1 个千兆 WAN 端口,并支持 802.11ac WiFi AP 功能。
| 更多信息:Banana Pi BPI-R64 |
MediaTek MT7622,1.35 GHz 64 位双核 ARM Cortex-A53
1 GB DDR3 SDRAM
Mini PCIe 接口,支持 4G 模块
内置 4×4 802.11n / Bluetooth 5.0 SoC
板载 MTK7615 4×4 802.11ac WiFi
1 个 SATA 接口
MicroSD 卡槽,最高支持 256 GB
8 GB eMMC 闪存(可选 16/32/64 GB)
5 个 10/100/1000 Mb 以太网端口
1 个 USB 3.0 接口
低速 I/O:ADC、音频放大器、GPIO、I2C、I2S、红外、PMIC I/F、PWM、RTC、SPI、UART
支持 PoE 功能
准备一张至少 8 GB 的 TF 卡和一个 USB 转串口适配器
使用 USB 转串口适配器(3.3 V,波特率 115200)连接 R64 的调试控制台
LAN 口默认 IP 地址:192.168.1.1
用户名/密码:pi/bananapi、root/bananapi。+ 也可以使用无密码的 root 用户登录。
WiFi:OpenWrt
Windows 电脑
Balena Etcher 是 Balena 提供的开源图形化烧录工具,可将操作系统镜像写入 SD 卡或 USB 存储设备。
单击“Flash from file”选择镜像。
单击“Select target”选择目标设备。
单击“Flash!”开始烧录。
Linux
bpi-copy
安装 bpi-tools。如果无法访问该网址或遇到其他问题,请前往 bpi-tools 仓库手动安装该工具。
apt-get install pv
curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash
下载镜像后,将 TF 卡插入 Ubuntu 电脑并执行
bpi-copy xxx.img /dev/sdx
以便将镜像烧录到 TF 卡。
dd
如果 SD 卡设备 /dev/sdX 的分区被自动挂载,请先将其卸载。bpi-copy 实际执行的操作与此 dd 命令相同。
$ sudo apt-get install pv unzip
$ sudo unzip -p xxx-bpi-m5-xxx.img.zip | pv | dd of=/dev/sdX bs=10M status=noxfer
向 eMMC 烧录镜像前,请准备一张已烧录可启动镜像的 SD 卡和一个 U 盘。下面以 OpenWrt 镜像(mtk-bpi-r64-preloader-emmc.bin、2020-04-09-OpenWRT-mtk-bpi-r64-EMMC.img)为例。
| 可以从 GitHub 下载“.bin”文件:https://github.com/BPI-SINOVOIP/BPI-R64-openwrt/tree/master/staging_dir/target-aarch64_cortex-a53_musl/image |
插入已烧录镜像的 SD 卡,上电启动开发板。(SD 卡中可以是 OpenWrt,也可以是 Ubuntu 等其他 Linux 系统。)
将可从 eMMC 启动的 OpenWrt 镜像(mtk-bpi-r64-preloader-emmc.bin、2020-04-09-OpenWRT-mtk-bpi-r64-EMMC.img)复制到 U 盘。如果镜像已压缩,请先解压再复制。
将 U 盘插入开发板,并按如下方式将其挂载到 /mnt 或其他目录:(如果已自动挂载,可跳过此步)
mount -t vfat /dev/sda1 /mnt
cd /mnt
执行以下命令,启用 eMMC 并将镜像写入 eMMC:
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=2020-04-09-OpenWRT-mtk-bpi-r64-EMMC.img of=/dev/mmcblk0
dd if=mtk-bpi-r64-preloader-emmc.bin of=/dev/mmcblk0boot0
mmc bootpart enable 1 1 /dev/mmcblk0
关机并取出 SD 卡和 U 盘,然后重新开机,从 eMMC 启动开发板。
40 针引脚定义
echo xxx > /sys/class/gpio/export
echo in/out > /sys/class/gpio/gpioxxx/direction
echo 0/1 > /sys/class/gpio/gpioxxx/value
查看 GPIO 基准编号,本例中为 409
例如,如果要将 GPIO 22 配置为高电平输出,需要输入以下命令:
echo 431(22+409) > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio431/direction
echo 1 > /sys/class/gpio/gpio431/value
echo x >/sys/class/pwm/pwmchip0/export
echo 200000 >/sys/class/pwm/pwmchip0/pwmx/period
echo 100000 >/sys/class/pwm/pwmchip0/pwmx/duty_cycle
echo 1 >/sys/class/pwm/pwmchip0/pwmx/enable
SPI 面板模块:
2.4 英寸 TFT LCD 触摸屏,采用 SPI 接口,分辨率 240×320(ILI9341 + ADS7843/XPT2046/HR2046)
SPI 面板 <–> BPIR64
T_DO, T_DIN, T_CLK <–> SPIC_0: MOSI / MISO / CLK
T_CS <–> SPI-CE0
T_IRQ <–> IO-37
SDO, SCK, SDI <–> SPIC_1: MOSI / MISO / CLK
LED <–> PIN-31
DC <–> PIN-11
RESET <–> PIN-13
CS <–> SPI-CE1
GND <–> GND-9
VCC <–> 3.3V-1
DTS 修改:
/ {
backlight: backlight {
compatible = "gpio-backlight";
gpios = <&pio 82 GPIO_ACTIVE_HIGH>; //PIN31 IO-31 : GPIO82
default-on;
};
};
&pio {
spic0_pins: spic0-pins {
mux {
function = "spi";
groups = "spic0_0";
};
};
spic1_pins: spic1-pins {
mux {
function = "spi";
groups = "spic1_0";
};
};
}
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spic0_pins>;
status = "okay";
touch@0 {
reg = <0>; //CE0
compatible = "ti,ads7843";
interrupt-parent = <&pio>;
interrupts = <86 0>; //PIN37: IO-37 == GPIO86
pendown-gpio = <&pio 86 0>;
spi-max-frequency = <1000000>;
vcc-supply = <®_3p3v>;
wakeup-source;
};
};
&spi1 {
pinctrl-names = "default";
pinctrl-0 = <&spic1_pins>;
status = "okay";
display@0{
compatible = "ilitek,ili9341";
reg = <0>; //CE0
spi-max-frequency = <32000000>;
dc-gpios = <&pio 51 GPIO_ACTIVE_HIGH>; //PIN11 UART1-TXD : GPIO51
reset-gpios = <&pio 52 GPIO_ACTIVE_HIGH>; //PIN13 UART1-RXD : GPIO52
backlight = <&backlight>;
};
};
内核配置:
+CONFIG_FB_TFT_ILI9341
+CONFIG_FB_TFT
+CONFIG_FB
+CONFIG_BACKLIGHT_LCD_SUPPORT
+CONFIG_BACKLIGHT_CLASS_DEVICE
+CONFIG_BACKLIGHT_GPIO
+CONFIG_INPUT
+CONFIG_INPUT_TOUCHSCREEN
+CONFIG_TOUCHSCREEN_ADS7846
应用:
| 软件包 | + 说明 | 源码 |
|---|---|---|
fbv |
帧缓冲图像查看器 |
|
input-event-daemon |
支持 touchTEST 事件的 input-event-daemon |
以下 input-event-daemon 配置会根据触摸区域显示图像。(坐标看起来比较特殊,但这是实际触摸测试输出的结果。)
[Global]
listen = /dev/input/event0
listen = /dev/input/event1
[TouchTEST]
340,400,3440,1860 = cat /dev/zero > /dev/fb0; fbv -f /root/bpi_608x429.jpg -s 1
340,2260,3440,1860 = cat /dev/zero > /dev/fb0; fbv -f /root/openwrt_449x449.png -s 1
Banana Pi BPI-R64 SPI 触摸屏测试:https://www.youtube.com/watch?v=ikag-D_TI0g&feature=youtu.be
如需使用 R64 的 SATA 接口,需要将 GPIO90 置为低电平
echo 499 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio499/direction
echo 0 > /sys/class/gpio/gpio499/value
使用东芝机械硬盘测得的读写性能如下:
磁盘读取:50 MB/s,命令:
dd if=/dev/sda of=/dev/null bs=1M count=1024
磁盘写入:38 MB/s,命令:
dd if=/dev/zero of=/dev/sda bs=1M count=1024
使用三星 SSD 测得的读写性能如下:
磁盘读取:360 MB/s,命令:
dd if=/dev/sda of=/dev/null bs=1M count=1024
磁盘写入:200 MB/s,命令:
dd if=/dev/zero of=/dev/sda bs=1M count=1024
如需使用 R64 的 PCIe 接口,需要将 GPIO90 置为高电平
echo 499 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio499/direction
echo 1 > /sys/class/gpio/gpio499/value
PCIe 支持 EC-25 4G 模块。
使用 iperf3 测试 GMAC
在电脑终端中执行
iperf3 -s
在 R64 控制台上:
TCP 测试:
iperf3 -c serverIP
UDP 测试:
iperf3 -u -c serverIP
R64 蓝牙架构
R64 上的 BLE
输入命令“btmw-test”,进入“btmw_test_cli”命令行
以下是一些示例命令:
MW_GAP name 7622_BT /*rename bt device*/
MW_GAP info /*check local BT device info*/
MW_GATTC scan /* start ble scan*/
MW_GATTC stop_scan /* stop ble scan*/
LAN 以太网接口为 eth2
ifconfig eth2 up
配置 IP 地址:“ifconfig eth2 192.168.1.1”。
配置 DHCP 服务器
vim /etc/dhcp/dhcpd.conf
添加这些配置。
启动 DHCP 服务器:“dhcpd eth2”。
然后配置 iptables 并启用数据包转发。
将“net.ipv4.ip_forward=1”添加到“/etc/sysctl.conf”
执行“/sbin/sysctl -p”使转发配置生效
“iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o eth3 -j MASQUERADE”
找到“mt_wifi.ko”并使用 insmod 加载。
insmod ./lib/modules/4.4.92-BPI-R64-Kernel/extra/mt_wifi.ko
随后可以看到 ra0 和 rai0 接口。
ra0 是 MT7622 的 2.4 GHz WiFi 接口
rai0 是 MT7615 的 5 GHz WiFi 接口
使用“ifconfig ra0 up”启用它。
配置 IP 地址:“ifconfig ra0 192.168.1.1”。
配置 DHCP 服务器:执行“vim /etc/dhcp/dhcpd.conf”,并添加以下内容。
启动 DHCP 服务器:“dhcpd ra0”。 然后配置 iptables 并启用数据包转发。
将“net.ipv4.ip_forward=1”添加到“/etc/sysctl.conf”
执行“/sbin/sysctl -p”使转发配置生效
“iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o eth3 -j MASQUERADE”
使用“ifconfig rai0 up”启用它。
配置 IP 地址:“ifconfig rai0 192.168.1.1”。
配置 DHCP 服务器:执行“vim /etc/dhcp/dhcpd.conf”,并添加以下内容。
启动 DHCP 服务器:“dhcpd rai0”。然后配置 iptables 并启用数据包转发。
将“net.ipv4.ip_forward=1”添加到“/etc/sysctl.conf”
执行“/sbin/sysctl -p”使转发配置生效
“iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o eth3 -j MASQUERADE”
MT7622 开发板(BPI)参考手册
Google Drive:https://drive.google.com/open?id=1UhaIM9ork1O9cNO-t6ENMVVamB75AThV
Baidu 网盘:https://pan.baidu.com/s/1KduFT2MUvMs2FhOF4A8kQQ