全志的D1这款芯片可以说可以点很多种屏幕了,可以看下手册就能发现。
如图所示。
按照其说的,我们需要修改设备树,配置我们的屏幕。
- &lcd0 {
- lcd_used = <1>;
- lcd_driver_name = "st7701s_rgb";
-
- lcd_if = <0>;
- lcd_hv_if = <0>;
-
- lcd_width = <70>;
- lcd_height = <72>;
- lcd_x = <480>;
- lcd_y = <480>;
- lcd_dclk_freq = <19>;
- lcd_hbp = <60>;
- lcd_ht = <612>;
- lcd_hspw = <12>;
- lcd_vbp = <18>;
- lcd_vt = <520>;
- lcd_vspw = <4>;
-
- lcd_backlight = <50>;
- lcd_pwm_used = <1>;
- lcd_pwm_ch = <7>;
- lcd_pwm_freq = <20000>;
- lcd_pwm_pol = <1>;
- lcd_bright_curve_en = <0>;
-
- lcd_frm = <1>;
- lcd_io_phase = <0x0000>;
- lcd_gamma_en = <0>;
- lcd_cmap_en = <0>;
- lcd_hv_clk_phase= <0>;
- lcd_hv_sync_polarity= <0>;
- lcd_rb_swap = <1>;
-
- lcd_power = "vcc-lcd";
- lcd_pin_power = "vcc-pd";
- lcd_gpio_0 = <&pio PG 13 GPIO_ACtiVE_HIGH>;
- lcd_gpio_1 = <&pio PE 14 GPIO_ACTIVE_HIGH>;
- lcd_gpio_2 = <&pio PE 12 GPIO_ACTIVE_HIGH>;
- lcd_gpio_3 = <&pio PE 15 GPIO_ACTIVE_HIGH>;
- pinctrl-0 = <&rgb18_pins_a>;
- pinctrl-1 = <&rgb18_pins_b>;
-
- };
-
还需要把PWM7恢复,这个在Sipeed RV上是其接口的背光调节。
- &pwm7 {
- pinctrl-names = "active", "sleep";
- pinctrl-0 = <&pwm7_pin_a>;
- pinctrl-1 = <&pwm7_pin_b>;
- status = "okay";
- };
之后就是修改Linux下的,Drivers下的文件,在Panels.c中增加我们新屏幕的头。
同样.H文件中也需要修改。
这些都是我从其docker环境下拷贝出来的。
记得把Kconfig文件也修改了,还有上一层中的MakeFile文件。
这样我们可以在内核中选中我们的屏幕了。
然后重新编译生成我们的。Img文件。
进入系统后可以用下面的测试命令,进行花屏测试。可以我发现我怎么修改目前屏幕就是不显示。
cat /dev/urandom >/dev/fb0
cat/sys/class/disp/disp/attr/sys
使用此命令查看,也是对的。就是屏幕不显示。
屏幕彩条测试:echo 1 > /sys/class/disp/disp/attr/colorbar
同理这个也是不显示的。但是我试了docker下的编译出的是可以显示的。
如下: