位置: 编程技术 - 正文

Android系统下基于DSI命令模式的LCM移植与调试(android基于什么操作系统)

编辑:rootadmin

推荐整理分享Android系统下基于DSI命令模式的LCM移植与调试(android基于什么操作系统),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓底层系统,安卓系统基础,安卓底层系统,android系统基于什么内核,安卓系统基础,安卓系统基础,安卓系统基础,安卓系统基于,内容如对您有帮助,希望把文章链接给更多的朋友!

摘要:介绍了为满足智能手机快速发展产生的LCM的MIPI-DSI协议的优点,描述了DSI协议的操作方式,分析了DSI协议定义中的数据包&#;式及其传输方式。设计了硬件电路,详细阐述了Android下LCM驱动程序结构的介绍及具体的参数配置,分析了调试过程中产生问题的原理及解决的思路。

关键词:DSI协议;Android;LCM驱动设计;TE;

中图分类号:TP 文献标识码:A

LCM driverdesign of DSI command mode in Android

Abstract:The advantage of MIPI-DSI is introduced, which is design for the rapiddevelopment of smart phone. The working mode of DSI protocol is described, and theformat and transmission of date packet is analysised. After designing the hardware,the program structure and configuration of LCMare elaborated. The problems met when tuning LCM are analysised and thesolution are given.

Key words: DSIprotocol ; android ; design of LCM driver ;TE;

0 引言

随着智能手机的高速发展,手机内部含有越来越多不同接口的设备,同时又要满足低功耗、高分辨率以及小体积的显示模块的发展,本文探讨新型显示接口技术MIPI-DSI命令模式的LCM驱动设计与调试。一方面,DSI兼容DBI(显示总线接口)、DPI(显示像素接口)、和DCS(显示命令集)。另一方面DSI让手机设备的接口在降低成本、复杂度、功耗以及EMI的同时,也能够增加带宽,从而极大的提高了手机性能。

本文在联发科的MT平台进行LCM(LCD module)驱动的设计,在联发科技提供的Android4.1和内核Linux 3.下进行开发。MTK是一款制程的双核基带芯片,单核的主频可达1.2Ghz,内核Cortex-A7基于ARMv7架构,同时内部有Mali-图形处理器。同时,MT最高支持分辨率P级的屏幕。LCM是台湾奇景光电股份有限公司的3.5寸液晶屏的TFT LCD模组HXd。

1 DSI协议

1.1DSI的连接

DSI协议属于接口通信协议,它是位于显示模组和处理器之间的一种可扩展通道的高速串行接口,其支持一条时钟通道和1-4条数据通道,图1是DSI的物理连接图。DSI根据其兼容的外设的不同架构,具有视频模式(video mode)和命令模式(command mode)这两种操作模式。

图1 物理模式连接图

命令模式要求LCM有显示缓存,主机通过命令间接控制外设。LCM芯片有一个FMARK脚,用来与主控同步,当主机端接收到LCD发出的TE信号,才会开始往FrameBuffer写数据;当LCD接收到来自主控的刷新命令,LCD才开始从显示缓存中读数据。视频模式是指在主机和外设之间用实时像素流的方式传输,并且只能工作在高速传输模式,不需要有显示缓存。本文采用命令模式进行操作。图2命令模式的示意图。

1.2DSI协议数据的结构

DSI协议下数据包的传输如图3示,该协议规定了短数据包和长数据包这两种数据包。图中LPS(low powerstate)表示低功耗模式,SOT为传输开始,SP为短数据包,EOT为传输结束,LP为长数据包,数据包的前后配置了数据低功耗还是高速、长包还是短包的标志位。

____________________

作者简介:庞伟(—),男,江苏连云港人,硕士,研究方向为伺服控制系统;陈机林(—),男,江苏镇江人,硕士,副研究员,研究方向为伺服系统的建模与控制(电液伺服系统与交、直流电气伺服系统)、控制系统的检测与监控和集成化、网络化系统控制与检测。E-mail:@qq.com

图2 命令模式的示意图

图3 MIPI-DSI协议下数据包的传输

图4 DSI短数据包结构

图5 DSI长数据包结构

如图4是只包含4字节数据包头的短数据包结构。分别包含ID(数据标识符),有效数据和ECC(错误检查和纠正)。短数据包可以操作寄存器、传送命令。图5是6-lB 大小的长数据包结构,首先其拥有4B的数据包头:ID、WC(传输数据的大小)和ECC;然后是有效数据和数据包页脚。长数据包可以传输控制命令及大量数据,结合不同的参数和命令可以配置不同长短的长数据包。

1.3DSI协议数据包的传输方式

DSI协议数据包的传输以同步方式在主机和LCD端进行数据传输,其传输模式有LP(Low Power)和HS(High Speed)这两种。其中LP采用数据速率小于Mbps的单端信号进行传输,HS模式下采用数据速率M~1Gbps的低压差分信号。MIPI总线有大量数据传输时使用HS传输,其他时候使用LP传输,两者结合能够让手机降低功耗的同时降低EMI。本文程序就是设计两者结合,在dsi_drv.c的DSI_TXRX_Control函数的定义中,设置tmp_reg.HSTX_CKLP_EN = 1,从而让在LCM每一帧画面之间工作在LP模式。

2硬件电路设计

MT可支持3条数据通道的DSI接口,本设计使用一条通道。硬件原理图如图6所示,有时钟差分信号DSI_CLK&#;和DSI_CLK-,双向数据通道DSI_D0&#;和DSI-D0-。FMARK引脚用来发送TE信号给主机,通知主机往frame buffer写数据。IC_ID引脚用来读取LCM的硬件ID,从而在兼容多个LCM时候根据ID选择正确的驱动程序。

3 LCM驱动的设计

LCM驱动要完成lk和kernel这两部分的设计。而在turkey版本的Android系统中,lk阶段的的LCM驱动程序是到kernel中程序的链接,这样只需要设置kernel中的LCM驱动就可以。系统中需要设置的LCM驱动有关的文件目录如下:

3.1配置文件

mediatekconfigyProjectConfig.mk是配置文件,主要配置如下:

/*分别选择lk、kernel阶段的LCM驱动*/

CUSTOM_LK_LCM= hxd_hvga_dsi_cmd

CUSTOM_KERNEL_LCM= hxd_hvga_dsi_cmd

BOOT_LOGO=hvga 选择需要使用的logo

其中,hxd_hvga_dsi_cmd是添加的驱动所在文件夹的文件名。若想兼容两个不同的LCM,则在上述驱动名称后面加一个空&#;,再添加另一个文件名,系统即可根据读取的LCM的ID自动选择对应的驱动程序。

3.2LCM驱动的声明

mediatekcustomcommonkernellcmmtxx_lcm_list.c用于在lcm_driver_list结构体指针数组中声明hxd_hvga_dsi_cmd_lcm_drv结构体指针。Lcm_driver_list用于将LCM封装的信息传递给DSI控制器层的驱动。

3.3LCM驱动程序的设计

mediatekcustomcommonkernellcmhxd_hvga_dsi_cmdhxd_hvga_dsi_cmd.c

此为LCM的驱动程序,因为不同的LCM有不同的的分辨率、初始化序列、时序等,因此为了使程序有更好的可移植性和可读性,把这些部分分立出来。对于接口相同的LCM,就可以根据不同的型号进行不同

的参数配置,这也是驱动程序分层思想的优点。LCM

图6 硬件电路

的配置主要是使用封装好的三个结构体。按照设置顺序,首先,LCM的初始化序列中的命令参数和初始化参数的配置是利用结构体LCM_setting_table进行封装,然后lcm_init()函数通过DSI的写函dsi_set_cmdq

_V3将参数写入LCM;其次,LCM_PARAMS结构体对DSI控制器的初始化参数进行封装,需要注意的是命令模式下不需要设置VSPW、VBPD、VFPD及HSPW、HBPD、HFPD;最后LCM_DRIVER结构体对LCM的底层调用接口函数指针和名称进行封装,DSI控制器层的驱动会调用这些函数对LCM和DSI控制器进行初始化。其主要部分程序如下设置:

struct LCM_setting_table {

unsigned char cmd; //将要下的命令

unsigned char count;//命令的参数个数

unsigned char para_list[];//参数列表

};

static struct LCM_setting_tablelcm_initialization_setting[] = {

{

/*设置LCM刷新频率HZ*/

Android系统下基于DSI命令模式的LCM移植与调试(android基于什么操作系统)

{0xB0,2,{0x,0x}},

};

static void lcm_init(void)

{

dsi_set_cmdq_V3(lcm_initialization_setting,sizeof(lcm_initialization_setting) / sizeof(struct LCM_setting_table), 1);

}

Typedef struct

{

LCM_TYPE type;

Unsigned int width; //LCM的宽

Unsigned int height; //LCM的高

/*初始化DSI控制器参数的结构体*/

LCM_DSI_PARAMS dsi;

} LCM_PARAMS;

static void lcm_get_params(LCM_PARAMS*params)

{

/*设置LCM工作在DSI模式*/

params->type= LCM_TYPE_DSI; params->width = ;

params->height = ;

/*设置dbi (dsi兼容dbi)在TE工作模式*/

params->dbi.te_mode =

LCM_DBI_TE_MODE_VSYNC_ONLY;

/*设置LCM工作在命令模式*/

params->dsi.mode = CMD_MODE;

/*设置LCM使用一条数据通道传输*/

params->dsi.LANE_NUM = LCM_ONE_LANE;

/*配置DSI的传输频率*/

params->dsi.PLL_CLOCK = ;

}

LCM_DRIVER hxd_hvga_dsi_cmd_lcm_drv =

{

/*驱动的名称*/

.name= "hxd_hvga_dsi_cmd",

/*初始化DSI控制器的参数配置*/

.get_params = lcm_get_params,

.init = lcm_init, //LCM的初始化

/*用于多个LCM兼容时候读取硬件ID*/

.compare_id = lcm_compare_id, };

4 LCM驱动的调试

(1)命令模式会有画面刷新有残留(tearing effect,即TE)的问题。根本原因是主控往FrameBuffer写图像数据的速度与LCM从FrameBuffer读数据(刷屏)的速度不一致造成的,解决此问题必须设置主机端在两个TE周期内刷新完一帧数据。首先,配置LCD的刷新频率略小于主机端往FrameBuffer发送数据频率的2倍,其次通过设置FMARK迟滞几个HSYNC周期再输出TE信号来延迟主控开始写数据到FrameBuffer的时间。通过以上配置,避免FrameBuffer的读写数据产生交叉,从而避免由于刷新频率不一致产生的TearingEffect。本例中在拍照模式时候就会有TE问题,在确认开启TE SYNC功能之后,抓取图7所示的TE信号波形图,检测到TE信号正常送出。由于拍照时候数据传输的特殊性,此时camera相当于是主机端,刷新数据的流程相当于camera—FrameBuffer—LCM。而是camera刷新频率是,LCM刷新频率设置的是,图7是TE信号波形图,可以看出LCM刷新频率过大,在程序中设置LCM刷新频率为Hz,最终解决了问题。

图7 TE信号波形图

(2)在lk阶段读不到LCM的硬件ID的问题。从硬件角度读不到ID有两种可能。一个是BTA function没有成功,导致IC没有送出ID,通过图8可以看到BTA已经完成,总线控制权成功交给了IC;另一个是IC没有正确送出ID,导致读ID失败,图9 可以看到BTA后,IC有将ID=0x正确送出。

图8 BTA function OK

图9 IC送出ID

通过上述排查,可以确认是软件由软件产生的问题,分析程序的日志如下:

DISP/DSI&#;c : 0x,//准备好读数据

/*1c表示 PacketType ,表示数据包长度,短数据包的&#;c*/

DISP/DSI&#; : 0x0cc,

/*读取的长数据包的&#;0x*/

DISP/DSI&#; : 0x3efd,

/*等待软件接收到读到的数据的信号*/

DISP/DSI&#; : 0x,

/*0xD0寄存器已经发出去读到的数据*/

DISP/DSI_CMD&#;(0xc): 0xd,

分析日志可以发现:从寄存器看,CMDQ里面已经读到了数据,但是软件没有收到数据。最终可以知道,lk读不到id问题在于软件延时处理慢,通过增大polling次数解决。在mediatekplatformmtlkdsi_drv.c文件中修改函数DSI_dcs_read_lcm_reg_v2的定义,设置read_timeout_ms= ; 把polling的次数由改为,从而保证读到正确数据,最终解决了问题。

5 结语

本文描述了Android系统下的基于MIPI-DSI协议的LCM的驱动设计,完成了MT平台上的LCM驱动的设计,并且让屏幕能够正常的流畅显示画面。通过以上设计过程的分析,一方面可以明显感觉到Android系统下驱动开发的清晰层次结构与简便的程序设计,Android的短周期的开发速度更是不断推进智能手机的迅速发展(不通),另一方面也能感觉到DSI协议的极大优越性,并且相信以后DSI协议也会有进一步的发展。

如何实现设计师眼里的虚线 在android中如何实现虚线的绘制如果设计师画出的效果图中有直线你会怎么办:很简单,一个view搞定,但是如果是虚线呢:1.直接一张图片;2.自定义view

TCP/IP协议+SOCKET实现的群聊android应用 最近TCP/IP课的老师要求做一个大作业,使用TCP/IP协议实现一个命令行的群聊私聊应用,当时问过,说是可以使用mfc写个界面也能交的,于是我天真的以

Android 系统上抓取数据包方法 最近在做一个项目,有关功能是实现两台手机设备的数据交流。项目中需要分析两台手机互发的数据包,所以要抓取手机的报文进行分析。我尝试了很

标签: android基于什么操作系统

本文链接地址:https://www.jiuchutong.com/biancheng/379676.html 转载请保留说明!

上一篇:android 网络框架 volley(android网络框架okhttp)

下一篇:如何实现设计师眼里的虚线(如何做好设计师)

  • 偷税行为五年后被发现要接受行政处罚吗?
  • 社保局发放的稳岗补贴怎么入账
  • 股权转让分期付款合同范本
  • 销售免税产品是什么意思
  • 公司的班车费用用什么发票
  • 豆粕适用税率
  • 房租收入纳税义务
  • 企业支付宝里面的钱可以随时提到个人银行卡吗
  • 公司车辆交强险需要什么手续
  • 现金不够怎么办
  • 工资手续费可以在发放里扣除吗
  • 营改增后的民办养老院收入是否含增值税收入?
  • 增值税没达到起征标准
  • 对公提回款是什么意思
  • 土地增值税哪些可以抵扣
  • 没领税票会产生税吗
  • 计提印花税会计分录怎么写
  • 什么情况增值税专用发票不能抵扣
  • 居民供暖税率
  • 营业收入现金怎么计算
  • 短期借款有没有上年结转
  • 王者荣耀中墨子的最强出装
  • win11系统优化教程
  • 零售业收入
  • 金蝶软件反年结账怎么弄
  • 收到发票怎么入库
  • incognito.exe
  • php如何提高程序运行效率
  • win10显示未充电
  • linux解压安装
  • 补缴当年增值税和滞纳金如何入账
  • 开立异地银行结息通知
  • antd-vue-pro
  • 股票的红利
  • 职工食堂外包账务怎么做
  • 什么叫财政专户返还方式
  • 汇兑差额如何计算
  • 民办非企业单位登记管理暂行条例
  • lunux删除命令
  • mail命令详解
  • date=date
  • 所得税费用当月计提吗
  • 职工教育经费年底要冲回吗
  • 帝国cms8.0
  • dedecms安装及配置
  • sql server 2008设置角色
  • 给客户的现金奖励会计处理
  • 给员工发放礼品的祝福
  • 发行的企业债券计入什么科目
  • 常用sql脚本
  • mysql基本查询
  • 企业应纳税所得额的计算原则
  • 股东分红要不要纳税?
  • 劳务发票税率最新标准
  • 哪些收入属于免增值税
  • 哪些发票可以提供发票
  • 小企业会计准则主要按照什么计量
  • 产权转移书据纳税义务时间
  • 红酒礼品盒批发
  • 资产减值损失是费用类科目吗
  • ubuntu安装软件没反应
  • Windows自带的游戏怎么删除
  • win10开机出现onekey ghost
  • 使用linux常用命令
  • linux查看文件夹大小
  • 组策略禁用u盘怎么打开
  • win7一进电脑是花屏
  • jquery的使用
  • messenger api
  • 简述ajax
  • js字符串去掉最后两位
  • 使用express
  • asp.net mvc view
  • 深入理解javascript特性
  • js操作对象的方法
  • javascript闭包运行原理
  • jquery event
  • 湖南国家电子税务局手机版
  • 中国税务局官网热线
  • 国家税务总局制服
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设