java 进程跑飞_RK3288 st7703 mipi屏指令过长,程序跑飞

在RK3288平台上,使用Android 5.1系统时,由于mipi屏的初始化指令超过预设长度,导致系统启动时进程跑飞。解决方法包括:增大`rk_mipi_screen_init_dt`函数中cmds数组长度,以及调整`struct dcs_cmd`结构体中cmds数组长度至128。如果在调试阶段,可通过更新kernel代码或手动增大指令数组长度来避免问题。
摘要由CSDN通过智能技术生成

CPU:RK3288

系统:Android 5.1

调试 mipi 屏前,先关闭了 uboot 的 logo 显示

rockchip,uboot-logo-on = <0>;

屏调试完成后,打开 uboot 的 logo 显示

rockchip,uboot-logo-on = <1>;

但是开机时,系统竟然进不了 kernel,一直在 uboot 重启,log 如下:

#Boot ver: 2019-07-20#2.30empty serial no.

checkKey

vbus= 1no fuel gauge found

no fuel gauge found

read logo on statefrom dts [1]

pll_src= 0, dclk_hz = 66000000, dclk_div = 6undefined instruction

pc : [<0000009c>] lr : [<05971c18>]

sp :05735938 ip : 0001741c fp : 00019094r10:00000033r9 : 05746a38 r8 : 0000003b

r7 : 0000003c r6 : fa8b95c7 r5 :00000028r4 : 0000000a

r3 : ffffffff r2 :00000004 r1 : 0001741c r0 : 00000000Flags: NzCv IRQs on FIQs off Mode SVC_32

Resetting CPU ...

resetting ...

原因: mipi 屏的指令太长,超出了定义的范围,程序跑飞了。

解决办法:

1、首先找到定义指令的数组,文件路径如下,打开文件搜索 cmds

path:u-boot/drivers/video/screen/lcd_mipi.c

在 rk_mipi_screen_init_dt 函数中定义的 cmds 数组长度只有 20,但是 mipi 屏最长的指令高达 64。

u32 i,cmds[20];

增大 rk_mipi_screen_init_dt 函数中 cmds 数组的长度,要超过 mipi 屏最长的指令长度。

u32 i,cmds[128];

2、编译 uboot 烧录后,系统虽然没有一直重启,但是卡在 uboot,进不了 kernel,提示内存申请失败,log如下

#Boot ver: 2019-07-20#2.30empty serial no.

checkKey

vbus= 1no fuel gauge found

no fuel gauge found

read logo on statefrom dts [1]

pll_src= 0, dclk_hz = 66000000, dclk_div = 6ERROR: [show_resource_image]: Failed to load image:logo.bmp

no fuel gauge foundmalloc forbl levels fail

Hit any key to stop autoboot:0ERROR : memory not allocated

3、找到定义指令数组的结构体,文件路径如下,打开文件搜索 cmds

path:u-boot/drivers/video/transmitter/mipi_dsi.h

cmds 数组定义在 struct dcs_cmd 结构体中,长度只有 32

int cmds[32];

增大 struct dcs_cmd 结构体中 cmds 数组的长度,要超过 mipi 屏最长的指令长度。

u32 i,cmds[128];

4、此时编译烧录,完美解决问题。

注:如果还没有打开 uboot 显示 logo,处在调试 mipi 阶段,程序还是因为 mipi 屏指令长度跑飞,有两种解决办法,如下:

1、从 rochchip 更新代码,最新的 kernel 代码中已经解决指令长度过长问题。

2、如果不想更新代码或者其他原因没办法更新代码,就需要手动增大指令数组的长度,类似与 uboot

kernel/drivers/video/rockchip/screen/lcd_mipi.c

kernel/drivers/video/rockchip/transmitter/mipi_dsi.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值