Ctp驱动的移植修改 v1.0

合集下载

CTP各流程软件优缺点

CTP各流程软件优缺点
各流程的优缺点
网屏汇智 优点:操作简单,容易上手!最新版本也支持中文标记,非常的方便。热文件夹工作对单张海报类的作业非常适用! 缺点:拼散版功能太弱,散版模版非常繁琐!拆双P文件功能太差,容易出问题!陷印功能不是怎么强大,对K100叠印处理不是很理想!
方正畅流 单位一直用这个报业版· 优点:写好脚本 自动化程式不错 和其他方正软件配合使用效率更高 适合大的局域网式集团出版使用 缺点:封闭 相对的功能偏少 太多的文件都给加密了 不能多任务同时进行 很多功能就是鸡肋,有些大广告加完网后就莫名其妙的缺色了
崭新印通: 它只是一个排版和下1 BIT TIF的软件,算不上是流程,它只能与其他流程一个RIP才能组合成一个生产流程,操作比较繁琐,
APOGEEX爱克发 优点:界面比较直观点,拼版相对比较灵活 缺点:要多个服务器组成,不能是单个服务器,管理比较难,多任务不能同时进行,TRAP功能不好。
印能捷——最完美的印前流程 印能捷是基于PDF的印前工作流程管理系统,在运用PDF的过程中,它将印前系列工作优化组织起来.减少复杂的手工工艺,再现印前工艺的精捍。印能捷可以完全自动处理、管理和完成文 件转换、优化、陷印、色彩管理、打样、拼大版、软片及PS印版输出和存档的任务。使印前工艺更加紧凑从而提高生产效益,缩短工艺时间。 印能捷的工作站程序,能够在不影响服务器的情况下,在多种系统环境中运用自如,而利用网络组成的工作站分散式操作。使处理输出到数字成像设备的关键流程。印能捷可扩充到多级服 务器和多用户环境中。印能捷JTP模块可按需搭配。并能自动控制资源平衡,确保系统始终保持最大的处理能力。 印能捷基于AdobeExtreme技术,它通过工作流程处理计划和工作传票处理器完成对作业的控制和管理。 印能捷包含一个ORACLE数据库,智能地存储着作业状态目前的处理进度和异常。 使用印能捷,可保证整个印刷厂的工艺能轻松定位在指定的服务器上,印能捷目前是克里奥的主流软件流程。能保证在客户正常工作的情况下,进行无缝智能升级和远程故障诊断等系列工 作。 真正的PDF工作流程 在各商家针对PDF大战的时候,为了体现自己的技术成果,多少在PDF的结构中加入了一些自己的东西,无法用通用的ADOBE ACROBAT进行处理,而克里奥的PRINERGY,运用PDF和PJTF与 AdobeExtreme技术结合在一起。用Acrobat 方便处理,使印能捷为印前作业带来了前所未有的控制手段、整体协调和稳定性。 就算是复杂的拼大版过程,印能捷一样能处理得应用自如,在流程中能处理拼大版的格式文件,在当今的CTP流程中并不多见,由此可见印能捷的强大功能,同时印能捷开放的结构可接受 多种工业标准文件格式并可连接克里奥的所有输出设备。 输出前的修改 号称能够最后一刻修改文件的流程不少,而印能捷的自动化处理过程,能绑定所有的输入和输出文件,这样在修改的时候,不会因找不到相应的文件而出错,印能捷的处理过程不但是紧密 的而且是人性化的,你可以设定你喜欢的快捷方式以及不同的工具栏,保证你在操作过程中得心应手,在拼完大版后的VPS的屏幕打样中,如果发现了文件的错误,你可以方便地将你需要 的文件再进行多次处理而不会影响整个页面。 印能捷流程处理编辑器能编辑你想处理的方式以及流程方法,并且能按你的要求一次完成所有的工作,在处理完成单个文件的同时你可以随时加入相关的大版模版,加入处理好的文件你就 可以观察到最终的结果,印能捷在工作流程的前端解释作业,但直到最后输出时才分色加网,这就给印刷厂带来了极大的灵活性。独立的页面只有在最后输出到软片或印版上时才会被排在一 快速掌握 印能捷基于客户/服务器体系结构,是由数据库支持的工作流程管理系统。为了能优化利用现有的硬件系统。大量计算工作会自动分配给多个服务器完成。再Oracle数据库中,作业可通过客 印能捷可记录生产车间的所有工作,提供连续的工作状态记录,它实际上是一个杰出的记忆系统。能记录计算机的每一步操作。 操作员可在苹果电脑或PC上自由操作用Java语言编写的印能捷客户端软件。几个操作员可同时对一个作业进行并行处理,并能实时看到工作的进度。由于印前阶段交流和可见性越来越好,交 招招领先 作为工作流程的新动力,印能捷打开了通向完全数字化工艺流程的大门。所有生产工艺从半色调打样、软片或印版输出以及数字印刷机的控制都实现了自动化、生产率再上新台阶。 印能捷工作流程的第一步是精炼处理。精炼处理器将印前数据转化为可输出的PDF文件,并进行一系列的页面预检查以监控源文件。PDF和PostSCcipt文件可直接接受,CT/LW或TIFF/IT文件 精炼处理器的第二步工作是进行色彩管理,这个方案基于世界顶级的海德堡色彩匹配方法。印能捷不仅能做模拟印刷效果的页面或版式软打样,还能直接将传过来的文件立即转换到输出设备 精炼处理器第三步要做的是自动陷印。它基于久负盛名的DaVinci算法。它包含一个工作传票,文件一经转成单个的PDF页面,就立刻进行陷印处理。而且操作员还可对每页单独进行交互式陷 第四步也是最后一步是在印能捷友好用户界面上生成预视图。印能捷能将PDF页面和工作传票高速分色加网,转换成输出机用的位图信意。加网方式有Hos如网,钻石加网,Staccato加网和M 文件一旦完成精炼处理,印能捷就可对准备好的PDF文件进行页面打样和平大版PDF文件的拼大版可以通过海德堡Signastation或PREPS拼版软件生成的工作传票来实现。当然也可采用任何其 输出是通过印能捷主服务器印能捷专门的分色加网或德尔塔技术来完成的。 一览众山小 印能捷可以全速驱动软片照排机和计算机直接制版机等输出设备,最大限度地减少了数据传输的瓶颈阻碍。这使得印能捷工作流程的自动化成为可能,事实上印能捷的分色加网是如此地快, 前途一片光明 最大的自动化,最小的工作负担。印能捷以CIP3/PPF文件形式自动生成色彩特性文件。由于采用了印刷机的油墨预设定数据,再也没有必要扫描印版。印刷机的准备时间和过版纸的浪费大大 您可借助Signastation生成的数据,通过波拉刀计算机裁切软件自动调整裁切机。在不久的将来您也能自动设定带有CIP3/PPF选项的折页机。 梦想成真 图像设计公司、分色制版中心、商业印刷厂、出版社和产品样本印刷商都能享受印能捷给印刷业带来的高效和灵活性。如果您想在激烈竞争的市场中独占鳌头。极大地提高生产效率,获得最 作为客户/服务器的系统解决方案、印能捷可以灵活适应生产能力的变化。不管是苹果电脑还是PC,终端的数量都可不断增加、作为一个多服务器的解决方案。系统负荷可以分配在几个计算机 印能揍让您梦寐以求的自动化工作流程变成了现实。它高速的分色加网既简单又快捷,作业管理结构清晰。印能捷为您的工作流程注入了全新的活力。

