LinuxUSBgadget设备驱动解析4201.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《LinuxUSBgadget设备驱动解析4201.docx》由会员分享,可在线阅读,更多相关《LinuxUSBgadget设备驱动解析4201.docx(47页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Linuux UUSB gaddgett设备驱驱动解析析(1)“功能体体验”利用Liinuxx USSB ggadgget设设备驱动动可以实实现一些些比较有有意思的的功能,举举两个例例子: 1、一个个嵌入式式产品中中的某个个存储设设备,或或是一个个存储设设备的某某个分区区,可以以作为一一个U盘盘被PCC设别,从从而非常常方便的的完成文文件交互互,这个个功能被被广泛的的应用于于手机、数数码相机机等产品品中。2、 一个嵌入入式设备备通过UUSB连连接到你你的PCC后,在在你的PPC端会会出现一一个新的的网络连连接,在在嵌入式式设备上上也会有有一个网网卡设备备,你可可以配置置它们的的IP地地址,并并
2、进行网网络通讯讯,俗称称USBBNETT。所有USSB通讯讯的设备备端都有有usbb deevicce程序序,通常常称它们们为ussb固件件。在一一些功能能简单的的设备里里,用一一些专用用的可编编程USSB控制制器就可可以了。而而在一些些运行了了类似llinuux操作作系统的的复杂的的嵌入式式系统中中,要完完成ussb ddeviice程程序,就就会要求求你不仅仅熟悉uusb devvicee控制器器的操作作,还要要熟悉操操作系统统的驱动动架构。我想通过过 “功能体体验”、“驱动调调试”、“gaddgett驱动结结构分析析”、“编写一一个自己己的gaadgeet驱动动”这4个个方面解解析lii
3、nuxx ussb ggadgget设设备驱动动的编写写方法。一、liinuxx模拟UU盘功能能的实现现在硬件环环境为华华清远见见的fss24110平台台,软件件环境为为linnux-2.66.266的liinuxx系统上上,实现现模拟UU盘的功功能。向内核添添加代码码#inccludde #inncluude #inccludde 修改arrch/armm/maach-s3cc24110/mmachh-smmdk224100.c/*USSB ddeviice上上拉电阻阻处理 */ staaticc vooid smddk24410_udcc_puulluup(eenumm s33c24410
4、_udcc_cmmd_ee cmmd) u8 *s33c24410_pulllupp_innfo = , Puull-up enaablee, Pulll-uup ddisaablee, UDCC reesett, iin ccasee off ; prrinttk(smddk24410_udcc: %sn,s3cc24110_ppulllup_inffoccmd); s33c24410_gpiio_ccfgppin(S3CC24110_GGPG99, SS3C224100_GPPG9_OUTTP); sswittch (cmmd) ccasee S33C24410_UDCC_P_ENAABL
5、EE : ss3c224100_gppio_settpinn(S33C24410_GPGG9, 1); /sset gpgg9 ooutpput HIGGH bbreaak; ccasee S33C24410_UDCC_P_DISSABLLE : s33c24410_gpiio_ssetppin(S3CC24110_GGPG99, 00); /seet ggpg99 ouutpuut LLOW breeak; casse SS3C224100_UDDC_PP_REESETT : /FFIXMME! bbreaak; ddefaaultt: bbreaak; stattic strructt s
6、33c24410_udcc_maach_inffo ssmdkk24110_uudc_cfgg _iniitdaata = .udcc_coommaand = ssmdkk24110_uudc_pulllupp, ;stattic strructt pllatfformm_deevicce *smddk24410_devvicees _iniitdaata = , &ss3c_devvicee_ussbgaadgeet, /*USBB gaadgeet ddeviice设设备登记记*/ ;stattic voiid _innit sdmmk24410_iniit(vvoidd) uu32 up
7、lll_vvaluue; sett_s33c24410ffb_iinfoo(&ssmdkk24110_llcdccfg); ss3c224xxx_uddc_sset_plaatdaata(&smmdk224100_uddc_ccfg); /* 初初始化*/ ss3c_devvicee_sddi.ddev.plaatfoorm_datta = &ssmdkk24110_mmmc_cfgg; /* TTurnn offf ssusppendd onn booth USBB poortss, aand swiitchh thhe * sseleectaablee USSB pportt too US
8、SB ddeviice modde. */ ss3c224100_moodiffy_mmiscccr(S3CC24110_MMISCCCR_USBBHOSST | SS3C224100_MIISCCCR_UUSBSSUSPPND00 | S33C24410_MISSCCRR_USSBSUUSPNND1, 0xx0);/* 设置UUSB时时钟 */ uppll_vallue = ( 00x788 S33C24410_PLLLCONN_MDDIVSSHIFFT) | (00x022 S33C24410_PLLLCONN_PDDIVSSHIFFT) | (00x033 S33C24410_PLLLC
9、ONN_SDDIVSSHIFFT); whiile (uppll_vallue != reaadl(S3CC24110_UUPLLLCONN) wwrittel(uplll_vvaluue, S3CC24110_UUPLLLCONN); udeelayy(200); 修改drriveers/usbb/gaadgeet/stattic voiid sstarrt_ttrannsfeer(sstruuct fsgg_deev *fsgg, sstruuct usbb_epp *eep, strructt ussb_rrequuestt *rreq, innt *pbuusy, ennum fsgg
10、_buuffeer_sstatte *staate) innt rc; uudellay(8000); 配置内核核支持UU盘模拟拟 UUSB Gaddgett Suuppoort - UUSB Perriphheraal CConttrolllerr (SS3C224100 USSB DDeviice Conntroolleer) - S3CC24110 UUSB Devvicee Coontrrolller * S33C24410 udcc deebugg meessaagess USSB GGadgget Driiverrs Stooragge GGadgget3、编译译内核#makke
11、zzImaage #maake moddulees在目录ddrivverss/ussb/ggadgget下下生成gg_加载驱动动,测试试功能利用前面面的生成成的内核核,启动动系统后后,加载载g_#inssmodd g_ # inssmodd g_ sstalll=00 reemovvablle=11 0.03 USBB: uusb_gaddgett_reegissterr_drriveer() g_ 00.044 USSB: binndinng ggadgget driiverr g_ 00.055 USSB: s3cc24110_sset_sellfpoowerred() gg_ ggadg
12、get: SStorragee Gaadgeet, verrsioon: 20 Octtobeer 220044 g_ gaadgeet: Nummberr off LUUNs=1 gg_ ggadgget-lunn0: ro=0, fille: /deev/mmtdbblocck3 0.006 UUSB: uddc_eenabble callledd smmdk224100_uddc: Pulll-uup eenabble连接设备备到wiindoows,wwinddowss系统会会自动设设备到一一个新的的U盘加加入。格格式化UU盘,存存入文件件。卸载载U盘后后,在目目标板上上执行如如下操作作
13、:# mkkdirr /mmnt/gaddgett # mouunt -t vfaat /devv/mttdbllockk2 /mntt/gaadgeet/ #lls可以看到到winndowws存入入U盘的的文件。二、ussbneet功能能的实现现配置内核核支持uusbnnet UUSB Gaddgett Suuppoort - UUSB Perriphheraal CConttrolllerr (SS3C224100 USSB DDeviice Conntroolleer) - S3CC24110 UUSB Devvicee Coontrrolller * S33C24410 udcc de
14、ebugg meessaagess USSB GGadgget Driiverrs Ettherrnett Gaadgeet (witth CCDC Ethhernnet suppporrt) * RNNDISS suuppoort2、编译译内核#makke zzImaage #maake moddulees在目录ddrivverss/ussb/ggadgget下下生成gg_ettherr.koo3、加载载驱动,测测试功能能利用前面面的生成成的内核核,启动动系统后后,加载载g_eetheer.kko#inssmodd g_ethher.ko #iffconnfigg ussb0 1922.16
15、68.11.1220 ussb0 Linnk eencaap:EEtheerneet HHWadddr 5E:C5:F6:D4:2B:91 ineet aaddrr:1992.1168.1.1120 Bcaast:1922.1668.11.2555 MMaskk:2555.2255.2555.0 UP BROOADCCASTT RUUNNIING MULLTICCASTT MTTU:115000 Meetriic:11 RXX paackeets:2533 errrorrs:00 drroppped:0 ooverrrunns:00 frramee:0 TX paccketts:443 eer
16、roors:0 ddropppedd:0 oveerruuns:0 ccarrrierr:0 colllissionns:00 txxqueeuellen:10000 RRX bbytees:3352777 (34.4 KKiB) TXX byytess:1001522 (99.9 KiBB)连接设备备到wiindoows,wwinddowss系统会会提示安安装驱动动,根据据提示安安装上RRNDIIS驱动动。这个个驱动可可以在网网络上找找到。此此时wiindoows会会新生成成一个网网络连接接,配置置它的iip地址址等信息息。然后后就可以以和目标标系统通通过USSB实现现网络通通讯了。Linu
17、ux UUSB gaddgett设备驱驱动解析析(2)-驱驱动调试试作者:刘刘洪涛, 华清清远见嵌嵌入式学学院金牌牌讲师。这一节主主要把在在实现“linnux模模拟U盘盘功能”过程中中的一些些调试过过程记录录下来,并并加以解解析。一、 背景知识识 1、UUSB Masss SStorragee类规范范概述UUSB 组织在在uniiverrsall Seeriaal BBus Masss SStorragee Cllasss Sppaceeifiicattionn 1.1版本本中定义义了海量量存储设设备类(MMasss Sttoraage Claass)的的规范,这这个类规规范包括括四个 独立立
18、的子类类规范,即即: 11. UUSB Masss SStorragee Cllasss Coontrrol/Bullk/IInteerruupt (CBBI) Traanspportt2.UUSB Masss SStorragee Cllasss Buulk-Onlly TTrannspoort33.USSB MMasss Sttoraage Claass ATAA Coommaand Bloock 4.UUSB Masss SStorragee Cllasss UFFI CCommmandd Sppeciificcatiion 前两个个子规范范定义了了数据/命令/状态在在USBB 上的的传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LinuxUSBgadget 设备 驱动 解析 4201
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内