




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CF无线网卡SocketDriver移植小结一、首先了解什么CF卡,CF卡有多少引脚,每个引脚的功能是什么?1. 常说的CF卡分为CF存储卡和CF+卡,CF+卡的物理规格和CF卡相同,它是I/O设备,如:CF串口卡,CF网卡等等。因为我要做的是CF无线网卡,所以归属CF+卡的范畴。2. CF卡分为两类,I 型和II型,二者区别就是后者比前者厚一些。CF卡有50个引脚,它工作在PCMCIA模式下有两种接口标准,存储卡接口和I/O卡接口。两种接口定义可以参考CFspc1.4.pdf。二、硬件比较教研室板子DMA板子GPIOCF引脚CF引脚中间定义GPIONPOE_GP48OE#OE#CF_OEGPIO48NPWE_GP49WE#WE#CF_WEGPIO49NPIOR_GP50IORD#IORD#CF_IORGPIO50NPIOW_GP51IOWR#IOWR#CF_IOWGPIO51NPCE2_GP54CE2#CE2#CF_CE2GPIO54NPREG_GP55REG#REG#CF_REGGPIO55NPWAIT_GP56WAIT#WAIT#CF_WAITGPIO56NIOIS16_GP57IOIS16#IOIS16#CF_IOIS16GPIO57GPIO59CD1#CD1#CF_CD1CPLDGPIO60CD2#CD2#CF_CD2CPLDGPIO102VS1#VS1#CF_VS1接地GPIO103VS2#VS2#CF_VS2浮空GPIO104RESETRESETCF_RSTGPIO13GPIO105SRKR#BVD2CF_BVD2GPIO82GPIO106STSCHG#BVD1CF_BVD1GPIO11GPIO107IREQRDY/BSYCF_IRQGPIO9PSKTSEL_GP79LVCH16245ACPLDCF_DETECGPIO10GPIO101LVCH16245ACPLDCF_BUF_ONGPIO22注:1.教研室板子上PSKTSEL_GP79和GPIO101这两根GPIO程序中要强制置低,以使两个LVCH16245A锁存器使能。DMA板子上两个锁存器是硬件置低的。2.DMA板子上CPLD里设置成CF_DETEC=CF_CD1 |CFCD2; CF_BUF_ON=nPCE1&nPCE23.教研室板子上VS1和VS2是两根GPIO控制的,所以需要在接口程序中设置。.三、修改CF接口驱动程序(SocketDriver)1. 对比DMA的CF接口驱动程序pxa2xx_mainstone.c(/driver/pcmcia)进行修改。(1).定义要用到中断static struct pcmcia_irqs irqs = 0, IRQ_GPIO(59), PCMCIA0 CD1 , 0, IRQ_GPIO(60), PCMCIA0 CD2 , 0, IRQ_GPIO(106), PCMCIA0 STSCHG ,; (2).硬件初始化函数mst_pcmcia_hw_init()GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) | /配置输出使能GPIO_bit(GPIO49_nPWE) |/配置写使能GPIO_bit(GPIO50_nPIOR) |/配置读I/OGPIO_bit(GPIO51_nPIOW) |/配置写I/OGPIO_bit(GPIO85_nPCE_1) |/配置卡使能1GPIO_bit(GPIO54_nPCE_2);/配置卡使能2pxa_gpio_mode(GPIO48_nPOE_MD);/设置POE的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO49_nPWE_MD);/设置PWE的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO50_nPIOR_MD);/设置PIOR的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO51_nPIOW_MD);/设置PIOW的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO85_nPCE_1_MD);/设置PCE1的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO54_nPCE_2_MD);/设置PCE2的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO79_pSKTSEL_MD);/设置PSKTSEL的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO55_nPREG_MD);/设置PREG的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO56_nPWAIT_MD);/设置PWAIT的引脚号,第二功能代码和方向pxa_gpio_mode(GPIO57_nIOIS16_MD);/设置PIOIS16的引脚号,第二功能代码和方向 /*Set GPIO59,60,101,102,103,104,105,106,107 pin Direction-sjj*/ pxa_gpio_mode(59 | GPIO_IN); / CD1# pxa_gpio_mode(60 | GPIO_IN); / CD2# pxa_gpio_mode(101 | GPIO_OUT); / LV16245 pxa_gpio_mode(102 | GPIO_IN); /VS1# pxa_gpio_mode(103 | GPIO_IN); /VS2# pxa_gpio_mode(104 | GPIO_OUT); /RESET pxa_gpio_mode(106 | GPIO_IN); /STSCHG#BVD1 pxa_gpio_mode(107 | GPIO_IN); /IREQ/* set GPIO low output-sjj */GPCR(79) | GPIO_bit(79);GPCR(101) | GPIO_bit(101);GPCR(85) | GPIO_bit(85);GPCR(54) | GPIO_bit(54);GPCR(102) | GPIO_bit(102);skt-irq = (skt-nr = 0) ? MAINSTONE_S0_IRQ : MAINSTONE_S1_IRQ;/skt-irq = IRQ_GPIO(107);注:如果使用skt-irq = (skt-nr = 0) ? MAINSTONE_S0_IRQ : MAINSTONE_S1_IRQ;获得中断请求的话,必须修改irqs.h(/include/asm-arm/arch-pxa/)中的一个宏,#define MAINSTONE_S0_IRQ IRQ_GPIO(107) (3)Socket状态检测函数mst_pcmcia_socket_state()state-detect = 1; state-detect = ( (GPLR(59)&GPIO_bit(59) | (GPLR(60)&GPIO_bit(60)? 0 : 1;/判断CF卡是否插入state-ready = (GPLR(107)&GPIO_bit(107) ? 1 : 0; /判断是否有READY信号state-bvd1 = (GPLR(106)&GPIO_bit(106) ? 1 : 0;/判断BVD1信号state-bvd2 = 0;state-vs_3v = 1;state-vs_Xv = 0 ;state-wrprot = 0; /* not available */ (4)Socket配置函数根据接口所需的电源状态信息配置接口电源电压switch (state-Vcc) case 0: power |= MST_PCMCIA_PWR_VCC_0; break;case 33: power |= MST_PCMCIA_PWR_VCC_33; break;case 50: power |= MST_PCMCIA_PWR_VCC_50; break;default: printk(KERN_ERR %s(): bad Vcc %u/n,_FUNCTION_, state-Vcc); ret = -1;if (state-flags & SS_RESET) /sjj printk(rock pcmica: %s SS_RESET/n, _FUNCTION_); GPSR(104) |= GPIO_bit(104); udelay(1000); GPCR(104) |= GPIO_bit(104); /CF RESET位清零 (5)Socket初始化的时候将中断使能static void mst_pcmcia_socket_init(struct soc_pcmcia_socket *skt) soc_pcmcia_enable_irqs(skt, irqs, ARRAY_SIZE(irqs);2.修改soc_common.c(/driver/pcmcia/) 注释掉soc_common_pcmcia_poll_event中: mod_timer(&skt-poll_timer, jiffies + SOC_PCMCIA_POLL_PERIOD);soc_common_check_status(skt); 初始化的最后系统会调用该函数执行一个查询任务,它会启动一个定时器poll_timer,周期性的调用自身,每次调用都会执行soc_common_check_status(skt),检测PCMCIA的状态,这相当于用查询(而不是中断的方式)的方式来检测PCMCIA卡插槽的状态的改变。而我们采用的是用中断的触发对状态改变的处理,所以这两句不需要。四、问题和总结1. CF接口硬件初始化的几个关键信号RESET,IREQ,BVD1/STSCHG必须设置对,如果RESET对应的GPIO没有设置,或者设置的方向不对,则CF卡供不上电。2. GPIO的设置(1)想用某个GPIO来进行中断,例如GPIO17,申请中断号IRQ_GPIO(17);(2)对GPIO置位用:GPSR(gpio_nr)=|GPIO_bit(gpio_nr);(3)设置GPIO的输入输出和alternatefuntion用pxa_mode_gpio(gpio_nr|GPIO_OUT);(4)如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抢救病人时护士配合课件
- 抢救仪器设备管理
- (2025年标准)车位买卖委托协议协议书
- (2025年标准)车辆拉运协议书
- 2025-2030明矾石行业电子商务发展及线上营销策略研究报告
- 2025-2030挥发性有机物治理设备选型标准与效果评估研究报告
- (2025年标准)车厂不降价协议书
- 遵义医药高等专科学校《汽车商务礼仪》2024-2025学年第一学期期末试卷
- 河北经贸大学经济管理学院《实变函数论基础》2024-2025学年第一学期期末试卷
- 菏泽学院《中小学生心理健康教育与辅导》2024-2025学年第一学期期末试卷
- 2025年北京市人力资源市场薪酬数据报告(二季度)
- 广告牌安装后维护养护措施
- 山西煤矿建设管理办法
- 高职院校实训室管理办法
- 鼻息肉护理常规
- 《电子产品制造技术》课件-第1章 电子工艺技术入门
- Q-GDW12562-2024超特高压盘形悬式瓷绝缘子用瓷件原材料、工艺和检验规则
- (2025)水利安全员c证考试题库及参考答案
- 一线员工执行力培训内容
- 民营中医院开办可行性报告
- 经皮冠状动脉介入治疗指南2025
评论
0/150
提交评论