欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Linux-2.6.32.2内核在mini2440上的移植(九).docx

    • 资源ID:1058165       资源大小:72.59KB        全文页数:19页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux-2.6.32.2内核在mini2440上的移植(九).docx

    1.inux-2.6.32.2内核在mini2440上的移植(九)-触摸屏驱动移植移植环境(缸色超字体字为修改於内容,道色粗体字为特殊待.&内容)1,主机环境:VMareFCentOS5.5,1G内存。2,集成开发环境:ElipseIDE3,编译编译环境:arm-linu×-gccv443.arm-none-li11u×-gnueab<-gccv4.5.1,4,开发板:mii2440.2Mnorflash.128Mnandflash,5,u-booi版本:u-tx>ot-2009.087.参考文堂:嵌入式IinUX应用开发完全手册,韦东山.编著.Mini2440之1.inUX移植开发实战指南博主黄刚嵌入式1.inux之我行S3C2440上ADCM动实例开发讲解1在内核中添加触摸屏骚动程序1.inux-2.6.32.2内核也没有包含支持S3C2440的触摸屏驱动,因此友善富方自行设计了*个s3c2410JSC它位linux-srG'drivers''input.ltouchscreenBIIF,你可以自己增加一个s3c2410js.c文件,并更制如下内容:/include<linuxerrno.h>#includeVllnUXykerneI.h>#include<linuxmodule.h>#include<linux.''slab.h>9Include<llnuxinput.h>#include<linuxinit.h>#include<linuxserio.h>tfinclude<linux.delay.h>includeVllnUXplatformdevlce.h>#include<linuj'clk.h>tfinclude<linux.gpio.h>#include<asml'lo.h>#include<asm>'irq.h>*include<platregs-adc.h>#include<machregsgpio.h>Forts.dev.id.version*/ffdefineS3C2410TSVERSION0x0101厂定义个WAIT4INT宏,该宗将对ADC触摸屏限制寄存满进行操作S3C2410_ADCTSC_YM_SEN这些宏祐定义在regs-adc.h>7*defineWA4INT(x)(<(x)<<8)|S3C2410_ADCTSC_YM_SENS3C2410_ADCTSC_YP_SEN|S3C2410_ADCTSC_XP_SEN|S3C2410_ADCTSC_XY_PST(3)tfdeflneAUTOPST(S3C2410_ADCTSC_YM_SENS3C2410_ADCTSCYP_SENS3C2410_ADCTSC_XP_SENS3C2410_ADCTSC_AUTO_PSTS3C2410_ADCTSC_XY_PST(0).'.staticchar*s3c2410ts-nam="s3c2410TouchScreen"defineDEVlCE_NAME“mlni2440JrOUChSCreen”广设备名称VstaticstructInpu1.dev,ts_dev;r定义一个输入设备来表示我们的肘擞屏设备7staticlongxp;staticlongyp;staticintcount;定义个外部的信号lADC_1.OCK.因为ADC,OCK在ADC!妪动程序中已申明这样就能保证ADC资源在ADC驱动和触摸屏驱动中进行互斥访问/externstructsemaphoreADC_1.OCK;staticintOwnADC=O;StatlcvoldIOmem*base_addr;/定义了一个用来保存钱过虚拟映射后的内存地址staticinlinevoids3c2410_ts_connect(void)(s3c2410gpiocfgpin(S3C2410_GPG(12),S3C2410_GPG12_XMON);S3c2410_gpio_cfgpin(S3C2410_GPG(13),S3C2410_GPG13_nXPON);s3c2410.gplocfgpln(S3C2410_GPG(14),S3C241O_GPG14YMON);s3c2410gpiocfgpin(S3C2410GPG(15),S3C2410GPG15nYP0N);staticvoidtouch_timer_fire(unsignedlongdata)(厂用于记录这一次AD转换后的值Vunsignedlongdata;unsignedlongdatal;intupdown;广用于记录触摸屏操作状态是按下还是抬起Vdata=ioread32(base_addr+S3C2410_ADCDAT0);data1=ioread32(baseaddr+S3C241O_ADCDAT1);广记录这一次对触摸屏是下还是抬起.该状态保存在数据寄存器的第15位.所以须要逻川与上S3C2410_ADCDATO_UPD0WN7updown=(!(data&S3C2410ADCDATOUPDOWN)&&(!(data1&S3C2410_ADCDAT0_UPDOWN);if(updown)厂推断触摸屏的操作状杳7(广假如状态是按下,并且ADC已经转换了就报告事务和数据7if(count!=O)转换四次后进行本务汇报(longtmp;tmp三xp;×P=YP;yp=tmp;这里进行折换是因为我们的屏林运用时采纳的是240-320,相当于把原来的屏弁的X,Y轴变换.个人理解.不知是否正确设备X,Y值XP»=2;yp»=2;华ifdefCONFIGJrOUCHSCREENMlNI244ODEBUG广触摸屏调试怡息.编译内核时选上此项后.点击触摸屏会在终端上打印出坐标信息Vstructtlmevaltv;do_gettimeofday(&tv);printk(KERN_DEBUG',T:%06d.X:%03ld,Y:%03ldnM,(int)tv.tv_usec,xp,yp);tfendifinputreportabs(tsdev,ABSX1xp);input_report_abs(ts_dev,ABS_Y,yp);门Il告按键事务.城值为1(代表触摸屏时应的按键被按下)/lnput_reporlkey(tsdev,BTN_TOUCH,1);广报告触摸屏的状态,1表明触摸屏被按卜/input_report_abs(ts_dev,ABS_PRESSURE,1);广等待接收方受到数据后1-1复确认,用于同步input_sync(ts_dev):这个表明我们上报一次完整的触摸屏事务.用来间隔下一次的报告广假如状态是按卜,并且ADC还没有起先转换就启动ADC进行转换Vxp=O;yp=;count=0;厂设置触摸屏的模式为自动转换模式/iwrlte32(S3C2410ADCTSCPU1.1.UPDISAB1.EAUTOPST,baseaddr+S3C2410_ADCTSC);厂启动ADC找换7iowrite32(ioread32(base-addr÷S3C2410-ADCCON)|S3C2410ADCCONENAB1.ESTART,baseaddr÷S3C2410ADCCON);假如还没有启动ADC或者ACD转换四次完毕后则启动ADCelse/*否则是抬起状态V假如贴UP状态,则提出报告并让触摸屏处在等待触摸的阶段count=0;input_report_key(ts_dev,BTN_TOUCH,0);门艮告按选名务,键值为0(代表触摸屏时应的按键被绛放门input_report_abs(ts_dev,ABS.PRESSURE,0);,报告触摸屏的状态,0表明触摸屏没被按下,input_sync(ts_dev);/*等待接收方受到数据后回我确认,用于同步*/lwrite32(WAIT4INT(0),baseaddr+S3C2410.ADCTSC);if(OwnADC)(OwnADC=0;up(&ADC_1.OCK);厂定义并初始化(一个定时器touchimer.定时器极务程序为touchJimeJfire/staticstructtimerJlstIouchJlmer三TIMERJNITIA1.IZER(touch_tlmerJlre,O,O);"DC中断眼芬程序,AD转换完成后触发执行Vstaticirqreturntstylusupdown(intirq,void'devoid)(unsignedlongdata;unsignedlongdata1;intupdown;留意在触摸屏驱动模块中,这个ADCJ_OCK的作用足保证任何时候都只行一个臾动程序运用ADC的中断线,因为在mini2440adc模块中也会运用到ADC,这样只有拥有了这个锁.才能进入到启动ADCIf(downtrylock(&ADC_1.OCK)=O)(OwnADC=1;data=Ioread32(baseaddr+S3C2410_ADCDAT0);data1=ioread32(baseaddr*S3C2410ADCDAT1);广记录这一次对触摸屏是压下还是拍起该状态保存在数据寄存器的第15位.所以须要逻辑与上S3C2410ADCDATOJJPDOWNrupdown=(!(data&S3C2410_ADCDAT0_UPDOWN)&&(!(data1&S3C2410_ADCDAT0_UPDOWN);if(updown)(t。UehImerjIre(O);/这是一个定时器函数,当然在这里是作为一般函数调用,用来只动ADCelse(OwnADC=0;up&ADC_1.OCK);留意这部分是基本不会执行的除非你触摸后以飞速的速度是否还来不及启动ADC,当然这种E速的速度一般是达不到的.考者调试程序时发觉这里是进入不了的returnIRQHAND1.ED;staticIrqreturnJstylus-action(intirq,void,devjd)(unsignedlongdata;unsignedlongdata1;If(OwnADC)1Udata=Ioread32(base.addr÷S3C2410.ADCDAT0);data1=ioread32(base_addr+S3C2410_ADCDAT1);xp÷=dataO&S3C2410ADCDATOXPDATAMASK;yp+=data1&S3C2410_ADCDAT1_YPDATA_MASK;count+;If(count<(1vv2)假如小如四次来新启动转换lowrlte32(S3C2410_ADCTSC_PU1.1.UPDISAB1.EAUTOPST,base_addr+S3C2410_ADCTSC):iowrite32(ioread32(base-addr÷S3C2410.ADCCON)S3C2410_ADCCON.ENAB1.ESTART,baseaddr÷S3C2410ADCCON);else假如超过四次,则等待ImS后进行数据上报mod_ti

    注意事项

    本文(Linux-2.6.32.2内核在mini2440上的移植(九).docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开