全志A20 CTP与Sensor自动检测使用文档_20130617

全志A20 CTP与Sensor自动检测使用文档_20130617
1.2 适用范围
适用于 A20 相对应平台。
1.3 相关人员
使用自动加载功能以及相关的开发与维护人员应该仔细阅读本文档。
1.4 文档介绍
本文档第二章主要说明自动检测模块的功能以及实现原理,需要注意的事项;第三章主 要说明自动检测功能的使用步骤;第四章说明如果添加一个没有支持的设备到自动检测中 来。
1.5 说明
3.自动检测功能使用步骤........................................................................................................ - 12 3.1 Gsensor 使用步骤..................................................................................................... - 12 3.2 CTP 使用步骤............................................................................................................. - 15 -
少时间之后才能进行操作,确认 I2C 操作的可行性。 � 特殊特性。如必须通过 i2c 总线进行第二次读取后,才能读取到正确的数值,目前该模
块中 retry 次数为四次,即当需要重试的次数超过四次时,请做相应的修改。
(2)同类设备,I2C 地址相同时
同类设备中,出现 I2C 地址冲突时,如果不能凭借设备的特有特性(chip id 值等)进 行区分,特别是没有 chip id 值的设备,在使用自动检测时,一定要将不使用的相同地址 的设备剔除掉,可以在 sys_config.fex 文件的扫描列表中,在想要剔除的设备的名称后写 0 即可。

CANopen使用手册_V1.01_.

CANopen使用手册_V1.01_.

ProNet 伺服驱动器ESTUNCANopen 使用手册修订记录日期修订版本描述作者初稿完成移振华增加第8章移振华1、第3,3,1章“PDO 参数”,修正PDO 默认表格中的COB-ID 和default 值;易健2、增加第9章“通讯例程”——目录——1、概述............................................................................................................................................ . (5)1.1 CAN 主要相关文档 (5)1.2 本手册使用的术语和缩语 (5)1.3 CAN OPEN 概述 (6)2、接线和连接 (7)3、CANOPEN 通讯 (8)3.1 CAN 标识符分配表 (9)3.2 服务数据对象SDO (10)3.3 过程数据对象PDO (12)3.3.1 PDO参数 (14)3.4 SYNC 报文 (20)3.5 E MERGENCY 报文 (21)3.6 HEARTBEAT 报文 (23)3.7网络管理(NMT ) (24)4、单位换算单元(FACTOR GROUP) (26)4.1 单位换算相关参数 (27)4.1.1 position factor (27)4.1.2 velocity factor (29)4.1.3 acceleration factor (30)5、位置控制功能 (31)5.1 位置控制相关参数 (33)6、设备控制 (35)6.1 控制状态机 (35)6.2 设备控制相关参数 (36)6.2.1 controlword (37)6.2.2 statusword (38)6.2.3shutdown_option_code (3)96.2.4disable_operation_option_code (40)6.2.5quick_stop_option_code (4)6.2.6halt_option_code (41)6.2.7fault_reaction_option_code (41)7、控制模式 (42)7.1 控制模式相关参数 (42)7.1.1modes_of_operation (42)7.1.2modes_of_operation_display (43)7.2 回零模式(HOMINGMODE ) (44)7.2.1 回零模式的控制字 (44)7.2.2 回零模式的状态字 (44)7.2.3 回零模式相关参数 (45)7.2.4 回零方法 (47)7.3 速度控制模式(PROFILE VELOCITYMODE ) (49)7.3.1速度模式的控制字 (49)7.3.2 速度模式的状态字 (49)7.3.3 速度控制模式相关参数 (49)7.4 位置控制模式(PROFILE POSITIONMODE ) (53)7.4.1 位置模式的控制字 (53)7.4.2 位置模式的状态字 (53)7.4.3 位置控制相关参数 (54)7.4.4 功能描述 (56)8、CAN 通讯相关参数 (58)9、CANOPEN 通讯例程 (59)9.1 SDO 操作; (59)9.2 PDO 配置 (59)9.3 位置控制例子(P ROFILE P OSITON MODE ) (60)9.4 位置插补控制(I NTERPLATE P OSITION MODE ) (61)9.5 速度控制(P ROFILE V ELOCITY MODE ) (62)9.6 回零 (6)2对象字典表 (64)1、概述1.1 CAN 主要相关文档 CiA DS 301 V 4.01: CiA CANopen Communication Profilefor Industrial Systems - based on CALCiA DSP 402 V 2.0: CiA CANopen Device Profile1.2 本手册使用的术语和缩语CANCiACOBEDSLMTNMTOD参数PDORORWSDO控制器局域网在自动化国际用户和制造商协会中的 CAN。

3_CTP制版系统的基本工作原理[兼容模式]

3_CTP制版系统的基本工作原理[兼容模式]

灰度级 =(记录精度 / 加网线数)2 +1
光点小
组成网点的光点数多
灰度等级多
ቤተ መጻሕፍቲ ባይዱ
或 在保证相同灰度等级的 条件下使网点尺寸更小, 即网线数高
激光照排机的主要性能参数
重复精度
套准精度:也叫对位精度或重复精度,各色版上图 像位置的准确程度,反应了两张胶片的图像相互之 间不能重叠的误差。通常以第一色和最后一色版重 叠的误差计算。照排机的结构对重复精度影响很 大。
照排速度还受到RIP速度的限制
照排速度与分辨率有直接的关系,分辨率越高,速 度越慢
激光照排走片图
进片辊
精密驱 首打孔 尾打孔 动组件
供片盒 隋环
激光
双缓存 出片系 统
裁刀
连线冲 片机
• 内置首尾打孔是选配件
激光照排机性能评价
网点质量
用专业放大镜观测胶片上的网点。网点形状是否符 合设定,清晰不发虚,边缘平滑无毛刺。输出的分 辨率、胶片质量、震动、冲洗状况等因素对网点的 质量有一定影响。
有差别 直接制版机也同样使用了内鼓式、外鼓式、平台式和曲线
式技术 与照排机不同的是,直接制版机采用的技术往往与记录材
料 ⎯ 印版有关。
主要内容
CTP基本工作原理 CTP制版工艺的通用基本部件 CTP设备的结构 CTP制版与传统制版的比较 影响CTP制版质量的因素
工作原理
光学系统 电路系统 机械系统
光学系统
多束极细激光




激光器

计算机中图像信息
RIP还具有控制输出设备的作用,及控制输 出版面的其他信息,如输出幅面大小,是 否旋转版面,是否输出反字,是否拆页, 是否输出分色,输出页面份数。

CTP知识讲解

CTP知识讲解

