版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华为td数据卡/模块linux第三方集成指导文档huawgihuawei tech no logies co., ltd.华为技术有限公司all rights reserved版权所有侵权必究revision record 修订记录date日期revisi on version 修订 版本cr id/defect idcr号section number 修改 章节change description修改描述author作者2009-6-24vi.1.0初稿方晓志00110321华为td数据卡/模块linux第三方集成指导文档catalog 目 录1 目的32 范围33 总体概述33 linux
2、内核支持华为数据卡/模块的驱动架构33.2 linux td数据卡/模块支持的集成流程44 linux驱动模块集成方案4针对2618或是2.6.19内核版本的集成步骤5usb-storage驱动模块的集成步骤5针对2620或是更高的内核版本的集成方案说明7usb-storage驱动模块的集成步骤7针对低于2.6.18的内核版本的集成步骤81目的本文档主要针对华为td数据卡/模块设备某于linux嵌入式系统的集成开发活动进行相 关的指导说明。主要而向第三方软件开发商的集成开发人员。范围木文档主要说明了在linux嵌入式系统上支持td华为数据卡/模块设备的相关开发工作, 及其注意事项。3总体概述3
3、.1 linux内核支持华为数据卡/模块的驱动架构对于华为数据卡/模块和模块来说,不管是什么类型的接口,英上报的复合设备接口,最终均是加载为linux usb设备驱动层屮的相关驱动模块。对于华为td数据卡/模块设备的支持,linux系统相关的的usb驱动架构如卜图所示:用户程序用户空间字符设备层块设备层网络设备层vfs层tty层其他usb设备驱动程序层usb-storage.ko 驱动cdc-acm.ko 驱动其他设备驱动usb核心am空间usb主控制器华为td数据卡/模块设备如上图所示,在linux系统中的usb驶动架构中,跟华为数据卡/模块设备相关的驱动模 块,主要是usb设备驱动程序层中
4、的usb-storage驱动模块,cdc-acm驱动模块,这两个驱动模 块,均是linux内核版本中内置的驱动模块,因此一定耍确保集成的目标linux嵌入式系统中 已经包含了这两个驱动模块。3.2 linux td数据卡/模块支持的集成流程在linux嵌入式系统平台上支持华为td数据卡/模块,主要是通过修改linux嵌入式内核 代码来实现的。4 linux驱动模块集成方案本节主要说明通过修改linux恢入式系统内核的方案来支持华为td数据卡/模块的集成方案。而linux内核源代码可以从下而的网站链接上获取:http:www.keitiel()g/pu b/linux/kemel/v2.6/对丁
5、华为td模块,支持确保linux嵌入式系统的内核中集成了内置的cdc-acm.ko驱动模 块即可支持。而对于华为td数据卡设备,则需要确保linux嵌入式系统内核屮同时集成了内置的 usb-storage.ko和cdc-acm.ko驱动模块。并且按照当前的linux内核版木情况,选择4.1或是4.2 的修改步骤完成集成修改。4.1针对2.6.18或是2.6.19内核版本的集成步骤4.1.1 usb-storage驱动模块的集成步骤涉及的linux内核源码文件有:driversusbstoragelibusual.cdriversusbstorageusb.cdri ve rsus bstora
6、geu nusu al_de vs. hdriversusbstorageinitializers.cdriversusbstorageinitializers.h具体的修改步骤如下:1、修改libusual.c文件在文件中"#define unusual_dev(.)”宏定义后而增加一个新的宏定义:#define unusual_dev_hw(id_vendor, id_product, bcddevicemin, bcddevicemax, blntclass, vcndornamc, produclnamc, uscprotocol, usctransporl, initfun
7、ction, flags) .match_flags = (usb_device_id_match_device_and_version iusb_deviced_match_int_class), .idvendor = (id_vendor), .idproduct = (id_product), .bcddeviceo = (bcddeviccmin), .bcddevice_hi = (bcddevicemax), .blnterfaceclass = (blntclass), .driverjnfo = (flags)l(usb_us_type_stor«24)在文件中“#
8、iindcfunusual-dev"宏定义后面增加下面的宏定义:#undef unusual_dev_hw2、修改usb.c文件a) 在第一个 “#define unusual_dev(.)” 宏定义和"static struct usb_deviced storage_usb_idsz间,增加如下的宏定义:#define unusual_dev_hw(id_vendor, id_product, bcddevicemin, bcddevicemax, blntclass, vendorname, productname, useprotocol, usetransport
9、, initfunction, flags) .match_flags = (usb_device_id_match_device_and_version iusb_deviced_matchn t_class), .idvendor = (id_vendor)? .idproduct = (id_product), .bcddevice_lo = (bcddevicemin), .bcddevice_hi = (bcddevicemax), .blnterfaceclass = (blntclass), .driverjnfo = (flags)l(usb_us_type_stor«
10、;24)在“ static struct usb_devicestorage_usb_ids =.”语句块中的宏定义“#undefunusual_dev” z后,増加如下的宏定义:#undef unusual_dev_hw在第二个宏定义 “#define unusual_dev(.)” 和 ustatic struct us_unusual_dev us_unusual_dev_list j =.”语句之间,增加如下宏定义:#define unusual_dev_hw(id_vendor, id_product, bcddevicemin, bcddevicemax, blnterfacecl
11、ass, vendor_name5 product_name, use_protocol, use_transport, init_function, flags) v endorname = vendor_name,productname = product_name5 .useprotocol = use_protocol5 .usctransport = usc_transport, .initfunction = init_function, 在 ustatic struct us_unusual_dev us_unusual_dev_list =语句块中的"#undefun
12、usual_dev”宏定义z后,增加如下宏定义:n#undcf unusual_dev_hw3、修改 unusual_devs.h 文件unusual_devs.h文件是川于声明需要特殊处理的设备,其顺序为根据vendor id进行升序排序的。凶此需要根据其排列顺序,在文件中找出华为vendor id 0xl2dl处于中i'可 的两个相邻的声明位置,并在该位置加入对应的声明:unusual_dev_hw( 0xl2dl, oxldal, oxoooo, 0x0100,0x08,“huawei”,“huawei mobile mass storage0,us sc device, us
13、pr device, usb stor huawei init,0),4、修改 initializers.c 文件在文件中增加usb_stor_huawe i_i nit函数的定义:int usb_stor_huawei_init(struct us_data *us)int result = 0;us->iobuf0 = 0x0;result = usb_stor_control_msg(us, us->send_ctrl_pipe,usb_req_set_feature, usb_type_standard iusb_recip_device,0x01,0x0, us->
14、iobuf, 0x0, 1000);us_debugp("usb_control_msg performing result is %dn", result); return 0;5、修改 initializers.h 文件在文件屮增加usb_stor_huawei_ini(函数的声明:int usb_stor_huawei_init(struct us_data *us);4.2针对2.6.20或是更高的内核版本的集成方案说明421 usbstorage驱动模块的集成步骤涉及的linux内核源码文件有:driversusbstorageunusual_devs.hdriv
15、ersusbstorageinitializers.cdriversusbstorageinitializers.h具体的修改步骤如下:1、修改 unusual_devs.h 文件unusual_devs.h文件是用于声明需要特殊处理的设备,其顺序为根据vendor id进行 升序排序的。因此需要根据其排列顺序,在文件中找出华为vendorid 0xl2dl处于中间 的两个相邻的声明位置,并在该位置加入对应的声明:unusual_dev( ox 12d 1, ox 1 da 1,0x0000, 0x0100,“huawei”,“huawei mobile mass storageus sc d
16、evice, us pr device, usb stor huawei init,0),2、修改 initializers.c 文件在文件中增加usb_stor_huawei_init函数的定义:int usb_stor_huawei_init(struct us_data *us)int result = 0;us->iobuf0 = 0x0;result = usb_stor_control_msg(us, us->send_ctrl_pipe,usb_req_set_feature, usb_type_standard iusb_rec1p_device,0x01,0x0, us->iobuf, 0x0, 1000);us_debugp("usb_control_msg performing result is %dn", result); return 0;3、修改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度山西省高校教师资格证之高等教育法规真题练习试卷B卷附答案
- 2024年大、中容量数字程控交换机项目资金需求报告代可行性研究报告
- 2024年机械治疗及病房护理设备项目资金申请报告代可行性研究报告
- 幼儿园校舍安全排查自查报告范文
- 2024年产品保修服务协议文本
- 2024年专用液化气运输服务协议范本
- 2024年建筑效果设计方案协议模板
- 2024年二手车销售协议:全面细化
- 仓库租赁与承包协议范本2024年适用
- 出口业务协议样式2024年专业
- 教科版科学二年级上册全册教案(完整版)
- 院长行政查房科主任汇报
- 人教鄂教版小学科学六年级下册全册分层练习
- 情感纠纷案件调解协议书
- 孔明灯的知识与制作课件
- 安徽省江南十校2023-2024学年高一上学期12月分科模拟联考数学试题(解析版)
- 建筑工地施工组织与管理课件
- 风电场项目施工进度计划及保证措施
- 《心理调适方法》课件
- 2024-2023-2024年中考语文三年真题分类汇编(全国版)21记叙文 试卷(含答案解析)
- 材料科学与自然辩证法
评论
0/150
提交评论