基础配置:网络篇
XR829集蓝牙+WiFi二合一,WiFi通过SDIO与主机相连,蓝牙通过UART(HCI)与主机相连,具体如下:
新 | ||
---|---|---|
WL_REG_ON | PB12 | |
WL_WAKE_AP | PG10 | |
SDIO_D0 | PG2 | SDC1 |
SDIO_D1 | PG3 | |
SDIO_D2 | PG4 | |
SDIO_D3 | PG5 | |
SDIO_CMD | PG1 | |
SDIO_CLK | PG0 | |
CLK_FANOUT | PG11 | |
PCM_OUT | PG15 | |
PCM_CLK | PG13 | |
PCM_IN | PG14 | |
PCM_SYNC | PG12 | |
AP_CK24M_OUT | ||
BT_RST_N | PG18 | |
AP_UART1_CTS | PG9 | UART1 |
AP_UART1_RTS | PG8 | |
AP_UART1_TXD | PG6 | |
AP_UART1_RXD | PG7 | |
AP_WAKE_BT | PG16 | |
BT_WAKE_AP | PG17 | |
SD_CLK | PC2 | |
SD_CMD | PC3 | |
SD_D2 | PC4 | |
SD_D1 | PC5 | |
SD_D0 | PC6 | |
SD_D3 | PC7 |
XR829有6路UART,3路SDIO,其中SDIO1、UART1分别连到XR829的WiFi、蓝牙子系统。首先配置网络,以太网被合进DVP接口插座中,无线网可以来配置一下,对比原理图:
图1 XR89接线原理图
设备树文件.dts或.fex在目录tina-d1-h\device\config\chips\d1-h\configs\nezha\board.dts下发现WL_REG_ON管脚没对应,修改PG12成PB12:
图2 XR829 WiFi设备树引脚修改
驱动程序在tina-d1-h\lichee\linux-5.4\drivers\net\wireless\xr829目录下,通过敲击“make kernel_menuconfig”进入Device Drivers->Network device support->Wirelwss LAN核查XR829 WLAN Support是否编译成.ko并进入内核:
图3 kernel内核配置
此时编译烧录发现报错“No vqmmc,check if there is regulator”,按照文档《D1-H_Tina_Linux_Wi-Fi_开发指南》P9上电时序需要24/26MHz时钟,而驱动有两个版本XR829和XR829_40M,于是Kernel modules->Wireless Drviers取消选择kmode-net-xr829-40M,选择kmode-net-xr829(目录/lib/modules/5.4.61):
图4 内核驱动配置
Firmware:取消选择“xr829 with 40M SDD”(目录/lib/firmware),配置变动在SDK/target/allwinner/d1-h-nezha/defconfig
图5 设备固件配置
再次编译烧录仍然报警odhcp6c not found,查了下odhcp6c在openwrt是经典配置,按照https://www.jianshu.com/p/59332ac490ec操作了一下,依旧不行,于是在Network->ohdcp6c和ohdcp6d选中即可:
图6 开启odhcp6c
再次启动终于成功了,分别在rootfs目录/lib/firmware和/lib/modules/5.4.61下看到固件和内核驱动,输入insmod xr829.ko提示已加载:
图7 检查文件系统固件和驱动的存在
输入wifi_connect_ap_test ssid passwd连接网络,通过“ip a”可以看到ipv4地址,ping www.baidu.com也是通的:
图8 WLAN网络
而WLAN的测试指令可以在/bin找到:
图9 wifi测试指令