1.2mm
不同厂家工艺略有不同,需要根 据供应商实际工艺制作,主要是 需要考虑供应商的制程加工良率
设计注意事项:
❖ COVER GLASS相关:
❖ COVER GLASS的形状尽量不要太异形,越异形的外观,对抗冲击强度影响越大。 ❖ 在COVER GLASS上尽量减少通孔的数量,因为通孔数量多,整体强度下降,不良
自容和互容区别
G+F结构
G+F+F结构
G+G结构
OGS结构
PGS结构
GG---DITO结构
GG---SITO结构
电容屏成本构成
电容式触控面板驱动IC
❖国外
▪ Atmel , Cypress , Synaptics , 三星
❖台系厂商
▪ Focaltech ,Goodix , Elan , Himax, Novetek Mstar , ITE
❖ 电容TP IC布件区域应远离天线、蓝牙、FM、WIFI等模块,避免干扰。 ❖ CTP 在ESD防护方面需要注意CTP与机壳的密封结构,同时缝隙尽量远离CTP 的
侧边走线区等敏感区域。 ❖ 听筒孔易导致ESD失效,出线FPC位置应远离出音孔,且在FPC上做上相应的露铜
接地。
❖ 4.4.5 ADH相关:
开槽部分 残留窄边
玻璃厚度T=1.00mm 1.2mm成本上比 1.4mm高出很多
槽深3.0mm以上 槽深3.0mm以内
Smbol
A
B C D E G F
TYPE
Min
NOTE
3.5mm以上
2.5mm以上
1.5mm以上 1.4mm以上 R0.7mm以上
R0.5mm以上
R1.5mm以上 R0.7mm以上 1.0mm以上

CTP操作技巧

CTP操作技巧

操作技巧:CTP系统作业标准化管理(一)四川省印刷制版中心有限公司领导创新观念,创新技术,最近引进柯达全胜800Ⅲ热敏型计算机直接制版机及印能捷数字化工作流程,采用国际顶尖的柯达视方佳调频加网技术,结合柯达方形光点热敏成像技术,进行高品质印刷,创建公司产品的特色和亮点,以特色来增加产品的附加值,以亮点来吸引客户,力争在蓝海市场双桨遨游。

该公司领导充分认识到引进先进的CTP系统,只是企业提升自我的外因条件,如何对CTP系统实施标准化管理?如何规范前端的文件?如何应用调频网与印刷工艺结合?是企业提升自我的内因,外因通过内因起作用,才能发挥CTP系统的先进性。

因此,公司领导从一开始引进CTP系统就设计以CTP及其数字化工作流程来整合生产系统,建立具有本企业特色的技术体系和质量管理体系。

该公司对CTP系统作业的标准化管理做得很细,执行得很严,从而保证CTP系统高效率、高质量的动作。

下面作简要介绍。

A印能捷EVO之DTP简易流程,如图:图1ACTP操作标准化、规范化管理CTP全胜800Ⅲ热敏型计算机直接制版机操作的标准化、规范化、数据化管理,是保证系统流程准确,调整运转和高质、高效的重要保证。

因此,必须精心实施标准化、规范化、数据化管理。

一、CTP系统的工艺流程设计如图:二、CTP全胜800Ⅲ制版机操作流程规范目的:规范CIP系统操作流程,保证系统流程准确,高效运转。

工作程序:1、文件的读取①光盘文件的复制。

光盘驱动器为H盘,打开光盘内容后,将所需制版的文件复制到CIP服务器指定子文件夹,为防止混淆,该子文件夹应为相应印件的专用文件夹。

②通过网卡接口进行文件复制将CIP服务器与有印件文件的电脑连接,打开“网上领居”,找到所需复制的文件,将文件复制到CIP服务器(名称为EVO,工作组为workgroup盘的指定子文件夹JobData.)③注意:CTP服务器仅接受以下文件格式:PDF;PostScript Levell,2and3;EPS(Encapsulated PostScript);DCS and DCS2(both single and multi-five versions);TIFF/IT-PI;Brisque CT/LW;256Tiff跟1位Tiff。

CTP常见的问题解决

CTP常见的问题解决CTP, 问题解决1.尺寸问题(1)制作的文件尺寸与实际所需的尺寸不相符。

(2)制作文件时未考虑到所需的出血量。

(3)文字或图像距离成品裁切线太近。

解决方法:(1)将“文档设定”/“页面尺寸”定义为成品尺寸。

(2)制作文件时要考虑页面的出血量,一般为3mm。

(3)文字或图像距离成品裁切线至少为5mm,最好超过8mm。

2.图像问题(1)彩色图像或图形采用了RGB色彩模式。

(2)图像精度未达到印刷基本要求,如分辨力太低。

(3)以JPEG格式压缩的图像,层次,细节的信息丢失。

(4)电分或扫描后未修图,在图像上留下脏点。

(5)链接或重新置入图像时出错。

解决方法:(1)要求设计和制作人员对印刷常规知识有最基本的了解,并具备一定的美学常识。

(2)实现CTP系统的管理标准化。

流程规范化,并明确各工序的要求。

建议做法:(1)要对分色图像质量有最基本的要求。

(2)印刷时一般采用CMYK的色彩模式。

(3)图像要有足够的精度。

对于大图像,彩色图像的分辨力通常为300dpi或350dpi,Bitmap 图像的分辨力通常为1200dpi,至少为800dpi,以免产生锯齿。

(4)电分时设置要准确,文件要能忠实再现原稿,清晰度高,细节丰富,层次好。

(5)电分后做校色处理时要求修图,以免留下脏点。

(6)尽可能不要压缩图像,尤其是压缩为JPEG格式的图像不能用于印刷。

(7)规范文件命名,避免同名文件的出现。

重新链接图像时一定要小心,一旦出错就是致命的,所以不可掉以轻心,以免造成重大损失。

3.字体问题对于PS字库没有的字体,尤其是中文字体,一般采用Truetype字体下载,但容易产生漏字或字的移位。

解决方法:(1)购买相应的PS字库或CID字库。

(2)为CTP系统安装常用的字库,并要求客户使用相应字库的字体。

(3)对于缺少的字体,可以与客户商量用近似的字体代替,但要注意字的移位;也可以要求客户提供字体,尤其是外文。

【转】MTKTP驱动移植

