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: --#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屏指令过长,程序跑飞的更多相关文章
- 记一次stm8l程序跑飞
项目使用stm8l051f3做主控,CC2500做数据接收,不发送. 跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应. 接 ...
- RK3288 mipi屏参数配置文件
RK3288 Android 5.1系统 Linux 3.10 mipi屏参数配置文件所在的路径:kernel/arch/arm/boot/dts/xxx_mipi.dtsi 屏参数配 ...
- RK3288 mipi屏调试流程
CPU:RK3288 系统:Android 5.1 1.修改kernel/arch/arm/configs/rockchip_defconfig,打开mipi屏开关 # CONFIG_LCD_GENE ...
- mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】
本文转载自:http://blog.csdn.net/fulinus/article/details/45071721 平台:瑞芯的rk3288 u-boot版本:u-boot-2014.10 ker ...
- android MIPI屏 导航栏丢失
/**************************************************************************** * android MIPI屏 导航栏丢失 ...
- paip.输入法编程---智能动态上屏码儿长调整--.txt
paip.输入法编程---智能动态上屏码儿长调整--.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...
- whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令用来定位指令的二进制程序.源代码文件和man手册页等相关文件的路径. whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件 ...
- 用Ngen指令加快C#程序的启动速度
用Ngen指令加快C#程序的启动速度 由于C#是使用实时 (JIT) 编译器编译原始程序集.因此第一次运行C#程序(或Dll)时,程序的启动非常慢.为了提高用户的体验,可以用Microsoft的供的本 ...
- .Net程序跑在Linux上
.Net越来越拥抱开源了,今天就试了如何让.Net程序跑在Linux上,果然再无人可以阻挡.Net的脚步了. Linux Disibutaion:Open Logic 7.2 1.Install .N ...
随机推荐
- 【转】HTTP响应状态码参考簿
HTTP响应状态码参考簿 http状态返回代码 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码. http状态返回代码 代码 说明100 (继续) 请求者应当继续提出请求. ...
- 时间都去哪儿了?开源一个统计iPhone上App运行时间和打开次数的小工具【iOS8已失效】
如今,大家每天都有大量时间花在手机上,但是,大家有没有想过自己的时间都花在哪些App上了呢?相信很多人都有这样的需求,不过iOS系统本身并不能显示每个App的运行时间和次数,因此,本人写了这样一个小工 ...
- linux7 上安装mongodb4.2.1操作步骤
MongoDB是一个通用的.基于文档的分布式数据库,它是为现代应用程序开发人员和云时代而构建的.没有数据库能让你更有效率. 1.下载需要的软件包https://www.mongodb.com/down ...
- null和空的区别
python中None和Null的区别 首先了解python对象的概念 python中,万物皆对象,所有的操作都是针对对象的. 那什么是对象?5是一个int对象,‘oblong’是一个str对象,异常 ...
- python ORM模块sqlalchemy的使用
1.安装sqlalchemy pip install sqlalchemy 2.导入必要的包及模块 import sqlalchemy from sqlalchemy.ext.declarative ...
- 【OF框架】使用IDbContextTransaction在框架中对多个实体进行事务操作
准备 引用框架,按照规范建立数据库表及对应实体. 一.事务操作 关键代码 示例代码如下: //插入数据,使用数据库事务,不支持多连接. var dbContext = IoCHelper.Resolv ...
- 用js刷剑指offer(二叉搜索树与双向链表)
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 牛客网链接 js代码 /* function TreeNode(x) { ...
- shell中判断前一个命令是否执行成功
]; then echo "fail" else echo "success" fi 或者 ]; then echo "success" e ...
- python_面向对象——类方法和静态方法
1.类方法不能访问实例变量,只能访问类变量. class Dog(object): name = 'wdc' def __init__(self,name): self.name = name def ...
- 【轉】mantis安裝
一.mantis简介 可以看出,mantis是一个基于php技术的,个人觉得这个系统还是很完善的. 安装mantis,需要安装一下软件: phpMyAdmin 下载地址https://w ...