本文为博主原创文章,转载请注明出处: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. py map reduce filter 总结

    array=[1,3,4,71,2] ret=[] for i in array: ret.append(i**2) print(ret) #如果我们有一万个列表,那么你只能把上面的逻辑定义成函数 d ...

  2. k8s中的网络(较详细汇总)

    目录 一.网络前提条件-网络模型 二.需要解决的网络问题 1.容器和容器之间的网络 2.pod与pod之间的网络 同一台node节点上pod和pod通信 不同node节点上pod和pod通信 3.po ...

  3. 部署Nginx网站服务实现访问状态统计以及访问控制功能

    原文:https://blog.51cto.com/11134648/2130987 Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物 ...

  4. 从OkHttp的源码来看 HTTP

    先来了解一下OkHttp的历史,最早是square公司觉得Android给的HttpClient这块的库不太好用,于是乎做了一层包装,再后来他们包装的这个库被Android官方给收回去了,而Andro ...

  5. 异步委托方式取消BackGroundWorker执行无循环的耗时方法

    边学习边分享,纯属抛砖引玉. 线程的一个好处是异步的执行操作,在winform中,很多耗时操作执行时,为优化用户体验,避免长时间等待,从而运用线程技术异步的执行耗时操作,但不会阻塞主线程. 最近系统很 ...

  6. TODO: Android UI测试 UIAutomator

    前几天跑了一下UIAutomator的demo,忘记写下来了...真的日,有点忘了都. 待填坑

  7. php中危险的木马函数-eval()函数

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值. 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似的函数是loadcode ,loadcode并不立即执行代码,而是返回一个 ...

  8. 配置Cisco网络设备

    了解就行,不用记 电脑管理路由器软件   路由器显示命令: router#show run :显示配置信息 router#show interface :显示接口信息 router#show ip r ...

  9. Java并发包--ConcurrentHashMap原理解析

    ConcurrentHashMap实现原理及源码分析   ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参 ...

  10. msaa mrt load store action unity

    unity buildin renderpipeline 和lightweight rp 对于开了msaa的rt 的load store action设置失效 buildin的时候set render ...