【转】MTKTP驱动移植对于MTK TP驱动移植⼀般分为六部分:1、硬件IO⼝配置;2、TP驱动移植;3、I2C通信;4、中断触发;5、数据上报;6、虚拟按键;硬件电路:1、GPIO配置打开 mediatek\dct\DrvGen.exe选择 mediatek\custom\xiaoxi\kernel\dct\dct\codegen.dws 配置⽂件配置EINT7_CTP引脚、CTP_RST复位引脚2、TP驱动移植(以ft5x16为例)在\mediatek\custom\common\kernel\touchpanel⽬录下创建ft5x16,将供应商提供的驱动驱动资料拷贝到该⽬录下;修改配置⽂件:mediatek\config\prj\ProjectConfig.mk下的CUSTOM_KERNEL_TOUCHPANEL其值由改为ft5x16,表明对应ft5x16⼦⽬录;打开ft5x16.c⽂件,修改⼀下:1static struct i2c_board_info __initdata ft5x16_i2c_tpd={ I2C_BOARD_INFO("ft5x16", (0x70>>1))}; //"ft5x16"为设备名,设备地址为⾼7位23static struct tpd_driver_t tpd_device_driver = {4 .tpd_device_name = "FT5x16",5 .tpd_local_init = tpd_local_init,6 .suspend = tpd_suspend,7 .resume = tpd_resume,8 #ifdef TPD_HAVE_BUTTON9 .tpd_have_button = 1,10#else11 .tpd_have_button = 0,12#endif13 };1415/* called when loaded into kernel */16static int __init tpd_driver_init(void) {17 printk("MediaTek FT5x16 touch panel driver init\n");18/* 注册板级设备信息 */19 i2c_register_board_info(IIC_PORT, &ft5x16_i2c_tpd, 1); //IIC_PORT表⽰i2c控制器号,由电路原理图可知TP设备连接到i2c控制器0,ft5x16_i2c_tpd为i2c设备结构,1表⽰该i2c_board_info个数20if(tpd_driver_add(&tpd_device_driver) < 0)21 printk("add FT5x16 driver failed\n");22return0;23 }重新编译:./mk n k && ./mk bootimage3、I2C通信新驱动编译进内核,启动内核后,我们怎样验证i2c接⼝能够正常通信呢?系统启动后通过串⼝或adb shell进⼊系统命令⾏窗⼝,查询/sys/bus/i2c/devices⽬录下是否有0-0038信息,查询/sys/bus/i2c/drivers⽬录下是否存在‘ft5x16’设备名;先保证i2c能够正常通信;4、中断触发中断注册函数:mt_eint_registration(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_TYPE, tpd_eint_interrupt_handler, 1);//tpd_eint_interrupt_handler函数为中断回调函数5、数据上报当触摸屏产⽣中断的时候就会调⽤到该接⼝;然后在中断处理函数中唤醒运⾏在⼦线程中的等待队列,再通过⼦线程获取TP数据并上报到系统;1static DECLARE_WAIT_QUEUE_HEAD(waiter); //初始化等待队列23 thread = kthread_run(touch_event_handler, 0, TPD_DEVICE); //新建线程45static int touch_event_handler(void *unused)6 {7 ......8do9 {10 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);11 set_current_state(TASK_INTERRUPTIBLE);12 wait_event_interruptible(waiter,tpd_flag!=0); //等待队列进⼊休眠,等待唤醒13 tpd_flag = 0;14 set_current_state(TASK_RUNNING);15 ......16if (tpd_touchinfo(&cinfo, &pinfo)) //获取TP数据17 {18//TPD_DEBUG("point_num = %d\n",point_num);19 TPD_DEBUG_SET_TIME;20if(point_num >0)21 {22for(i =0; i<point_num; i++)//only support 3 point23 {24 cinfo.x[i] = cinfo.x[i];25 cinfo.y[i] = cinfo.y[i];2627 tpd_down(cinfo.x[i], cinfo.y[i], cinfo.id[i]); //上报按下数据28 printk(KERN_DEBUG"----calibration----- X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);29 }30 input_sync(tpd->dev);31 }32else33 {34 tpd_up(cinfo.x[0], cinfo.y[0]); //上报弹起数据35//TPD_DEBUG("release --->\n");36//input_mt_sync(tpd->dev);37 input_sync(tpd->dev);38 }39 }40 ......4142 }while(!kthread_should_stop());4344return0;45 }TP数据可以通过打印的⽅式进⾏查看,也可以激活‘系统设置’中‘开发者选项’的‘指针位置’,现在触摸操作在LCD的轨迹,也可以在packages\apps\Launcher2\src\com\android\launcher2\Launcher.java的onCreate⽅法最后添加Settings.System.putInt(this.getContentResolver(),Settings.System.POINTER_LOCATION, 1); 在Launcher中开启‘指针位置’功能(需要mm Launcher模块并重新打包和烧录system.img⽂件);注:如果TP获取到的数据⽐较乱的时候建议通过打开‘指针位置’功能进⾏查看,排除TP固件分辨与LCD没对应等问题;6、虚拟按键1static struct tpd_driver_t tpd_device_driver = {2 .tpd_device_name = "FT5x16",3 .tpd_local_init = tpd_local_init,4 .suspend = tpd_suspend,5 .resume = tpd_resume,6 #ifdef TPD_HAVE_BUTTON7 .tpd_have_button = 1,8#else9 .tpd_have_button = 0,10#endif11 };从tpd_driver_t结构可知tpd_have_button成员为虚拟按键标志位;由宏TPD_HAVA_BUTTON开关决定的,宏定义在tpd_custom_fts.h中;在tpd_custom_fts.h中定义了⼀系列关于虚拟按键的宏:#define TPD_HAVE_BUTTON //虚拟按键开关#define TPD_BUTTON_WIDTH (200) //按键宽度#define TPD_BUTTON_HEIGH (100) //按键⾼度#define TPD_KEY_COUNT 3 //按键个数#define TPD_KEYS {KEY_MENU, KEY_HOMEPAGE, KEY_BACK} //按键对应的功能#define TPD_KEYS_DIM {{80,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}, {240,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}, {400,900,TPD_BUTTON_WIDTH,TPD_BUTTON_HEIGH}} //按键对应位置TPD_KEYS_DIM中的坐标是该按键区域的中⼼点:TP驱动简要分析1static struct tpd_driver_t tpd_device_driver = {2 .tpd_device_name = FT5x16,3 .tpd_local_init = tpd_local_init, //初始化函数4 .suspend = tpd_suspend,5 .resume = tpd_resume,6 #ifdef TPD_HAVE_BUTTON7 .tpd_have_button = 1,8#else9 .tpd_have_button = 0,10#endif11 };1213/* called when loaded into kernel */14static int __init tpd_driver_init(void) {15 printk("MediaTek FT5x16 touch panel driver init\n");16 i2c_register_board_info(0, &ft5x16_i2c_tpd, 1); //注册板级设备信息17if(tpd_driver_add(&tpd_device_driver) < 0) //添加驱动18 printk("add FT5x16 driver failed\n");19return0;20 }MTK⾃⼰编写了⼀套TP框架,通过该框架管理TP设备,tpd_driver_add为框架的接⼝之⼀;系统通过tpd_driver_add添加驱动后会回调tpd_local_init函数;1 #ifdef TPD_HAVE_BUTTON2static int tpd_keys_local[TPD_KEY_COUNT] = TPD_KEYS; //存放按键功能信息3static int tpd_keys_dim_local[TPD_KEY_COUNT][4] = TPD_KEYS_DIM; //存放虚拟按键信息4#endif56static int tpd_local_init(void)7 {8 TPD_DMESG("FTS I2C Touchscreen Driver (Built %s @ %s)\n", __DATE__, __TIME__);910if(i2c_add_driver(&tpd_i2c_driver)!=0) //注册i2c驱动11 {12 TPD_DMESG("FTS unable to add i2c driver.\n");13return -1;14 }15if(tpd_load_status == 0)16 {17 TPD_DMESG("FTS add error touch panel driver.\n");18 i2c_del_driver(&tpd_i2c_driver);19return -1;20 }2122 #ifdef TPD_HAVE_BUTTON //如果定义虚拟按键,则初始化按键信息23 tpd_button_setting(TPD_KEY_COUNT, tpd_keys_local, tpd_keys_dim_local);// initialize tpd button data24#endif2526#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))27 TPD_DO_WARP = 1;28 memcpy(tpd_wb_start, tpd_wb_start_local, TPD_WARP_CNT*4);29 memcpy(tpd_wb_end, tpd_wb_start_local, TPD_WARP_CNT*4);30#endif3132#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))33 memcpy(tpd_calmat, tpd_def_calmat_local, 8*4);34 memcpy(tpd_def_calmat, tpd_def_calmat_local, 8*4);35#endif36 TPD_DMESG("end %s, %d\n", __FUNCTION__, __LINE__);37 tpd_type_cap = 1;38return0;39 }向系统注册i2c驱动后,如果找到对应的设备就会调⽤tpd_probe函数;1static const struct i2c_device_id ft5x16_tpd_id[] = {{TPD_NAME,0},{}};23static struct i2c_driver tpd_i2c_driver = {4 .driver = {5 .name = TPD_NAME,6 },7 .probe = tpd_prob,8 .remove = __devexit_p(tpd_remove),9 .id_table = ft5x16_tpd_id,10 .detect = tpd_detect,11 };1213static int __devinit tpd_probe(struct i2c_client *client, const struct i2c_device_id *id)14 {15int retval = TPD_OK;16char data;17 u8 report_rate=0;18int err=0;19int reset_count = 0;20 u8 chip_id,i;2122 reset_proc:23 i2c_client = client;24 #ifdef MAIERXUN_TP_COM25if(touchpanel_flag){26return0;27 }28#endif29//复位30//power on, need confirm with SA31 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);32 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);33 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ZERO);34 msleep(5);35 TPD_DMESG(" fts ic reset\n");3637//打开TP电源38 #ifdef TPD_POWER_SOURCE_CUSTOM39 hwPowerOn(TPD_POWER_SOURCE_CUSTOM, VOL_3300, "TP");40#else41 hwPowerOn(MT65XX_POWER_LDO_VGP2, VOL_3300, "TP");42#endif4344 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);45 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);46 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ONE);4748 #ifdef TPD_CLOSE_POWER_IN_SLEEP49 hwPowerDown(TPD_POWER_SOURCE,"TP");50 hwPowerOn(TPD_POWER_SOURCE,VOL_3300,"TP");51 msleep(100);5253#else /* 结束复位 */54 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);55 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);56 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ZERO);57 msleep(5);58 TPD_DMESG(" fts ic reset\n");59 mt_set_gpio_mode(GPIO_CTP_RST_PIN, GPIO_CTP_RST_PIN_M_GPIO);60 mt_set_gpio_dir(GPIO_CTP_RST_PIN, GPIO_DIR_OUT);61 mt_set_gpio_out(GPIO_CTP_RST_PIN, GPIO_OUT_ONE);62#endif6364/* 初始化中断引脚 */65 mt_set_gpio_mode(GPIO_CTP_EINT_PIN, GPIO_CTP_EINT_PIN_M_EINT);66 mt_set_gpio_dir(GPIO_CTP_EINT_PIN, GPIO_DIR_IN);67 mt_set_gpio_pull_enable(GPIO_CTP_EINT_PIN, GPIO_PULL_ENABLE);68 mt_set_gpio_pull_select(GPIO_CTP_EINT_PIN, GPIO_PULL_UP);6970/* 中断配置和注册 */71 mt_eint_set_hw_debounce(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_DEBOUNCE_CN);72 mt_eint_registration(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_TYPE, tpd_eint_interrupt_handler, 1); //注册中断处理函数,TP产⽣中断时就会回调tpd_eint_interrupt函数73 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);7475 msleep(400);7677 err=i2c_smbus_read_i2c_block_data(i2c_client, 0x00, 1, &data);7879 TPD_DMESG("gao_i2c:err %d,data:%d\n", err,data);80if(err< 0 || data!=0)// reg0 data running state is 0; other state is not 081 {82 TPD_DMESG("I2C transfer error, line: %d\n", __LINE__);83 #ifdef TPD_RESET_ISSUE_WORKAROUND84if ( reset_count < TPD_MAX_RESET_COUNT )85 {86 reset_count++;87goto reset_proc;88 }89#endif90//add at 20150330 by zhu91 #ifdef MAIERXUN_TP_COM92 touchpanel_flag=false;93#endif94return -1;95 }9697 ......9899 #ifdef VELOCITY_CUSTOM_FT5206100if((err = misc_register(&tpd_misc_device))) //注册混杂设备驱动101 {102 printk("mtk_tpd: tpd_misc_device register failed\n");103104 }105#endif106107 #ifdef TPD_AUTO_UPGRADE108 printk("********************Enter CTP Auto Upgrade********************\n");109 fts_ctpm_auto_upgrade(i2c_client);110#endif111 thread = kthread_run(touch_event_handler, 0, TPD_DEVICE); //创建⼦线程,通过该⼦线程获取和上报数据112if (IS_ERR(thread))113 {114 retval = PTR_ERR(thread);115 TPD_DMESG(TPD_DEVICE " failed to create kernel thread: %d\n", retval);116 }117118 TPD_DMESG("FTS Touch Panel Device Probe %s\n", (retval < TPD_OK) ? "FAIL" : "PASS");119120/* 初始化TP的P-sensor功能,暂不分析 */121 #ifdef TPD_PROXIMITY122struct hwmsen_object obj_ps;123124 obj_ps.polling = 0;//interrupt mode125 obj_ps.sensor_operate = tpd_ps_operate;126if((err = hwmsen_attach(ID_PROXIMITY, &obj_ps)))127 {128 APS_ERR("proxi_fts attach fail = %d\n", err);132 APS_ERR("proxi_fts attach ok = %d\n", err);133 }134#endif135136 #ifdef MAIERXUN_TP_COM137 touchpanel_flag=true;138#endif139140return0;141142 }/* 中断处理函数 */1static void tpd_eint_interrupt_handler(void)2 {3//TPD_DEBUG("TPD interrupt has been triggered\n");4 TPD_DEBUG_PRINT_INT;5 tpd_flag = 1;6 wake_up_interruptible(&waiter); //唤醒等待队列7 }中断处理遵循中断上下⽂的设计原则,使得中断⼦程序只是简单唤醒等待队列就可以了,没有多余的操作;/* ⼦线程处理函数 */1static int touch_event_handler(void *unused)2 {3struct touch_info cinfo, pinfo;4int i=0;56struct sched_param param = { .sched_priority = RTPM_PRIO_TPD };7 sched_setscheduler(current, SCHED_RR, ¶m);89 #ifdef TPD_PROXIMITY10int err;11 hwm_sensor_data sensor_data;12 u8 proximity_status;1314#endif15 u8 state;1617do//进⼊while循环进⾏睡眠-等待唤醒的操作18 {19 mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM); //中断使能(解除屏蔽)20 set_current_state(TASK_INTERRUPTIBLE);21 wait_event_interruptible(waiter,tpd_flag!=0); //进⼊睡眠等待唤醒2223 tpd_flag = 0;2425 set_current_state(TASK_RUNNING);26 ......2728 #ifdef TPD_PROXIMITY //TP的P-sensor功能,暂不分析29if (tpd_proximity_flag == 1)30 {31 i2c_smbus_read_i2c_block_data(i2c_client, 0xB0, 1, &state);32 TPD_PROXIMITY_DEBUG("proxi_5206 0xB0 state value is 1131 0x%02X\n", state);3334if(!(state&0x01))35 {36 tpd_enable_ps(1);37 }3839 i2c_smbus_read_i2c_block_data(i2c_client, 0x01, 1, &proximity_status);40 TPD_PROXIMITY_DEBUG("proxi_5206 0x01 value is 1139 0x%02X\n", proximity_status);4142if (proximity_status == 0xC0)43 {44 tpd_proximity_detect = 0;45 }46else if(proximity_status == 0xE0)47 {48 tpd_proximity_detect = 1;49 }5051 TPD_PROXIMITY_DEBUG("tpd_proximity_detect 1149 = %d\n", tpd_proximity_detect);5253if ((err = tpd_read_ps()))54 {55 TPD_PROXIMITY_DMESG("proxi_5206 read ps data 1156: %d\n", err);56 }57 sensor_data.values[0] = tpd_get_ps_value();58 sensor_data.value_divide = 1;59 sensor_data.status = SENSOR_STATUS_ACCURACY_MEDIUM;60if ((err = hwmsen_get_interrupt_data(ID_PROXIMITY, &sensor_data)))61 {62 TPD_PROXIMITY_DMESG(" proxi_5206 call hwmsen_get_interrupt_data failed= %d\n", err);6667if (tpd_touchinfo(&cinfo, &pinfo)) //获取TP设备数据,并把数据保存在cinfob buf中68 {69//TPD_DEBUG("point_num = %d\n",point_num);70 TPD_DEBUG_SET_TIME;71if(point_num >0)72 {73for(i =0; i<point_num; i++)//only support 3 point74 {75 printk(KERN_DEBUG"X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);7677 cinfo.x[i] = cinfo.x[i];78 cinfo.y[i] = cinfo.y[i];7980 tpd_down(cinfo.x[i], cinfo.y[i], cinfo.id[i]); //按下数据处理81 printk(KERN_DEBUG"----calibration----- X:%4d, Y:%4d, P:%4d \n", cinfo.x[i], cinfo.y[i], cinfo.id[i]);82 }83 input_sync(tpd->dev);84 }85else86 {87 tpd_up(cinfo.x[0], cinfo.y[0]); //弹起数据处理88//TPD_DEBUG("release --->\n");89//input_mt_sync(tpd->dev);90 input_sync(tpd->dev);91 }92 }93 ......9495 }while(!kthread_should_stop());9697return0;98 }/* 获取TP数据 */1static int tpd_touchinfo(struct touch_info *cinfo, struct touch_info *pinfo)2 {3int i = 0;4char data[128] = {0};5 u16 high_byte,low_byte,reg;6 u8 report_rate =0;78 p_point_num = point_num;9if (tpd_halt)10 {11 TPD_DMESG( "tpd_touchinfo return ..\n");12return false;13 }14 mutex_lock(&i2c_access);151617 reg = 0x00;18 fts_i2c_Read(i2c_client, &reg, 1, data, 64); //获取TP数据,⼀些TP是⽀持多点触控的,所以有可能就产⽣多个触点的数据19 mutex_unlock(&i2c_access);2021/*get the number of the touch points*/22 point_num= data[2] & 0x0f;2324 TPD_DEBUG("point_num =%d\n",point_num);2526/* 根据芯⽚协议解析数据并存放在cinfo buf中 */27for(i = 0; i < point_num; i++)28 {29 cinfo->p[i] = data[3+6*i] >> 6; //event flag30 cinfo->id[i] = data[3+6*i+2]>>4; //touch id31/*get the X coordinate, 2 bytes*/32 high_byte = data[3+6*i];33 high_byte <<= 8;34 high_byte &= 0x0f00;35 low_byte = data[3+6*i + 1];36 cinfo->x[i] = high_byte |low_byte;373839/*get the Y coordinate, 2 bytes*/40 high_byte = data[3+6*i+2];41 high_byte <<= 8;42 high_byte &= 0x0f00;43 low_byte = data[3+6*i+3];44 cinfo->y[i] = high_byte |low_byte;45 }4647 }48 TPD_DEBUG(" cinfo->x[0] = %d, cinfo->y[0] = %d, cinfo->p[0] = %d\n", cinfo->x[0], cinfo->y[0], cinfo->p[0]);4950return true;51 }1static void tpd_down(int x, int y, int p) {2static int tpd_x = 0;3static int tpd_y = 0;45 tpd_x = x;6 tpd_y = y;78/* 通过输⼊⼦系统上报数据 */9 input_report_key(tpd->dev, BTN_TOUCH, 1);10 input_report_abs(tpd->dev, ABS_MT_TOUCH_MAJOR, 20);11 input_report_abs(tpd->dev, ABS_MT_POSITION_X, x);12 input_report_abs(tpd->dev, ABS_MT_POSITION_Y, y);1314 printk(KERN_ERR, "D[%4d %4d %4d] ", x, y, p);15/* track id Start 0 */16 input_report_abs(tpd->dev, ABS_MT_TRACKING_ID, p);17 input_mt_sync(tpd->dev);18 #ifndef MT657219if (FACTORY_BOOT == get_boot_mode()|| RECOVERY_BOOT == get_boot_mode())20#endif21 {22 tpd_button(x, y, 1); //虚拟按键的处理23 }24 TPD_EM_PRINT(x, y, x, y, p-1, 1);25 }2627static void tpd_up(int x, int y) {2829 input_report_key(tpd->dev, BTN_TOUCH, 0);30 input_mt_sync(tpd->dev);31 TPD_EM_PRINT(x, y, x, y, 0, 0);3233 #ifndef MT657234if (FACTORY_BOOT == get_boot_mode()|| RECOVERY_BOOT == get_boot_mode())35#endif36 {37 tpd_button(x, y, 0);38 }39 }/* 虚拟按键判断和处理函数 */1void tpd_button(unsigned int x, unsigned int y, unsigned int down) {2int i;3if(down) {4for(i=0;i<tpd_keycnt;i++)5 {6/* 判断数据是否落在虚拟按键的范围内,数据处理算法实现了以坐标点为中⼼的虚拟按键 */7if(x>=tpd_keys_dim[i][0]-(tpd_keys_dim[i][2]/2) &&8 x<=tpd_keys_dim[i][0]+(tpd_keys_dim[i][2]/2) &&9 y>=tpd_keys_dim[i][1]-(tpd_keys_dim[i][3]/2) &&10 y<=tpd_keys_dim[i][1]+(tpd_keys_dim[i][3]/2) &&11 !(tpd->btn_state&(1<<i)))12 {13 input_report_key(tpd->kpd, tpd_keys[i], 1); //上报按键14 input_sync(tpd->kpd);15 tpd->btn_state|=(1<<i);16 TPD_DEBUG("[mtk-tpd] press key %d (%d)\n",i, tpd_keys[i]);17 printk("[mtk-tpd] press key %d (%d)\n",i, tpd_keys[i]);18 }19 }20 } else {21for(i=0;i<tpd_keycnt;i++) {22if(tpd->btn_state&(1<<i)) {23 input_report_key(tpd->kpd, tpd_keys[i], 0);24 input_sync(tpd->kpd);25 TPD_DEBUG("[mtk-tpd] release key %d (%d)\n",i, tpd_keys[i]);26 printk("[mtk-tpd] release key %d (%d)\n",i, tpd_keys[i]);27 }28 }29 tpd->btn_state=0;30 }31 }32 tpd_keys_dim和tpd_keys的数据是通过tpd_button_setting初始化的,可以去看tpd_button_setting()的实现;通过简单分析,由此可知MTK的TP驱动的整体框架跟普通TP驱动框架也是⼤致差不多;。

