求助:mipi屏初始化过程中,uboot崩溃,不断重启
各位好;我尝试在3288(android5.1)上支持一款7寸的4 lane的mipi屏;遇到这样一个情况:
当在和屏相关的dtsi文件中的初始化命令的字节数过长时(超过20字节),uboot就会不断的重启,无法正常启动;
不停的打印如下:
empty serial no.
checkKey
vbus = 1
read logo on state from dts
pll_src = 0, dclk_hz = 60000000, dclk_div = 6
undefined instruction
pc : [<01054f70>] lr : [<0000020c>]
sp : 05737938ip : 00016d2c fp : 00000240
r10: 0000006dr9 : 05748a38 r8 : 00000025
r7 : 00000052r6 : 00000026 r5 : 00000027r4 : 00000040
r3 : ffffffffr2 : 00000004 r1 : 00016d2cr0 : 00000000
Flags: NzCvIRQs onFIQs offMode SVC_32
Resetting CPU ...
resetting ...
我尝试去找了代码中是否哪里有对字节长度的限制,但目前没找到地方;
像请教下各位,是否也有遇到类似的情况?
以下是我屏的dtsi文件内容:
(on-cmds9, on-cmds10, on-cmds14,这三处地方就是字节数超过20的,让让系统uboot不断重启)
/*
* arch/arm/boot/dts/7inch-trip_mipi.dtsi
*/
/ {
/* about mipi */
disp_mipi_init: mipi_dsi_init{
compatible = "rockchip,mipi_dsi_init";
rockchip,screen_init = <1>;
rockchip,dsi_lane = <4>;
//rockchip,dsi_hs_clk = <1000>;
rockchip,dsi_hs_clk = <512>;
rockchip,mipi_dsi_num = <1>;
};
disp_mipi_power_ctr: mipi_power_ctr {
compatible = "rockchip,mipi_power_ctr";
mipi_lcd_rst:mipi_lcd_rst{
compatible = "rockchip,lcd_rst";
rockchip,gpios = <&gpio7 GPIO_A4 GPIO_ACTIVE_LOW>;
rockchip,delay = <10>;
};
};
disp_mipi_init_cmds: screen-on-cmds {
rockchip,cmd_debug = <0>;
compatible = "rockchip,screen-on-cmds";
rockchip,on-cmds1 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF0 0x5A 0x5A>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds2 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF1 0x5A 0x5A>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds3 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xFC 0xA5 0xA5>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds4 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xD0 0x00 0X10>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds5 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xB1 0x10>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds6 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xB2 0x14 0X22 0x2F 0X04>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds7 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF2 0x02 0X08 0x08 0X90 0X10>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds8 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF3 0x01 0XD7 0xE2 0X62 0xF4 0XF7 0x77 0X3C 0x26 0X00>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds9 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF4 0x00 0X02 0x03 0X26 0x03 0X02 0x09 0X00 0x07 0X16 0x16 0x03 0X00 0x08 0X08 0x03 0X0E 0x0F 0X12 0x1C 0X1D 0x1E 0x0C 0X09 0x01 0X04 0x02 0X61 0x74 0X75 0x72 0X83 0x80 0x80 0XB0 0x00 0X01 0x01 0X28 0x04 0X03 0x28 0X01 0XD1 0X32>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds10 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF5 0x83 0X28 0x28 0X5F 0xAB 0X98 0x52 0X0F 0x33 0X43 0x04 0x59 0X54 0x52 0X05 0x40 0X60 0x4E 0X60 0x40 0X27 0x26 0x52 0X25 0x6D 0X18>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds11 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xEE 0x00 0X00 0x00 0X00 0x00 0X00 0x00 0X00>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds12 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xEF 0x12 0X12 0x43 0X43 0x90 0X84 0x24 0X81>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds13 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF6 0x63 0X25 0xA6 0X00 0x00 0X14>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds14 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xF7 0x0A 0X0A 0x08 0X08 0x0B 0X0B 0x09 0X09 0x04 0X05 0x01 0x01 0X01 0x01 0X01 0x01 0X0A 0x0A 0X08 0x08 0X0B 0x0B 0x09 0X09 0x04 0X05 0X01 0x01 0x01 0X01 0x01 0X01>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds15 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xFA 0x00 0X34 0x01 0X05 0x0E 0X07 0x0C 0X12 0x14 0X1C 0x23 0x2B 0X34 0x35 0X2E 0x2D 0X30>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds16 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xFB 0x00 0X34 0x01 0X05 0x0E 0X07 0x0C 0X12 0x14 0X1C 0x23 0x2B 0X34 0x35 0X2E 0x2D 0X30>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds17 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xFD 0x16 0X10 0x11 0X23 0x09>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds18 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xFE 0x00 0X02 0x03 0X21 0x00 0X78>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds19 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x05 0x35>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds20 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x05 0x11>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds21 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0xFF 0x10>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds22 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x29 0xC3 0X40 0X00 0X28>;
rockchip,cmd_delay = <0>;
};
rockchip,on-cmds23 {
compatible = "rockchip,on-cmds";
rockchip,cmd_type = <LPDT>;
rockchip,dsi_id = <0>;
rockchip,cmd = <0x05 0x29>;
rockchip,cmd_delay = <0>;
};
};
disp_timings: display-timings {
native-mode = <&timing0>;
compatible = "rockchip,display-timings";
timing0: timing0 {
screen-type = <SCREEN_MIPI>;
//screen-type = <SCREEN_DUAL_MIPI>;
lvds-format = <LVDS_8BIT_2>;
out-face = <OUT_P888>;
//color-mode = <COLOR_RGB>;
clock-frequency = <60000000>;
//clock-frequency = <120000000>;
hactive = <800>;
vactive = <1280>;
//hsync-len = <20>;
hsync-len = <40>;
hback-porch = <48>;
hfront-porch = <16>;
//vsync-len = <10>;
vsync-len = <3>;
vback-porch = <3>;
vfront-porch = <5>;
hsync-active = <1>;
vsync-active = <1>;
de-active = <0>;
pixelclk-active = <1>;
swap-rb = <0>;
swap-rg = <0>;
swap-gb = <0>;
};
};
};
&dsihost0 {
status = "okay";
}; 本帖最后由 zhansb 于 2016-12-13 09:50 编辑
使用的是firefly官方的SDK,更新到哪里? zhansb 发表于 2016-12-13 09:43
使用的是firefly官方的SDK,更新到哪里?
根据你的提示,我找到那个文件了,确实是需要把cmd的空间加大;
uboot/drivers/video/screen/lcd_mipi.c
uboot/drivers/video/transmitter/mipi_dsi.h
kernel/drivers/video/rockchip/screen/lcd_mipi.c
kernel/drivers/video/rockchip/transmitter/mipi_dsi.h
改动这四个文件里面的cmds相关数组大小。
谢谢;
zhansb 发表于 2016-12-13 09:43
使用的是firefly官方的SDK,更新到哪里?
现在是uboot和内核都不会崩溃或重启;
但是系统启动后,mipi屏任何显示的痕迹,只是背光亮了;
有点无从下手; 内核的相关mipi 的配置是否有选上 jpchen 发表于 2016-12-14 09:04
内核的相关mipi 的配置是否有选上
恩,都选上了;
CONFIG_LCDC_RK3288=y
CONFIG_LCDC_RK3036=y
CONFIG_LCDC_RK312X=y
-CONFIG_LCD_GENERAL=y
-# CONFIG_LCD_MIPI is not set
+# CONFIG_LCD_GENERAL is not set
+CONFIG_LCD_MIPI=y
CONFIG_RK_TRSM=y
CONFIG_RK32_LVDS=y
# CONFIG_RK31XX_LVDS is not set
@@ -2423,7 +2423,10 @@ CONFIG_DP_ANX6345=y
# CONFIG_DP501 is not set
CONFIG_RK32_DP=y
CONFIG_RK_VGA=y
-# CONFIG_MIPI_DSI is not set
+CONFIG_MIPI_DSI=y
+# CONFIG_TC358768_RGB2MIPI is not set
+# CONFIG_SSD2828_RGB2MIPI is not set
+CONFIG_RK32_MIPI_DSI=y
jpchen 发表于 2016-12-14 09:04
内核的相关mipi 的配置是否有选上
我想咨询一个问题,在初始化的命令中,有0x29,0x13,0x05等开头的,这些字节用哪个有什么特别的要求吗? 你自己在网上搜一下mipi协议,你看一下就懂了
你自己在网上搜一下mipi协议,你看一下就懂了 mipi屏点亮没?
页:
[1]
2