博客链接:
pomin.top
HDMI、IR、WIFI 适配
- DTS 文件
- ./device/config/chips/d1-h/configs/nezha/uboot-board.dts
- ./device/config/chips/d1-h/configs/nezha/linux-5.4/board.dts
- 分区文件
- ./target/allwinner/d1-h-nezha/swupdate/sys_partition_ab.fex
默认 HDMI 输出
这里我希望开机就是默认输出到 HDMI,需要对 ./device/config/chips/d1-h/configs/nezha/uboot-board.dts 进行修改
对 uboot-board.dts 中的 disp 节的代码进行修改,patch 文件如下,把默认的输出设备改为 HDMI 输出
diff --git a/configs/nezha/uboot-board.dts b/configs/nezha/uboot-board.dts
index 81a521e..ca1b898 100644
--- a/configs/nezha/uboot-board.dts
+++ b/configs/nezha/uboot-board.dts
@@ -214,31 +214,29 @@
disp_init_enable = <1>;
disp_mode = <0>;
- screen0_output_type = <1>;
- screen0_output_mode = <4>;
-
- screen1_output_type = <3>;
- screen1_output_mode = <10>;
-
- screen1_output_format = <0>;
- screen1_output_bits = <0>;
- screen1_output_eotf = <4>;
- screen1_output_cs = <257>;
- screen1_output_dvi_hdmi = <2>;
- screen1_output_range = <2>;
- screen1_output_scan = <0>;
- screen1_output_aspect_ratio = <8>;
-
- dev0_output_type = <1>;
- dev0_output_mode = <4>;
- dev0_screen_id = <0>;
- dev0_do_hpd = <0>;
-
- dev1_output_type = <4>;
- dev1_output_mode = <10>;
- dev1_screen_id = <1>;
- dev1_do_hpd = <1>;
+ screen0_output_type = <3>;
+ screen0_output_mode = <10>;
+ screen1_output_type = <1>;
+ screen1_output_mode = <4>;
+
+ screen0_output_format = <0>;
+ screen0_output_bits = <0>;
+ screen0_output_eotf = <4>;
+ screen0_output_cs = <257>;
+ screen0_output_dvi_hdmi = <2>;
+ screen0_output_range = <2>;
+ screen0_output_scan = <0>;
+ screen0_output_aspect_ratio = <8>;
+
+
+ dev0_output_type = <4>;
+
+
+
+
+ dev0_output_mode = <10>; dev0_screen_id = <0>;
+ dev0_do_hpd = <1>;
def_output_dev = <0>;
hdmi_mode_check = <1>;
Wi-Fi、IR 适配
查看核心板的原理图可以看到 XR829 蓝牙+WiFi 模块的 WL_REG_ON 管脚需要修改,在 SDK 原本的设备树中 WL_REG_ON 管脚是 PG12,但是开发板的管脚是 PB12
红外接收头的输入管脚接到的是 PG16,和 SDK 原本的 PB12 不同,也需要修改
board.dts 的 patch 文件如下
diff --git a/configs/nezha/linux-5.4/board.dts b/configs/nezha/linux-5.4/board.dts
old mode 100755
new mode 100644
index 963aa17..15eed8c
--- a/configs/nezha/linux-5.4/board.dts
+++ b/configs/nezha/linux-5.4/board.dts
@@ -464,14 +464,14 @@
*/
s_cir0_pins_a: s_cir@0 {
- pins = "PB12";
+ pins = "PG16";
function = "ir";
drive-strength = <10>;
bias-pull-up;
};
s_cir0_pins_b: s_cir@1 {
- pins = "PB12";
+ pins = "PG16";
function = "gpio_in";
};
@@ -566,7 +566,7 @@
clock-names = "32k-fanout1";
clocks = <&ccu CLK_FANOUT1_OUT>;
wlan_busnum = <0x1>;
- wlan_regon = <&pio PG 12 GPIO_ACTIVE_HIGH>;
+ wlan_regon = <&pio PB 12 GPIO_ACTIVE_HIGH>;
wlan_hostwake = <&pio PG 10 GPIO_ACTIVE_HIGH>;
/*wlan_power = "VCC-3V3";*/
/*wlan_power_vol = <3300000>;*/
@@ -1391,7 +1391,7 @@ pull up or pull down(default 0), driver level(default 1), data>
pinctrl-names = "default", "sleep";
pinctrl-0 = <&s_cir0_pins_a>;
pinctrl-1 = <&s_cir0_pins_b>;
- status = "disabled";
+ status = "okay";
};
&ir1 {
修改完了设备树后还需要修改一下 menuconfig 的配置,执行下面命令打开 kernel 的 menuconfig 的窗口
make kernel_menuconfig
然后使用 / 键进入搜索,搜索 IR_RX_SUNXI,可以看到我这里已经使能了,SDK 默认可能是没有使能的,需要修改下,前面标有(1),按下数字 1 键就可以跳转到这个位置
这时红外功能就可以用了,后续会注册到 /dev/input/event* 中
核心板的 Wi-Fi 模块有可能会是 24MHz 的晶振,而 SDK 默认的是 40MHz 的,需要修改下,运行命令打开 menuconfig
make menuconfig
使用 / 进入搜索模式,搜索 XR829,把 kmod-net-xr829-40M 改成 kmod-net-xr829
失能掉 xr829 with 40M sdd
确保 xr829-firmware 是使能的
然后退出保存即可。
烧录测试
在 SDK 根目录以此运行如下命令完成编译和打包
source build/envsetup.sh
lunch
make -j99
pack
将 Ubuntu 虚拟机编译出的镜像传输到 Windows 实体机中
烧录到开发板中
启动开发板,./device/config/chips/d1-h/configs/nezha/configs/bootlogo.bmp
通过 HDMI 采集器可以看到在开发板启动的时候默认进入了 HDMI 的显示了
ifconfig 命令查看网卡,可以看到 wlan0 了,使用 wifi_connect_ap_test 命令连接到 Wi-Fi
wifi_connect_ap_test [ssid] [passwd]
命令尝试连接到一个 Wi-Fi,连接完后尝试 ping 百度来看看
ping baidu.com -Iwlan0
可以看到通过 Wi-Fi 可以正常访问到互联网了
再看看红外 O不OK
cat /proc/bus/input/devices
可以看到红外的输入对应的是 event1,然后使用 hexdump 查看下输出