CTP输出中心流程作业指导书

生效日期: _______ 年月____________ 日文件编号~ ~版本/次号文件名称~ 入稿作业流程作业指导书项目负责人所使用的材料(一)适用范围CTP中心文件入稿流程(二)作业内容A. 稿件来后交CTP接单人员;B. 入稿时登记如下内容;1.工程单号印刷厂所开出的工程流水单(No:XXXXXX)2.客户名称将印刷厂所要求所有内容记录到CTP中心入稿记录表里;3.业务代表工程流水单内业务代表名称记录到CT冲心入稿记录表里;4.相关内容包括:印机型号,板材尺寸,咬口方向,咬口尺寸,送货时间等等;5.入稿日期接稿的日期:XXXX年XX月XX日;6.入稿时间接稿的时间:XX时XX分;C. 将工程单或工程单复印件、工作流程单、附表放入CTP作业流程纸袋里;D. 将工程单要求录入作业公告黑板里(工程单号、作业名称、下单日期、操作员、要求完工时间〔数码打样、蓝纸打样、CTP出版〕);E. 记录完成后交给相应的操作人员。

(一)适用范围适用于所有产品的拼版过程(二)作业内容A. 审单1. 操作人员细致阅读工单要求,检查样稿、文件是否要齐全,严格核对成品尺寸, 改版部位要标识清楚。

输出多套 CTP 版一定要检查每套版的情况是否一致,如 有疑问向主管或经办人查询,严禁把要求模糊的工程单承接下来; 2. 客户要求改版的部位,由拼版人员按样先把文件改好;3. 看清楚开版方式,如正反版 4+4C 、自反版4+4C 、单面4+0C 、咬口自反4+4C , 装订工序、印刷机台、切纸开版尺寸、成品尺寸及印刷说明、备注,方可按要 求制作模板; 4. 咬口标准定位(CTP 版边到咬口线XXcn ); B. 校对确认拼版1. 复核过程中,小的修改由拼版人员按要求直接修改后拼版,较大改动由拼版人文件编号 文件名称 拼版作业指导书项目负责人所使用的材料电脑、BrainNew Product生效日期: 年 月版本/次号日软件员按要求修改后重出蓝纸,交相关人员校对确认后客户签字才能出CTP版;CTP输出中心流程作业指导书C. 工艺要求1. 骑马钉要做成面短底长,锁线胶装要做成面长底短;2. 骑马钉、无线胶装、锁线胶装必须画折标,统一天头留位0.3cm (特殊除外);3. 骑马钉、无线胶装书每一手色块统一画在书头位上,距离书头成品2cm处为第一首色块,色块尺寸:1cmx 0.2cm,第二手顺延 ... ,依此类推;4. 锁线胶装每一手色块统一画在书脊位上距离书头2mm处为第一手色块,居中画色块尺寸5mm长x 0.5cm宽,第二手顺延.... ,依此类推;5. 锁线胶装书每一手第一页书脊位,距离书脚成品线1cm处,居中画色块2mm长x 0.5cm高,方便检查手数对齐情况;6. 五色或多色套印、反白字套印、多色套字拼在版尾,烫金/银字、击凸、过局部UV需要啤的拼在对面针位和咬口处,达到啤和套印准确;7. 在纸张尺寸允许的情况下,需要啤的产品咬口位不少于 1.3cm上自动啤机(特殊产品视成品尺寸大小另定),且注明对面针位;8. 封套、手挽袋、信封、盒子等粘位不过光油、哑油,保留3mm出血位后将多余去79. 印标准信封,要加“邮局印制”字样,手挽袋袋口一般定为咬口,并且留4.5cm的位置(特殊除外),且大边留粘位;10. 72 X 102cm小全开印刷,CP1、CP3 CP5号机要晒低咬口,基本留位以咬口方向PS版边到成品线留3.8cm,版尾到成品线留2.8cm为最低标准;11. 印件加印,出蓝纸经相关人员校对确认后,|再出CTP版印刷;CTP输出中心流程作业指导书f.锁线胶装200g双铜纸可以12P套好锁线,放在第一首,210g双铜纸或200g哑粉纸以上最多只能8P锁线,4P锁线放最后,太厚不能套需要压痕;g. 横式、竖式16开封面和需要过胶的封面书头至少留-1cm,方便过胶,同时胶装封面书脚也要尽大留,方便过胶;h. 无线胶装、锁线胶装书40P以下(含40P)157g双铜纸,157g哑光粉,四开折页有3手纸以上胶装最小书脊位要有3mm3. 保持CTP版面干净,不划花、折痕、烂网、网线不符及拼版错误;B.质量记录1. 参照《CTP版材使用日报表》、《EPSON数码样耗材使用日报表》、《HP蓝纸样耗材使用日报表》。

GT9XX驱动移植说明书_for_Android_2014011401

#define GTP_CUSTOM_CFG 1
//*********************PART2:TODO define****************************
……
3
//STEP_3(optional):Custom set some config by custom,if need. #if GTP_CUSTOM_CFG
#define GTP_ESD_PROTECT
1
#define GTP_POWER_CTRL_SLEEP 1
#define GTP_FL_LITTLE_SYSTEM 1
(7) 自动升级说明 使用自动升级您需要开启宏 GTP_AUTO_UDPATE, 自动升级有两种方式: ① 搜寻 BIN 文件升级: GT9XX 预设文件路径为/data/_goodix_update_.bin 和 /sdcard/_goodix_udpate_.bin, GT9XXF 为/data/_fl_update_.bin 和/sdcard/_fl_update_.bin。 ② 固件数组升级: 使用 gt9xx_firmware.h 中的固件数组 gtp_default_FW 进行升级,您需要开启 GTP_AUTO_UDPATE 与 GTP_HEADER_FW_UPDATE。此种方式 GT9XXF 不支持。
开启兼容 GT9XXF 模式(GTP_COMPATIBLE_MODE 置 1),您需要将 GT9XXF Firmware Headers 中相应 GT9XXF 文件夹下的 gt9xx_firmware.h 替换驱动中的同名文件。
5. goodix_tool.c(Recommended):驱动中用于支持 gtp_tools.apk 工具和 ADB 工具的文件,该工
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

