RK3288 st7703 mipi屏指令過長,程序跑飛


本文為博主原創文章,轉載請注明出處:https://www.cnblogs.com/lialong1st/p/11218433.html

 

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.30
empty serial no.
checkKey
vbus = 1
no fuel gauge found
no fuel gauge found
read logo on state from dts [1]
pll_src = 0, dclk_hz = 66000000, dclk_div = 6
undefined instruction
pc : [<0000009c>]          lr : [<05971c18>]
sp : 05735938  ip : 0001741c     fp : 00019094
r10: 00000033  r9 : 05746a38     r8 : 0000003b
r7 : 0000003c  r6 : fa8b95c7     r5 : 00000028  r4 : 0000000a
r3 : ffffffff  r2 : 00000004     r1 : 0001741c  r0 : 00000000
Flags: 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.30
empty serial no.
checkKey
vbus = 1
no fuel gauge found
no fuel gauge found
read logo on state from dts [1]
pll_src = 0, dclk_hz = 66000000, dclk_div = 6
ERROR: [show_resource_image]: Failed to load image:logo.bmp
no fuel gauge found
malloc for bl levels fail
Hit any key to stop autoboot:  0 
ERROR : 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM