支持V2显示芯片LVDS输出的Linux驱动
- 格式:pdf
- 大小:213.15 KB
- 文档页数:3
V-by-One接口信号驱动原理(3840*2160)一、时钟与像素点关系一场:60Hz-16.667ms,2250行(2160行有效)——刷新像素点:3840*2160个/Vertical一行:135KHz-7.407us,(=60Hz*2250),4400=550*8点(3840点=480*8点有效)——刷新像素点:3840个/ HorizontalClock:74.25MHz-13.468ns,(=135KHz*550)——刷新像素点:8个/Clock以上,可参考《附录A:屏规格书信号时序特性》。
二、V-by-One信号传输规则每个Clock(DCLK),V-by-O接口有8对差分对(lane0~lane7)同时传输,每对差分对负责一个Pixel;共8个Pixels一起传输数据。
以上,可参考《附录B:屏规格书每场画面时序》与《附录C:屏规格书单区与双区的驱动方式(每一行)》。
每对差分对同时串行传输4Bytes字节(共32bits,V-by-One传输协议有40bits);(每bit周期0.3367ns=13.468ns/40,2,97G带宽)或按照公式计算:4(byte)×8×(10/8)×(594MHz/8lines)=2,97G以上,可参考《附录D:屏规格书数据传输格式》与《附录E:V-by-O协议文件截图》。
信号最小单位为bit,1bit的数据长度合成眼图(1UI=0.3367ns=336.7ps),可通过眼图测试得具体信号特性;以上,可参考《附录F:V-by-O接口输入端眼图》。
附录C:屏规格书单区与双区的驱动方式(每一行)附录D:屏规格书数据传输格式附录E:V-by-O协议文件截图附录F:V-by-O接口输入端眼图——1bit的数据长度合成眼图(1UI=0.3367ns=336.7ps)附录G:屏规格书V-by-O接口定义LVDS接口信号驱动原理(1920*1080)一、时钟与像素点关系一场:60Hz-16.667ms,1125行(1080行有效)——刷新像素点:1920*1080个/Vertical一行:67.5KHz-14.815us,(=60Hz*1125),1100*2点(1920点=960*2点有效)——刷新像素点:1920个/ HorizontalClock:74.25MHz-13.468ns,(=67.5KHz*1100)——刷新像素点:2个/Clock以上,可参考《附录A:屏规格书信号时序特性》。
小型微型计算机系统Journa l o f Ch i nese C om puter Sy ste m s 2010年10月第10期V o l 31N o .102010收稿日期:2009 08 10 收修改稿日期:2009 10 22 基金项目:国家自然科学基金项目(60703017)资助;国家"八六三"高技术研究发展计划项目(2007AA04Z 230,2007AA01Z114)资助. 作者简介:朱晓静,女,1982年生,博士,助理研究员,主要研究方向为计算机系统结构;褚越杰,女,1980年生,硕士,工程师,主要研究方向为芯片组设计;胡明昌,男,1974年生,博士,高级工程师,主要研究方向为芯片组设计与并行处理;李正民,男,1984年生,硕士研究生,主要研究方向为软件性能优化.支持V2显示芯片LVDS 输出的Linux 驱动朱晓静1,褚越杰1,2,胡明昌1,李正民11(中国科学院计算技术研究所微处理器研究中心,北京100190)2(北京龙芯中科技术服务中心有限公司,北京100190)E m ai:l zhuxiao j @ic.t ac .cn摘 要:采用自主研发的龙芯2F 处理器芯片,设计并实现了ETX 计算机主板.该主板选用V 2显示芯片,支持V GA 与LVD S 两个显示端口同时显示,分辨率达1600 1200./L i nux 显示驱动原始代码已经实现了V 2显示芯片的VGA 显示功能,但对LV D S 显示功能的支持尚不完备.为支持V 2显示芯片的LV D S 端口输出,需要对L inux 显示驱动程序作一系列改进,才能实现上述显示效果.这里介绍在L i nux 驱动源码中,针对V 2显示芯片的LVD S 端口输出所作的一系列改进优化工作.关键词:显示芯片;LV D S ;双路显示;驱动程序;L inux 内核;改进中图分类号:T P331 文献标识码:A 文章编号:1000 1220(2010)10 2105 03L inux Driver for LVDS Out put of V2V ideo ChipZHU X i ao ji ng 1,CHU Y ue jie 1,2,HU M ing chang 1,L I Z heng m i n 11(M icroprocess or Research C e n ter,In stit u te of C o m puti ng Techn ology ,Ch i nese Acade m y of Sci en ces ,B eiji ng 100190,C h i na )2(Loong s on Techno l ogy Co rporati on L i m ited,B eiji ng 100190,C h i na )Abstrac t :B ased on loong s o n 2F pro cesso r ,the aut ho rs deve l oped ETX m o t herboa rd .U si ng V 2v i deo ch i p ,t h is board i nteg ra tesV GA and LV D S paired v i deo outputs ,w h i ch suppo rt VG A and LV D S v ideo po rts d isplay i ng a t t he sa m e ti m e ,w ith reso luti on ra tio reac h i ng 1600 1200.The o rig i na l source co de o f L i nux v i deo dr i v er already i m ple m entsV GA po rt d isplay functi o n ,w h ile do esnt sup por t LVD S po rt display functi on very w el.l T o rea lize LVD S d is p l ay func tion o f V 2v i deo ch i p ,t he autho rs need to m od ify the v ideo dr i v er source code i n L inux kerne.l T his paper enters i n t o de tails o f t he op ti m i za tion pro ce ss fo r LV D S po rt display .K ey word s :v ideo ch i p ;LV D S ;dua l v i ew;driver so urce code ;linux kerne;l m o dif i ca tion1 引 言显卡的输出接口向显示器提供图像信号,是主板与显示器的通信桥梁.显示器与显卡之间的通信接口可以分为两种:模拟接口与数字接口.VG A (V i deo G raphic A rray )模拟接口曾是主流显示接口,通过数模/模数两次转换,实现主板与显示器之间的信号通信.近年来数字接口渐渐开始流行,与平板显示器(f l a t pane l)直连的常用数字接口有LVD S 接口.LV D S(L ow V o ltag e D iffe renti a l S i gna li ng )即低压差分信号传输[4,5],拥有330mV 的低压差分信号(250mV M I N and 450mV M A X )和快速过渡时间.LV D S 接口适合高频信号传输,由于采用差分传输,信号抗干扰能力较强,传输距离比较远.我们设计并实现了一个基于龙芯2f 的ETX 主板,在这个主板上实现了V GA 和LV D S 两种显示接口,可以接两个显示器实现双路同时显示,分辨率可达1600x1200,在国内自主设计的主板中居于先进水平.为支持V 2显示芯片的LVD S 输出,我们对L inux 显示驱动程序作了一系列改进,从而实现上述显示效果.本文主要介绍一下在V 2显示芯片的LVD S输出功能调试中,我们做了哪些比较关键的驱动源码改进.2 硬件平台ETX 主板龙芯2f ETX 主板是本文的硬件平台,在龙芯2f ETX 主表1 ETX 主板的具体组成T able 1 C om po nents o f ETX m o therbo ard600M H z 以上龙芯2F 处理器[1,2];板载64位DDR II 内存颗粒,容量为512M B;512KB FLA SH ROM 用以B I O S 存储;I NTEL F W 82371EB 南桥;XG I V o l ariV 2显示控制器,支持VGA 显示与LVDS 显示,分辨率可达1600 1200,显存容量为32M B;I NTEL GD82559ER 10/100M bp s 网络控制器;W 83977EG AW SUPER I O 控制器;1个百兆网络接口;1个VGA 输出接口;1个LVDS 输出接口;2个U ltra DM A 33I DE 接口;2个U SB1.1标准接口,2个RS232串口;1个并口、1个PS /2鼠标接口和1个PS /2键盘接口;板上有LV D S 与VGA 两种显示接口.ETX 主板的硬件部件小 型 微 型 计 算 机 系 统2010年见表1,具体结构图如图1所示.图1 龙芯2f ETX 主板结构图F i g.1 A rchitec t ure o f t he l o ongson2F ETX m o therboard3 V 2驱动介绍V 2显示芯片一端连接CRT 显示器,通常称为CRT 1,另表2 L i nux 中V 2显示驱动主要函数T able 2 C ritica l functi ons o f t he V 2v i deo dr i ve r in L i nux函数名称作用S iSSeM t ode 调用下面各函数S iSRegIn it 初始化S i S _Pr 结构,为I O 端口地址赋值S iSIn it PC Iet c 设置SR20,SR1E 两个PC I 相关寄存器S iSSet LVDS et c 设置显示的具体接口信息,如是否使用LVD S 接口(S i S _IF_DEF _LVDS )S iS_G et VBT yp e 设置变量S i S _VB Type ,主要用来表明v i deo bri dge 的具体类型与型号S iS_G et VB In fo 为变量S iS _S et Flag 、S iS _VB I n fo 赋值,如SetS i m uScan M od e 、SetInS lave M ode 等,用来说明V i deoB ri dge 与CRT1端口的关系.S iS_G et LCDResI n fo获取显示的分辨率信息,其中S i S _LCDR esIn fo 表示具体的分辨率,S i S _LCD Info 表示V i deoB ri dge 端与CRT1端的分辨率缩放关系.S iS_S et CRT1G roup根据上面获得的信息,从事先定义好的表格索引读出对应的数据,为寄存器赋值,对应分辨率、时钟、显存、图像、颜色以及通用信息,如水平同步采用上升沿或下降沿.S iS_S et CRT2G roup设置CRT 2的具体输出信息,与LVD S 端口输出密切相关.主要涉及数字图像接口寄存器(d igital v i deo i n t erface).从事先定义好的表格中索引读取对应数据,函数中把寄存器分成若干组,第一组主要对应CRT 2的分辨率.LVD S 对应的控制信息比较少,设置好CRT2的分辨率,再根据CRT2与CRT 1的缩放关系调整一下CRT 1的分辨率参数和时钟.如果使用其它更复杂的V i deoB ri dge ,要设置的信息更多.一端与LVD S trans m itter 相连,然后trans m itt e r 连接另外一个显示器,通常称为CRT 2.主板启动的初始阶段,V 2显示芯片从V i deo B IO S 中读取初始化代码实现显示初始化,在L i nux下,V 2显示芯片使用fram e buffe r 进行显示.L i nux 源码中,V 2显示芯片驱动初始化函数主要如表2所示,这里只列出一些与显示芯片的LV D S 初始化比较相关的函数:4 在驱动源码中增加对LVD S 的支持ETX 主板上显示部件采用V 2显示芯片,支持V GA 和LVD S 同时显示,LV D S 显示分辨率与VG A 都达到1600 1200.目前已经在基于龙芯的多块板卡上使用以上显示配置.V 2显示芯片原名S iS315e ,后来被X G I 公司收购,改名为V 2.L inux 的SiS 驱动中原来有相关代码提供对于LVD S 显示的支持,但不够完备,并非对所有的SiS 显示芯片型号都支持,比如对于V 2显示芯片来说,功能还不够完善,在我们修改之前,V 2显示芯片的LVD S 端口没有信号输出.在驱动程序中,SiSSeM t ode 函数是显示芯片寄存器赋值的入口,在这里对VGA 与LVD S 显示相关的若干寄存器组进行赋值,关于这个函数的具体说明详见表2.我们的修改主要是集中在这个函数内部,调整控制变量,使得子函数可以按照要求正确的步骤进行赋值.具体修改内容如下:4.1 根据显示模式自适应地设置时钟频率根据要配置的分辨率设置pane l size ,即CR 寄存器i ndex 0x 36,比如1600 1200对应0xb ,1280 1024对应0x3,1024 768对应0x2,800 600对应0x1.Panel si ze 会影响显示芯片时钟频率的设置.时钟频率的计算公式如下:时钟频率=(行像素数+行消隐点数) (一场行数+消隐行数) 刷新率其中"行像素数" "一场行数"就是我们通常说的显示分辨率,如1600 1200就是行像素数为1600,一场行数是1200,行频值等于(一场行数+消隐行数) 刷新率,场频就等于刷新率.如果S i SSeM t ode 函数的输入参数有分辨率,但时钟频率是固定不变的,容易得到错误的行频和场频.显示器支持的行频和场频是有特定范围的,如果行场频错误,就很可能使得输出信号在显示器上无法显示.在函数中添加了根据分辨率设置时钟频率的语句之后,就消除上述问题.4.2 在显示芯片初始化过程增强LVDS 端口识别S i SSet LVD Se tc 函数的功能是,根据显示芯片的型号不同采用不同的方式,读取CR 37或者类似寄存器,确认显示芯片对于LVD S 等信号是否支持.但这个函数有比较严重的缺陷,它的case 语句的分支中没有V 2显示芯片这个选项,因此这个函数对于V 2显示芯片完全没有提供任何支持.因此我们在这里简单的添加了对于V 2LVD S 显示的识别,即下面这句话:S i S_P r >S i S_IF _D EF _LV D S=1;设置了这个变量后,表示这个显示芯片的CRT 2端支持LVD S 输出,这是一个很重要的标志,会影响后续CRT 2相关的大量寄存器赋值.4.3 修改SiS_VB Info 状态S i S_G e t V B Info 函数的功能是,获取v i deo br i dge 的详细信息,根据显示分辨率和S iS_V BT ype 设置S i S_VB Info,具体的赋值语句为:210610期朱晓静等:支持V2显示芯片LVD S输出的L i nux驱动S iS_P r >S i S_V B Info=Se t S i m uScan M ode|Se t CRT2T oLCD|SetInS l av e M ode;其中SetS i m uScan M ode意思是CRT1和CR T2同时显示相同内容,Set CRT2T oLCD意思是CRT2连接LCD显示,Se t InSlave M ode表示CRT2处于从模式.4.4 1600x1200分辨率的特殊支持主要工作是修改S i S_M o d CRT1CRT C函数的调用条件.我们发现,当显示分辨率是1600x1200时,不能再允许调用SiS_M o d CRT1CR TC函数,这个函数的主要功能是在设置完CRT2分辨率信息之后,再重新修改CRT1的显示分辨率,也就是说通常为了支持LVD S,要重新scali ng,重新配置新的显示分辨率参数,比如CR0、CR2等十几个寄存器,但1600x1200这个分辨率仅此还不够.要想支持分辨率为1600x1200的双路端口图形显示,除了要修改L i nux的S i S驱动以外,也要修改Xw i ndow s图形界面下的SiS驱动.图形界面下S i S驱动源码与L i nux下S i S驱动源码非常相似,修改也基本相同,这里就不再重复详细介绍.添加以上修改后,ETX板可以在CR T1与LV D S两端成功地实现字符与图形显示,支持分辨率包括640x480, 800x600,1024x768,1280x1024,1400x1050,1600x1200等.5 小 结显示芯片的调试是细致而琐碎的工作,涉及到大量寄存器赋值,这些寄存器主要涉及像素设置、时钟、色彩、显存等参数,另外还有一些暂存中间值,每一类都有数十或十几个寄存器.只有这些寄存器都得到正确赋值,才能够让显示芯片正常地工作.以上工作是我们在调试过程中摸索出来的一些有用的结果,也许我们的代码修改对LVD S显示的支持还不成熟完善.这里把我们的使用心得经验提出来,跟所有的显示驱动调试人员分享,希望在众多L inux系统程序员的共同努力之下,进一步完善L i nux源码中的驱动程序,使得LVD S显示可以在L i nux系统中更加通用普及,并且使L i nux操作系统可以得到更好的应用.R eferences:[1]H u W ei w u,Zhang Fu xi n,L i Z u s ong,M i croarch itect u re of theG od s on 2Process or[J].Journal o f Com pu t er Science and T echno logy,2005,20(2):243 249.[2]H u W ei w u,Zhao Ji ye,Zhong Sh i qiang,et a.l I m p l e m en ti ng a1GHz four iss ue ou t of o rder execu ti on m icrop rocess or i n a st and ard cellAS I C m et hodo l ogy[J].J ou r n al o f C om puter Science and Techn ology,2007,22(1):1 14.[3]XG I T M T echno l ogy Inc.Product M ar k eti ng,Vo l ari T M V2D atabook,d atabook_V2_v04[Z].January23,2008.[4]Z eng Xu m i ng.Pers u i ng h igher bandw i d t h:an overvie w of paneld is p l ay i n terface standards[J].G l obal E l ectron ics C hina,2008,(9).[5]M arc M cConnaughey.A digital i n terface standard for d is p l ays[J].Advan ced D isplay,2000(2):9 15.附中文参考文献:[4]曾旭明.追求更高带宽:平板显示器接口标准概览[J].世界电子元器件,2008,9.[5]M cCon.,M刘树杞.显示器数字接口标准[J].现代显示,2000(2):9 15.2107。
linux adc驱动(基于三星通用adc api)linux adc驱动(基于三星通用adc api)硬件平台: 基于讯为开发板itop4412 scp 1G\驱动说明:本驱动基于三星提供的通用api函数来实现的,具体adc寄存器操作有三星公司实现,我们要做的是调用三星公司提供的api来实现我们自己的功能。
下面对相关的结构体和api 函数进行解析[cpp] view plain copystruct s3c_adc_client {struct platform_device *pdev;struct list_head pend;wait_queue_head_t *wait;unsigned int nr_samples;int result;unsigned char is_ts;unsigned char channel;void (*select_cb)(struct s3c_adc_client *c, unsigned selected);void (*convert_cb)(struct s3c_adc_client *c,unsigned val1, unsigned val2,unsigned *samples_left);};一个具体s3c_adc_client结构体来描述一个具体的客户(一个具体的驱动)2.我们需要在驱动中构建这个驱动,并且注册到linux的内核[cpp] view plain copystruct s3c_adc_client *s3c_adc_register(struct platform_device *pdev,void (*select)(struct s3c_adc_client *client,unsigned int selected),void (*conv)(struct s3c_adc_client *client,unsigned d0, unsigned d1,unsigned *samples_left),。
AN13275如何在新的 iMX8/8X 板上启用 Linux BSP L5.4Rev. 1 — 2023年5月26日应用笔记如何在新的 iMX8/8X 板上启用 Linux BSP L5.4 1 介绍1.1 目标本应用笔记介绍了在新的自定义 i.MX 8/8X 板上启用标准 Linux BSP L5.4 的一般过程,帮助用户快速移植标准Linux BSP 版本代码到自定义 i.MX 8/8X 板上,并提示用户注意那些需要修改的关键部分。
1.2 示例板本应用笔记使用 i.MX 8QXP 汽车参考板作为示例板,因为标准的 Linux BSP 版本不支持该参考板。
更多详细信息,请联系恩智浦代表。
该板的硬件设计基于 i.MX8QXP MEK 板,但有如下变化:•i.MX 8QXP C0 芯片•三星汽车级 LPDDR4 和 eMMC5.1•MIPI-CSI,配备 NVP6324 汽车 AHD 解决方案•LVDS 显示器,配备 TI DS90UB947/948 Serdes(通过FPD Link III),用于汽车应用•MIPI-DSI 显示器,配备 Maxim 96752/96755 Serdes(通过 GMSL2),用于汽车应用•恩智浦 TJA1101 汽车 100 Mbps 以太网 PHY•用于 Carplay/AA 的 USB3.0 host 和用于调试的 USB2.0 OTG图 1. i.MX 8QXP 汽车参考板1.3 Linux BSP 版本本应用笔记以 L5.4.47_2.2.0 Linux BSP 版本为例。
如需查询所有 i.MX Linux BSP 的版本,请参见 Embedded Linux for i.MX Applications Processors。
如何在新的 iMX8/8X 板上启用 Linux BSP L5.4以下章节介绍了移植SCFW、ATF、U-Boot 和 Linux 内核的一般过程。
支持V2显示芯片LVDS输出的Linux驱动
随着技术的不断发展,LVDS(低电压差分信号)芯片的应用
已越来越广泛,尤其是在显示器驱动领域。
在Linux操作系统下,如何支持LVDS显示芯片的输出是一个重要的问题。
本
文将介绍如何编写支持V2显示芯片LVDS输出的Linux驱动。
首先,需要了解LVDS显示芯片的工作原理。
LVDS是一种高
速传输信号,通过将信号分为两个相反的信号进行传输,从而降低了信号传输过程中出现噪声的可能性,提高了数据传输的稳定性和可靠性。
支持LVDS输出的显示芯片也是如此,它
通过将图像数据分为两个信号进行传输,从而实现稳定和清晰的显示效果。
接下来,我们需要了解如何编写LVDS输出的Linux驱动。
首先,需要按照LVDS输出的协议规范,对驱动程序进行开发。
其中,需要定义LVDS输出的格式、像素时钟频率等。
根据LVDS输出信号的特性,编写对应的驱动程序,实现LVDS输
出数据的捕捉、处理和传输。
在编写完驱动程序后,需要进行系统的配置和调试。
首先,需要将驱动程序加载到Linux内核中,并配置相关参数,如显示
器分辨率、像素时钟频率等。
同时,还需要进行各种测试,如显示器的测试、图像质量的测试等,以保证LVDS输出的稳
定性和可靠性。
总结而言,支持V2显示芯片LVDS输出的Linux驱动需要按
照协议规范进行开发,实现数据的捕捉、处理和传输,并进行
系统的配置和调试工作。
这样才能满足现代高速传输信号的需求,提高显示效果的稳定性和可靠性,从而更好的满足用户的需求。
Linux视频设备驱动编程(v4l2编程)一.什么是video4linuxVideo4linux2(简称V4L2),是linux中关于视频设备的内核驱动。
在Linux 中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下。
二、一般操作流程(视频设备):1. 打开设备文件。
int fd=open(”/dev/video0″,O_RDWR);2. 取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。
VIDIOC_QUERYCAP,struct v4l2_capability3. 选择视频输入,一个视频设备可以有多个视频输入。
VIDIOC_S_INPUT,struct v4l2_input4. 设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式个包括宽度和高度等。
VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format5. 向驱动申请帧缓冲,一般不超过5个。
struct v4l2_requestbuffers6. 将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。
mmap7. 将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer8. 开始视频的采集。
VIDIOC_STREAMON9. 出队列以取得已采集数据的帧缓冲,取得原始采集数据。
VIDIOC_DQBUF10. 将缓冲重新入队列尾,这样可以循环采集。
VIDIOC_QBUF11. 停止视频的采集。
VIDIOC_STREAMOFF12. 关闭视频设备。
close(fd);三、常用的结构体(参见/usr/include/linux/videodev2.h):struct v4l2_requestbuffers reqbufs;//向驱动申请帧缓冲的请求,里面包含申请的个数struct v4l2_capability cap;//这个设备的功能,比如是否是视频输入设备struct v4l2_input input; //视频输入struct v4l2_standard std;//视频的制式,比如PAL,NTSCstruct v4l2_format fmt;//帧的格式,比如宽度,高度等struct v4l2_buffer buf;//代表驱动中的一帧v4l2_std_id stdid;//视频制式,例如:V4L2_STD_PAL_Bstruct v4l2_queryctrl query;//查询的控制struct v4l2_control control;//具体控制的值下面具体说明开发流程(网上找的啦,也在学习么)打开视频设备在V4L2中,视频设备被看做一个文件。
Linux之PWM驱动1.概述本文主要讲述了(Linux)的PWM驱动框架、实现方法、驱动添加方法和调试方法。
示例Linux内核版本:6.2.8。
2.原理PWM是Pulse-Width Modulation的简称,中文译作脉冲宽度调制。
作为一种调制技术,PWM的原理是通过调整周期性波形的高电平时间宽度,从而改变有效(信号)的占空比,实现对设备的供电控制。
PWM技术的常见应用领域包括屏幕背光亮度调节、(电机)转速控制和风扇转速控制等。
Linux内核支持PWM驱动框架,该驱动框架采用结构体数据类型对PWM控制器和PWM信号进行了抽象,提供了PWM驱动框架核心代码和sysfs接口代码。
PWM驱动(开发者)可以方便地利用该驱动框架,添加特定PWM控制器的驱动程序,并使用sysfs接口进行功能调试。
3.驱动框架及实现方法3.1驱动框架源码PWM驱动框架的主要源码:./include/linux/pwm.h //PWM驱动框架头文件./drivers/pwm/core.c//PWM驱动框架核心代码./drivers/pwm/sysfs.c//PWM驱动框架sysfs接口代码3.2驱动框架数据结构(1)struct pwm_chip结构体,表示PWM控制器。
驱动开发者可以根据需要设计专用的PWM控制器结构体,以struct pwm_chip结构体作为一个成员变量,下面是一个示例,在./drivers/pwm/pwm-ab8500.c驱动中定义。
(2)struct pwm_ops结构体,包括PWM控制器的操作函数。
其中应该由驱动开发者实现的2个基础函数为apply函数和get_state 函数;apply函数用于配置PWM控制器,包括配置PWM信号的使能状态、周期、占空比、极性等;get_state函数用于在注册PWM控制器时获取指定PWM通道信号的初始状态,包括使能状态、周期、占空比、极性等。
(3)struct pwm_device结构体,表示PWM控制器输出的PWM 信号。
二次雷达显控终端的设计与实现李红兵【摘要】In order to satisfy the increasing demand of modern secondary radar to the display and control terminal with high performance, this paper designs and realizes display and control terminal of universal radar based on CPU subcard.For this display and control terminal, the hardware integrates several communication interfaces such as gigabit Ethernet, RapidIO bus interface, USB man-machine interactive interface, LVDS video output, etc., and the software development uses Qt tool under Linux operating system, the graphice human-computer interaction and flight path display are realized, and the display interface is friendly and attractive.Finally, the actual test verifies the correctness of the method, and the display terminal with high performance is successfully applied to a certain secondary radar.%为了满足现代二次雷达对高性能显控终端日益增长的需求,设计与实现了基于CPU子卡的通用雷达显控终端,该显控终端硬件集成千兆以太网、RapidIO总线通信接口、USB人机交互接口和LVDS视频输出等功能;软件开发在Linux操作系统上,通过采用Qt实现了图形化人机交互、图表、航迹显示,显示界面友好、美观.最后通过实际测试,验证了工作的正确性,并将此应用于某型二次雷达中.【期刊名称】《舰船电子对抗》【年(卷),期】2019(042)001【总页数】5页(P112-116)【关键词】二次雷达;CPU子卡;显控终端;Linux;人机交互【作者】李红兵【作者单位】中国电子科技集团公司第十研究所, 四川成都 610036【正文语种】中文【中图分类】TN957.70 引言显控终端是二次雷达信息输出和人机交互的重要设备,主要完成雷达系统的参数设置、图表和航迹显示、工作状态检测、参数查询等功能[1]。
嵌入式Linux系统中图片解码和显示的硬件加速支持嵌入式系统的应用范围日益扩大,特别是在自动驾驶、智能家居和物联网等领域中的应用越来越广泛。
而在这些应用中,图片解码和显示是非常重要的功能之一。
然而,由于嵌入式平台资源有限,软件解码和显示图片的效率通常比较低。
为了提高嵌入式Linux系统中图片解码和显示的效率,硬件加速支持成为一种有效的解决方案。
一、硬件加速的基本原理嵌入式Linux系统中的硬件加速通常是通过使用专门的硬件来辅助完成图片解码和显示的功能。
这些硬件可以是专用的图像处理单元(GPU)、视频编解码器(VPU)或者显示控制器(Display Controller)。
它们在硬件级别上实现了对图片的解码和显示,相比由软件来完成的方式,可以大大提高效率和性能。
二、图像解码的硬件加速在嵌入式Linux系统中,常用的图片格式包括JPEG、PNG、BMP 等。
普通的软件解码方式往往需要消耗大量的CPU资源,而使用硬件加速可以将解码任务交给专门的硬件来完成,从而大幅度降低CPU的负荷。
硬件加速的实现方式有多种,可以通过访问硬件解码器的API,或者使用硬件解码模块提供的库函数。
具体的实现方式需要根据不同的硬件平台和解码器来确定。
三、图像显示的硬件加速在图片解码完成后,将图片显示到屏幕上也是一个关键的步骤。
在嵌入式Linux系统中,可以使用硬件加速技术来提高图像显示的效率和质量。
大部分嵌入式平台都提供了硬件加速的显示接口,如HDMI、LVDS等。
通过使用硬件加速显示接口,可以避免使用软件渲染的方式,从而提高显示效果和响应速度。
四、硬件加速支持的优势使用硬件加速来支持嵌入式Linux系统中的图片解码和显示有以下几个优势:1. 提高系统整体性能:通过将复杂的解码和显示任务交给专门的硬件来完成,能够降低CPU的负荷,从而提高系统的整体性能和响应速度。
2. 减少功耗:由于硬件加速能够高效地完成图片解码和显示任务,相比软件解码方式,在相同的工作负载下,能够减少系统功耗,延长设备的续航时间。
MS90C385SN75LVDS83十通道LVDS发送芯片DS90C365说明:4通道LVDS发送芯片主要用于驱动6bit液晶面板。
使用四通道LVDS发送芯片可以构成单路6bit LVDS接自电路和奇/偶双路6bit LVDS接口电路。
五通道LVDS发送芯片DS90C385十通道LVDS发送芯片DS90C3871.LVDS输出接口概述液晶显示器驱动板输出的数字信号中,除了包括RGB数据信号外,还包括行同步、场同步、像素时钟等信号,其中像素时钟信号的最高频率可超过28MHz。
采用TTL接口,数据传输速率不高,传输距离较短,且抗电磁干扰(EMI)能力也比较差,会对RGB数据造成一定的影响;另外,TTL多路数据信号采用排线的方式来传送,整个排线数量达几十路,不但连接不便,而且不适合超薄化的趋势。
采用LVDS输出接口传输数据,可以使这些问题迎刃而解,实现数据的高速率、低噪声、远距离、高准确度的传输。
那么,什么是LVDS输出接口呢?LVDS,即Low Voltage Differential Signaling,是一种低压差分信号技术接口。
它是美国NS公司(美国国家半导体公司)为克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。
LVDS输出接口利用非常低的电压摆幅(约350mV)在两条PCB走线或一对平衡电缆上通过差分进行数据的传输,即低压差分信号传输。
采用LVDS输出接口,可以使得信号在差分PCB线或平衡电缆上以几百Mbit/s的速率传输,由于采用低压和低电流驱动方式,因此,实现了低噪声和低功耗。
目前,LVDS输出接口在17in及以上液晶显示器中得到了广泛的应用。
2.LVDS接口电路的组成在液晶显示器中,LVDS接口电路包括两部分,即驱动板侧的LVDS输出接口电路(LVDS 发送器)和液晶面板侧的LVDS输入接口电路(LVDS接收器)。
LVDS发送器将驱动板主控芯片输出的17L电平并行RGB数据信号和控制信号转换成低电压串行LVDS信号,然后通过驱动板与液晶面板之间的柔性电缆(排线)将信号传送到液晶面板侧的LVDS接收器,LVDS接收器再将串行信号转换为TTL电平的并行信号,送往液晶屏时序控制与行列驱动电路。
小型微型计算机系统Journa l o f Ch i nese C om puter Sy ste m s 2010年10月第10期V o l 31N o .102010收稿日期:2009 08 10 收修改稿日期:2009 10 22 基金项目:国家自然科学基金项目(60703017)资助;国家"八六三"高技术研究发展计划项目(2007AA04Z 230,2007AA01Z114)资助. 作者简介:朱晓静,女,1982年生,博士,助理研究员,主要研究方向为计算机系统结构;褚越杰,女,1980年生,硕士,工程师,主要研究方向为芯片组设计;胡明昌,男,1974年生,博士,高级工程师,主要研究方向为芯片组设计与并行处理;李正民,男,1984年生,硕士研究生,主要研究方向为软件性能优化.支持V2显示芯片LVDS 输出的Linux 驱动朱晓静1,褚越杰1,2,胡明昌1,李正民11(中国科学院计算技术研究所微处理器研究中心,北京100190)2(北京龙芯中科技术服务中心有限公司,北京100190)E m ai:l zhuxiao j @ic.t ac .cn摘 要:采用自主研发的龙芯2F 处理器芯片,设计并实现了ETX 计算机主板.该主板选用V 2显示芯片,支持V GA 与LVD S 两个显示端口同时显示,分辨率达1600 1200./L i nux 显示驱动原始代码已经实现了V 2显示芯片的VGA 显示功能,但对LV D S 显示功能的支持尚不完备.为支持V 2显示芯片的LV D S 端口输出,需要对L inux 显示驱动程序作一系列改进,才能实现上述显示效果.这里介绍在L i nux 驱动源码中,针对V 2显示芯片的LVD S 端口输出所作的一系列改进优化工作.关键词:显示芯片;LV D S ;双路显示;驱动程序;L inux 内核;改进中图分类号:T P331 文献标识码:A 文章编号:1000 1220(2010)10 2105 03L inux Driver for LVDS Out put of V2V ideo ChipZHU X i ao ji ng 1,CHU Y ue jie 1,2,HU M ing chang 1,L I Z heng m i n 11(M icroprocess or Research C e n ter,In stit u te of C o m puti ng Techn ology ,Ch i nese Acade m y of Sci en ces ,B eiji ng 100190,C h i na )2(Loong s on Techno l ogy Co rporati on L i m ited,B eiji ng 100190,C h i na )Abstrac t :B ased on loong s o n 2F pro cesso r ,the aut ho rs deve l oped ETX m o t herboa rd .U si ng V 2v i deo ch i p ,t h is board i nteg ra tesV GA and LV D S paired v i deo outputs ,w h i ch suppo rt VG A and LV D S v ideo po rts d isplay i ng a t t he sa m e ti m e ,w ith reso luti on ra tio reac h i ng 1600 1200.The o rig i na l source co de o f L i nux v i deo dr i v er already i m ple m entsV GA po rt d isplay functi o n ,w h ile do esnt sup por t LVD S po rt display functi on very w el.l T o rea lize LVD S d is p l ay func tion o f V 2v i deo ch i p ,t he autho rs need to m od ify the v ideo dr i v er source code i n L inux kerne.l T his paper enters i n t o de tails o f t he op ti m i za tion pro ce ss fo r LV D S po rt display .K ey word s :v ideo ch i p ;LV D S ;dua l v i ew;driver so urce code ;linux kerne;l m o dif i ca tion1 引 言显卡的输出接口向显示器提供图像信号,是主板与显示器的通信桥梁.显示器与显卡之间的通信接口可以分为两种:模拟接口与数字接口.VG A (V i deo G raphic A rray )模拟接口曾是主流显示接口,通过数模/模数两次转换,实现主板与显示器之间的信号通信.近年来数字接口渐渐开始流行,与平板显示器(f l a t pane l)直连的常用数字接口有LVD S 接口.LV D S(L ow V o ltag e D iffe renti a l S i gna li ng )即低压差分信号传输[4,5],拥有330mV 的低压差分信号(250mV M I N and 450mV M A X )和快速过渡时间.LV D S 接口适合高频信号传输,由于采用差分传输,信号抗干扰能力较强,传输距离比较远.我们设计并实现了一个基于龙芯2f 的ETX 主板,在这个主板上实现了V GA 和LV D S 两种显示接口,可以接两个显示器实现双路同时显示,分辨率可达1600x1200,在国内自主设计的主板中居于先进水平.为支持V 2显示芯片的LVD S 输出,我们对L inux 显示驱动程序作了一系列改进,从而实现上述显示效果.本文主要介绍一下在V 2显示芯片的LVD S输出功能调试中,我们做了哪些比较关键的驱动源码改进.2 硬件平台ETX 主板龙芯2f ETX 主板是本文的硬件平台,在龙芯2f ETX 主表1 ETX 主板的具体组成T able 1 C om po nents o f ETX m o therbo ard600M H z 以上龙芯2F 处理器[1,2];板载64位DDR II 内存颗粒,容量为512M B;512KB FLA SH ROM 用以B I O S 存储;I NTEL F W 82371EB 南桥;XG I V o l ariV 2显示控制器,支持VGA 显示与LVDS 显示,分辨率可达1600 1200,显存容量为32M B;I NTEL GD82559ER 10/100M bp s 网络控制器;W 83977EG AW SUPER I O 控制器;1个百兆网络接口;1个VGA 输出接口;1个LVDS 输出接口;2个U ltra DM A 33I DE 接口;2个U SB1.1标准接口,2个RS232串口;1个并口、1个PS /2鼠标接口和1个PS /2键盘接口;板上有LV D S 与VGA 两种显示接口.ETX 主板的硬件部件小 型 微 型 计 算 机 系 统2010年见表1,具体结构图如图1所示.图1 龙芯2f ETX 主板结构图F i g.1 A rchitec t ure o f t he l o ongson2F ETX m o therboard3 V 2驱动介绍V 2显示芯片一端连接CRT 显示器,通常称为CRT 1,另表2 L i nux 中V 2显示驱动主要函数T able 2 C ritica l functi ons o f t he V 2v i deo dr i ve r in L i nux函数名称作用S iSSeM t ode 调用下面各函数S iSRegIn it 初始化S i S _Pr 结构,为I O 端口地址赋值S iSIn it PC Iet c 设置SR20,SR1E 两个PC I 相关寄存器S iSSet LVDS et c 设置显示的具体接口信息,如是否使用LVD S 接口(S i S _IF_DEF _LVDS )S iS_G et VBT yp e 设置变量S i S _VB Type ,主要用来表明v i deo bri dge 的具体类型与型号S iS_G et VB In fo 为变量S iS _S et Flag 、S iS _VB I n fo 赋值,如SetS i m uScan M od e 、SetInS lave M ode 等,用来说明V i deoB ri dge 与CRT1端口的关系.S iS_G et LCDResI n fo获取显示的分辨率信息,其中S i S _LCDR esIn fo 表示具体的分辨率,S i S _LCD Info 表示V i deoB ri dge 端与CRT1端的分辨率缩放关系.S iS_S et CRT1G roup根据上面获得的信息,从事先定义好的表格索引读出对应的数据,为寄存器赋值,对应分辨率、时钟、显存、图像、颜色以及通用信息,如水平同步采用上升沿或下降沿.S iS_S et CRT2G roup设置CRT 2的具体输出信息,与LVD S 端口输出密切相关.主要涉及数字图像接口寄存器(d igital v i deo i n t erface).从事先定义好的表格中索引读取对应数据,函数中把寄存器分成若干组,第一组主要对应CRT 2的分辨率.LVD S 对应的控制信息比较少,设置好CRT2的分辨率,再根据CRT2与CRT 1的缩放关系调整一下CRT 1的分辨率参数和时钟.如果使用其它更复杂的V i deoB ri dge ,要设置的信息更多.一端与LVD S trans m itter 相连,然后trans m itt e r 连接另外一个显示器,通常称为CRT 2.主板启动的初始阶段,V 2显示芯片从V i deo B IO S 中读取初始化代码实现显示初始化,在L i nux下,V 2显示芯片使用fram e buffe r 进行显示.L i nux 源码中,V 2显示芯片驱动初始化函数主要如表2所示,这里只列出一些与显示芯片的LV D S 初始化比较相关的函数:4 在驱动源码中增加对LVD S 的支持ETX 主板上显示部件采用V 2显示芯片,支持V GA 和LVD S 同时显示,LV D S 显示分辨率与VG A 都达到1600 1200.目前已经在基于龙芯的多块板卡上使用以上显示配置.V 2显示芯片原名S iS315e ,后来被X G I 公司收购,改名为V 2.L inux 的SiS 驱动中原来有相关代码提供对于LVD S 显示的支持,但不够完备,并非对所有的SiS 显示芯片型号都支持,比如对于V 2显示芯片来说,功能还不够完善,在我们修改之前,V 2显示芯片的LVD S 端口没有信号输出.在驱动程序中,SiSSeM t ode 函数是显示芯片寄存器赋值的入口,在这里对VGA 与LVD S 显示相关的若干寄存器组进行赋值,关于这个函数的具体说明详见表2.我们的修改主要是集中在这个函数内部,调整控制变量,使得子函数可以按照要求正确的步骤进行赋值.具体修改内容如下:4.1 根据显示模式自适应地设置时钟频率根据要配置的分辨率设置pane l size ,即CR 寄存器i ndex 0x 36,比如1600 1200对应0xb ,1280 1024对应0x3,1024 768对应0x2,800 600对应0x1.Panel si ze 会影响显示芯片时钟频率的设置.时钟频率的计算公式如下:时钟频率=(行像素数+行消隐点数) (一场行数+消隐行数) 刷新率其中"行像素数" "一场行数"就是我们通常说的显示分辨率,如1600 1200就是行像素数为1600,一场行数是1200,行频值等于(一场行数+消隐行数) 刷新率,场频就等于刷新率.如果S i SSeM t ode 函数的输入参数有分辨率,但时钟频率是固定不变的,容易得到错误的行频和场频.显示器支持的行频和场频是有特定范围的,如果行场频错误,就很可能使得输出信号在显示器上无法显示.在函数中添加了根据分辨率设置时钟频率的语句之后,就消除上述问题.4.2 在显示芯片初始化过程增强LVDS 端口识别S i SSet LVD Se tc 函数的功能是,根据显示芯片的型号不同采用不同的方式,读取CR 37或者类似寄存器,确认显示芯片对于LVD S 等信号是否支持.但这个函数有比较严重的缺陷,它的case 语句的分支中没有V 2显示芯片这个选项,因此这个函数对于V 2显示芯片完全没有提供任何支持.因此我们在这里简单的添加了对于V 2LVD S 显示的识别,即下面这句话:S i S_P r >S i S_IF _D EF _LV D S=1;设置了这个变量后,表示这个显示芯片的CRT 2端支持LVD S 输出,这是一个很重要的标志,会影响后续CRT 2相关的大量寄存器赋值.4.3 修改SiS_VB Info 状态S i S_G e t V B Info 函数的功能是,获取v i deo br i dge 的详细信息,根据显示分辨率和S iS_V BT ype 设置S i S_VB Info,具体的赋值语句为:210610期朱晓静等:支持V2显示芯片LVD S输出的L i nux驱动S iS_P r >S i S_V B Info=Se t S i m uScan M ode|Se t CRT2T oLCD|SetInS l av e M ode;其中SetS i m uScan M ode意思是CRT1和CR T2同时显示相同内容,Set CRT2T oLCD意思是CRT2连接LCD显示,Se t InSlave M ode表示CRT2处于从模式.4.4 1600x1200分辨率的特殊支持主要工作是修改S i S_M o d CRT1CRT C函数的调用条件.我们发现,当显示分辨率是1600x1200时,不能再允许调用SiS_M o d CRT1CR TC函数,这个函数的主要功能是在设置完CRT2分辨率信息之后,再重新修改CRT1的显示分辨率,也就是说通常为了支持LVD S,要重新scali ng,重新配置新的显示分辨率参数,比如CR0、CR2等十几个寄存器,但1600x1200这个分辨率仅此还不够.要想支持分辨率为1600x1200的双路端口图形显示,除了要修改L i nux的S i S驱动以外,也要修改Xw i ndow s图形界面下的SiS驱动.图形界面下S i S驱动源码与L i nux下S i S驱动源码非常相似,修改也基本相同,这里就不再重复详细介绍.添加以上修改后,ETX板可以在CR T1与LV D S两端成功地实现字符与图形显示,支持分辨率包括640x480, 800x600,1024x768,1280x1024,1400x1050,1600x1200等.5 小 结显示芯片的调试是细致而琐碎的工作,涉及到大量寄存器赋值,这些寄存器主要涉及像素设置、时钟、色彩、显存等参数,另外还有一些暂存中间值,每一类都有数十或十几个寄存器.只有这些寄存器都得到正确赋值,才能够让显示芯片正常地工作.以上工作是我们在调试过程中摸索出来的一些有用的结果,也许我们的代码修改对LVD S显示的支持还不成熟完善.这里把我们的使用心得经验提出来,跟所有的显示驱动调试人员分享,希望在众多L inux系统程序员的共同努力之下,进一步完善L i nux源码中的驱动程序,使得LVD S显示可以在L i nux系统中更加通用普及,并且使L i nux操作系统可以得到更好的应用.R eferences:[1]H u W ei w u,Zhang Fu xi n,L i Z u s ong,M i croarch itect u re of theG od s on 2Process or[J].Journal o f Com pu t er Science and T echno logy,2005,20(2):243 249.[2]H u W ei w u,Zhao Ji ye,Zhong Sh i qiang,et a.l I m p l e m en ti ng a1GHz four iss ue ou t of o rder execu ti on m icrop rocess or i n a st and ard cellAS I C m et hodo l ogy[J].J ou r n al o f C om puter Science and Techn ology,2007,22(1):1 14.[3]XG I T M T echno l ogy Inc.Product M ar k eti ng,Vo l ari T M V2D atabook,d atabook_V2_v04[Z].January23,2008.[4]Z eng Xu m i ng.Pers u i ng h igher bandw i d t h:an overvie w of paneld is p l ay i n terface standards[J].G l obal E l ectron ics C hina,2008,(9).[5]M arc M cConnaughey.A digital i n terface standard for d is p l ays[J].Advan ced D isplay,2000(2):9 15.附中文参考文献:[4]曾旭明.追求更高带宽:平板显示器接口标准概览[J].世界电子元器件,2008,9.[5]M cCon.,M刘树杞.显示器数字接口标准[J].现代显示,2000(2):9 15.2107。