本文为博主原创文章,转载请注明出处: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: --#2.30
empty serial no.
checkKey
vbus =
no fuel gauge found
no fuel gauge found
read logo on state from dts []
pll_src = , dclk_hz = , dclk_div =
undefined instruction
pc : [<0000009c>] lr : [<05971c18>]
sp : ip : 0001741c fp :
r10: r9 : 05746a38 r8 : 0000003b
r7 : 0000003c r6 : fa8b95c7 r5 : r4 : 0000000a
r3 : ffffffff r2 : r1 : 0001741c r0 :
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[];

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

u32 i,cmds[];

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

#Boot ver: --#2.30
empty serial no.
checkKey
vbus =
no fuel gauge found
no fuel gauge found
read logo on state from dts []
pll_src = , dclk_hz = , dclk_div =
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:
ERROR : memory not allocated

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

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

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

int cmds[];

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

u32 i,cmds[];

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

RK3288 st7703 mipi屏指令过长,程序跑飞的更多相关文章

  1. 记一次stm8l程序跑飞

    项目使用stm8l051f3做主控,CC2500做数据接收,不发送. 跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应. 接 ...

  2. RK3288 mipi屏参数配置文件

    RK3288     Android 5.1系统     Linux 3.10 mipi屏参数配置文件所在的路径:kernel/arch/arm/boot/dts/xxx_mipi.dtsi 屏参数配 ...

  3. RK3288 mipi屏调试流程

    CPU:RK3288 系统:Android 5.1 1.修改kernel/arch/arm/configs/rockchip_defconfig,打开mipi屏开关 # CONFIG_LCD_GENE ...

  4. mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】

    本文转载自:http://blog.csdn.net/fulinus/article/details/45071721 平台:瑞芯的rk3288 u-boot版本:u-boot-2014.10 ker ...

  5. android MIPI屏 导航栏丢失

    /**************************************************************************** * android MIPI屏 导航栏丢失 ...

  6. paip.输入法编程---智能动态上屏码儿长调整--.txt

    paip.输入法编程---智能动态上屏码儿长调整--.txt 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...

  7. whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

    whereis命令用来定位指令的二进制程序.源代码文件和man手册页等相关文件的路径. whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件 ...

  8. 用Ngen指令加快C#程序的启动速度

    用Ngen指令加快C#程序的启动速度 由于C#是使用实时 (JIT) 编译器编译原始程序集.因此第一次运行C#程序(或Dll)时,程序的启动非常慢.为了提高用户的体验,可以用Microsoft的供的本 ...

  9. .Net程序跑在Linux上

    .Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了. Linux Disibutaion:Open Logic 7.2 1.Install .N ...

随机推荐

  1. js实现图片的Blob base64 ArrayBuffer 的各种转换

    一.相关基础知识 构造函数 FileReader() 返回一个新构造的FileReader 事件处理 FileReader.onabort  处理abort事件.该事件在读取操作被中断时触发. Fil ...

  2. iOS NSNotification传递带参数的通知

    普通的通知使用 注册观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNotificat ...

  3. AJAX中错误代码解释以及http中的错误代码解释

    xmlhttp.readyState的值及含义: 0:请求未初始化(还没有调用 open()). 1:请求已经建立,但是还没有发送(还没有调用 send()). 2:请求已发送,正在处理中(通常现在可 ...

  4. C++——虚函数表解析

     转自:https://blog.csdn.net/haoel/article/details/1948051 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型指针指 ...

  5. 每日一题-——最长公共子序列(LCS)与最长公共子串

    最长公共子序列(LCS) 思路: 代码: def LCS(string1,string2): len1 = len(string1) len2 = len(string2) res = [[0 for ...

  6. Linux的desktop文件正常编写赋权,仍无法打开解决办法

    Linux的desktop文件正常编写赋权,仍无法打开解决办法 如果你像我一样遇到了这个问题, 明明都没有问题, desktop文件不显示图标, 双击打开是文本编辑器, 同时也有执行权限 打开却是这样 ...

  7. Crossover 19(Mac运行Windows应用程序)

    怎样才能在Mac上运行Windows应用程序?相信这是很多朋友都在问的问题,今天macdown(mac软件平台)小编为大家带来Crossover 19 Mac版下载,Crossover 19 mac版 ...

  8. MyEclipse修改运行内存

    修改  myeclipse.ini -vmargs -Xmx1768m -XX:MaxPermSize=1320m -XX:ReservedCodeCacheSize=64m -Dosgi.nls.w ...

  9. python中字符串离散化的例子

    ''' 问题:1.假设DataFrame中有一列名为type,其字段中内容为a,b,c 等用,隔开的值,如: type a,b,c a,f,x b,c,e ...统计type中每个类型出现的次数 并绘 ...

  10. 7月新的开始 - Axure学习06 - 母版的使用

    母版的使用 主导航.底部.在很多页面上都是一样的: 如果在每一个页面都写一次的化.话.是非常浪费时间的,为了方便.可以使用母版: 母版可以帮助我们将一些元素重复利用,既可以保证页面的统一性.还可以节省 ...