mmcsd卡驱动程序设计(通信10123赵翔)(编辑修改稿)内容摘要:
C/SD 卡模块注册初始化 : static int __devinit mmc_pxa_module_init( void ) { int ret = ENODEV。 ifdef CONFIG_ARCH_RAMSES RAMSES_MMC_ON()。 udelay(1000)。 endif host = mmc_register( MMC_REG_TYPE_HOST, amp。 pxa_mmc_controller_tmpl_rec, sizeof( pxa_mmc_hostdata_rec_t ) )。 //register the SD device if ( !host ) { MMC_DEBUG( MMC_DEBUG_LEVEL0, failed to register with MMC core\n )。 goto error。 } ret = 0。 error: return ret。 } 设备文件操作接口定义 static mmc_controller_tmpl_rec_t pxa_mmc_controller_tmpl_rec = { owner: THIS_MODULE, name: PXA250, block_size_max: PXA_MMC_BLKSZ_MAX, nob_max: PXA_MMC_NOB_MAX, probe: pxa_mmc_probe, init: pxa_mmc_init, remove: __devexit_p( pxa_mmc_remove ), update_acq: pxa_mmc_update_acq, init_card_stack: pxa_mmc_init_card_stack, check_card_stack: pxa_mmc_check_card_stack, setup_card: pxa_mmc_setup_card, stream_read: pxa_mmc_stream_read, read_block: pxa_mmc_read_block, read_mblock: pxa_mmc_read_mblock, stream_write: pxa_mmc_stream_write, write_block: pxa_mmc_write_block, write_mblock: pxa_mmc_write_mblock }。 16 MMC 接口初始化 static int pxa_mmc_init( mmc_controller_t ctrlr ) { int ret = ENODEV。 pxa_mmc_hostdata_t hostdata = (pxa_mmc_hostdata_t)ctrlrhost_data。 /* 1. allocate buffer */ hostdata = kmalloc( PXA_MMC_IODATA_SIZE, GFP_ATOMIC )。 //2K if ( !hostdata ) { ret = ENOMEM。 goto error。 } /* 2. initialize iobuf */ hostdata = PXA_MMC_BLKSZ_MAX。 /* current block size in bytes 1024* / hostdata = PXA_MMC_IODATA_SIZE。 /* buffer size for each transfer */ hostdata = PXA_MMC_BLOCKS_PER_BUFFER。 /* number of blocks */ /* 3 request irq */ if ( request_irq( IRQ_MMC, pxa_mmc_irq, 0, MMC, ctrlr ) ) { MMC_ERROR( failed to request IRQ_MMC\n )。 goto error。 } /* 4 init GPIO about MMC/SD/SDIO*/ init_gpio( )。 CKEN |= CKEN12_MMC。 /* enable MMC unit clock */ ret = 0。 goto out。 error: kfree( hostdata )。 out: return ret。 } GPIO 初始化函数 static void init_gpio(void) { GPCR1 |= 0x1。 //clear pin32 GPDR1 = GPDR1 | (10)。 //config pin32 as output GAFR1_L = (GAFR1_Lamp。 0xfffffffc) | (20)。 //) pin32 is used for function 2MMCLK //MMDAT0 PIN92 GPSR2 |= 0x10000000。 //pin92 configured as an output, set pin level high (one). 17 GPDR2 |= 0x10000000。 //pin92 as output // GPDR2 = GPDR2 amp。 ~(128)。 GAFR2_U = (GAFR2_U amp。 0xfcffffff) | (124)。 //pin32 is used for function 1MMDAT0 //MMDAT1 PIN109 GPSR3 |= (113)。 GPDR3 |= (113)。 GAFR3_L = (GAFR3_L amp。 0xf3ffffff) | (126)。 //MMDAT2 PIN110 GPSR3 |= (114)。 GPDR3 |= (114)。 GAFR3_L = (GAFR3_L amp。 0xcfffffff) | (128)。 //MMDAT3 PIN111 GPSR3 |= (115)。 GPDR3 |= (115)。 GAFR3_L = (GAFR3_L amp。 0x3fffffff) | (130)。 //MMCMD PIN112 GPSR3 |= 0x00010000。 GPDR3 |= 0x00010000。 //GPDR3 = GPDR3 amp。 ~(116)。 GAFR3_U = (GAFR3_U amp。 0xfffffffc) | (10)。 //function1 GPSR3 |= 0x0000e000。 //PIN111PIN109 GPDR3 |= 0x0000e000。 GAFR3_L = (GAFR3_L amp。 0x03ffffff) | 0x54000000。 }。mmcsd卡驱动程序设计(通信10123赵翔)(编辑修改稿)
相关推荐
从图中可以看出大部分的半导体材料由于其过宽的禁带宽度使得其对太阳能的利用率很低。 目前为止,在自然界中并没有发现天然存在的氮化碳晶体。 直到 1993年 7 月,美国哈佛大学的研究人员通过激光溅射技术人工合成了氮化碳薄膜,此后立即引起了全世界材料界的关注,世界各地的实验室开始尝试各种方法来合成这种具有低密度高硬度的非极性共价化合物。 目前目前,纳米颗粒的光催化剂制备一般分为气相法和液相法。 (
集成性非常的重要。 在 SAP 中,物料主数据和以下内容实时集成: 采购; 物料的库存管理,包括物料移动记账和盘点; 发票记账时的发票校验; 销售和分销的销 售订单流程; 生产计划和控制的物料需求计划,排程,以及生产排程; 和财务有关的计价方式或成本计算。 物料主数据的建立可以针对不同的物料类 企业资源计划系统项目建议书 14 2020102 深圳太太药业 ERP
12 2 3 .7 5 6 6 0 .6 1 7 73 8 .4 6bbbtt b , 合格 查得安装角为 81176。 ( 3) 导叶: 由前面的计算知: 2 ,选 TP3A 型, mm , ~ nt , 于是 取 , 32nB mm。 0 . 5 9 5 3 2 . 5 0 5 1 9 . 3 4 0 5n n nt t b m m 3 . 1
ike 39。 +kind+39。 or Name like 39。 +kind+39。 )。 //SC数据库的一个表名 ResultSet rs=(sql)。 java 里面 的分类树可以对产品进行分类,此 处 java 代码 为: (此处详细 代码见附录) 需要用到 java 里面 的 分类树结构 : div class=dtree div align=center script
初达到标准化,形成批量生产。 由于改性环氧树脂材料的性能不断提高,使封装密度高,引线间距小,成本低,适于 大规模生产并适合用于 SMT,从而使塑料扁平引线封装 (PQFP)迅速成为80 年代电子封装的主导产品, I/O 也高达 208~240 个。 这个时期,荷兰飞利浦公司还研发出了俩边 引线的先外形封装 (SOP,Small Outline Package)的系列产品。 20世纪 80年代至
存量,并考虑到撬装设备的运输方便性, LNG储罐选用 60m3的卧式储罐。 LNG储罐设液位 计、差压变送器、压力变送器、温度变送器、压力表等。 以实现对储罐内 LNG液位、温度、压力的现场指示及远程控制。 罐体顶部设安全防爆装置,下部设夹层抽接口。 根据系统的工作压力,并考虑并考虑 经济性,确定储罐的内罐压力为 ,外罐设计压力为。 低温储罐主要技术参数见表 61 表 61 低温储罐主要技术参数