= port:PH21<6><default> = port:PB13<1><default><default><1> = port:PH20<1><default> = port:PH21<0><default>
在 sysconfig 中的 ctp 子健 reset, wakeup 的作用对象,因为不属于主控模块,其在语义 上是对模块的操作,配置应根据对外挂模块的操作决定; sysconfig 中的配置,要求 reset 配置,与触控 ic reset 连接的主控引脚对应; 要求 wakeup 配置,与触控 ic wakeup 连接的主控引脚对应;
2. 环境准备
为加快外挂触控 ic 的移植速度,规范研发流程,请先确保以下调试环境和工具可用: 硬件: � 串口可以正常打印; 软件: � 开发环境要求能生成可在开发平台上运行的固件; � 在 linux kernel 目录下,有对应生成该固件的.config 文件; � Adb 可用; � 文件系统可写 � 串口打印相关的 loglevel>7; � 打开 i2c 通讯相关的打印; 如何做到以上要求,参见调试一节,若不清楚,可咨询系统整合相关人员;
Ctp 驱动的移植
1. 前言
触摸作为重要的输入设备,在人机交互中,有着重要作用。在完成一个方案时,应尽早 完成触摸驱动的移植,有利于后期其他模块的调试和测试。然而,触摸驱动的移植,并不是 越早开始越好,我们建议,应在 linux 核心系统稳定及屏幕点亮后,开始进行,这样在触摸 移植后,就能顺利进入 android 系统,并能在 android 层对触摸驱动进行充分测试,保证良 好的触控效果。 Ctp:configurable touch panel 的简称;本文档,讲述外挂触控驱动的移植,包含环境准备, 硬件连接,软件,调试等部分; � 在移植之前,搭建良好的开发环境是必要的,这将有利于后期调试时 bug 的定位, 及 时地获取相关人员的支持,从而更快速的完成移植; � 硬件连接,请先确定硬件连接是否正确,正确的硬件连接,请参考 Reset,Wakeup 信 号的配置, 并确定其他信号,电源电位正常; � 软件,是驱动移植要实现的代码部分;就触摸驱动而言,就是要实现向内核上报用户 操作信息;包含从硬件获取用户操作信息和上报两个部分;上报部分,每个驱动都是 类似的,通常,原厂提供的 demo 已经实现了,可需略作修改即可;从硬件获取用户 操作信息是触摸移植过程中,要达到的主要目的,触摸驱动中,我们要关心的,也主 要是这部分代码;文中,先介绍触摸驱动在系统中的层次,介绍其应该实现的功能, 以及在 a10 bsp 上如何实现驱动,最后,介绍了我们提取的平台相关操作集,它在 bsp 上,针对 ctp 驱动移植的实际场景,简化了移植过程,提高了效率,代码风格也更为 一致,这是我们推荐的 ctp 驱动移植的方法; � 调试,是驱动移植过程中,解决问题的必要手段,因为遇到的问题,我们不可能完全 预见,因而,仅能提供调试方法介绍,并就常见的问题提出建议;
下面分别讲述,在 a10 平台上,为驱动移植,所提供的一些建议; 5.1.1. 获取 sysconfig 信息 首先,触控硬件平台,是如何与主控连接的,其本身的一些特性参数,及其占用主控的 资源,需在 sysconfig 中统一描述,并在 tp driver 初始化时,获取;故需在 sysconfig 中,正 确配置 ctp 子健; 在程序中,通过 gpio 接口,获得这些信息,具体使用方式,请参考 gpio 配置的相关文 档; 5.1.2. 配置 io,int 信息
3. Reset,Wakeup 信号的配置
3.1 主控与触控 ic 的连接
3.2
主控用于触摸模块的 io 端口分配
PB13 PH21 PH20
TP-WAKEUP TP-INT LS-INT
Used for wake up external TP controller External TP input signal Light sensor input interrupt interrupt
4. 驱动与硬件的联系
4.1 触摸驱动与硬件的联系 触摸驱动,作为整个内核中的一部分,它使用内核提供的服务,与自己的硬件交互, 从 而抽象了硬件,为内核提供服务;触摸驱动为了能与触摸硬件交互,必然要使用内核提供的 服务,其在系统的层次如图**所示,表明了与内核其他部分的联系。
struc t a w _pla tf or m _o p s
Eg: 对于将触控 ic reset 连接到主控 wakeup 的情况,要求配置为: ctp_reset = port:PB13<1><default><default><1>
建议: 1。不建议两个引脚都配置; 2。对于 ft 系列,建议采用触控 ic 的 reset 引脚; 不建议两个引脚都配置,出于两个方面的考虑: 1. 影响唤醒的时间; 2. 操作两个引脚,可能扰乱模块的时序,模块有可能挂死;
;---------------------------------------------------------------------------------;capacitor tp configuration ;external int function ;wakeup output function ;notice --tp_int_port & tp_io_port use the same port ;name should be compatible with the corresponding ctp driver. ;at present, only "ft5x_ts" and "Goodix-TS" is supported. ;---------------------------------------------------------------------------------[ctp_para] ctp_used =1 ctp_name = "ft5x_ts" ctp_twi_id =2 ctp_twi_addr =0x38 ctp_screen_max_x = 800 ctp_screen_max_y = 600 ctp_revert_x_flag =1 ctp_revert_y_flag =0 ctp_int_port ;ctp_wakeup ctp_reset ctp_io_port = port:PH21<6><default> = port:PB13<1><default><default><1> = port:PH20<1><default> = port:PH21<0><default>
5.2
基于 A10 平台的 ctp 驱动移植
事实上,在 a10 平台上,为了便于触摸驱动的移植,在 bsp 上封装了平台相关的代码 操作集 aw_platform_ops,用于获取 sysconfig 信息,配置 io,int 信息;
I 2 c
Ctp driver
A w _p la tf o r m_o p s
注意: reset 信号并没有预先分配, 在各方案中, 可以将主控的 TP-WAKEUP 分配为 Reset 信号,具体需要查看触控的 datasheet,并理解触控的功耗管理模式,进行具体的配置, 各电容触摸方案略有不同,此处无法一一说明。 3.3 Sysconfig 及其配置 范例: ctp_int_port ;ctp_wakeup ctp_reset ctp_io_port
建议:在触摸方案移植过程中,所有与平台相关的,可以被其他触摸驱动复用的代码, 都尽量封装成函数,并成为 aw_platform_ops 中的一个成员; 5.2.2 参考代码及范例 参见 platform_ops.rar; 另外,可参考我们的移植范例,包含了原始文件,second step, third step 的快照,各位 可以用后面的比较前面的,就能清晰知道在一次移植中做的工作了。 Sysconfig 的使用 5.2.3 5.2.3S
Linux kernel
Ctp hardware A10 s o c
同时,配置 i2c 信息也在 i2c 驱动中完成了,因而,在移植驱动时,通常只需使 用 aw_platform_ops 和 i2c 提供的接口即可; 5.2.1 平台相关代码操作集 struct aw_platform_ops { int irq; bool pendown; int (*get_pendown_state)(void); void (*clear_penirq)(void); int (*set_irq_mode)(void); int (*set_gpio_mode)(void); int (*judge_int_occur)(void); int (*init_platform_resource)(void); void (*free_platform_resource)(void); int (*fetch_sysconfig_para)(void); void (*ts_reset)(void); void (*ts_wakeup)(void); };
I2c interface
arch
Tp driver
I2c driver
Linux kernel 2 g p io soc in t in t reset c tp
C tp controller
1
tx rx
I2c-adapter
Tp hardware Sysconfig 描 述
图中,tp driver 使用系统提供的接口,使用 int, io 等资源,从而获得硬件的信息,或者 控制硬件;通过 i2c 通讯,获取硬件上报的数据; 因而,tp 与硬件的接口分为两个部分:体系结构相关部分,i2c 部分; � 体系结构相关部分:我们针对触摸驱动的实际,封装了 aw_platform_ops 操作集, 经过若干驱动的开发,这组操作集,是可以满足需求的,若不能满足需求,应扩
相关文档
最新文档