历史上的今天
今天是:2025年07月26日(星期六)
2021年07月26日 | USB设备驱动移植之开发板做U盘
2021-07-26 来源:eefocus
TQ2440开发板有两个USB端口,需要把第二个USB(就是烧写的那个 USB 口)设置为USB device
1、修改源码
首先把开发板当成从设备 来 用,也 就 是 该 USB 口 使 用 USB Device 功 能 , 修 改 内 核 源 码 的“arch/arm/mach-s3c2440/mach-smdk2440.c”文件:
在 2.6.30.4 中的 52 行添加如下内容:
#include 在 151 行添加如下内容: .lpcsel = ((0xCE6) & ~7) | 1<<4, }; static void EmbedSky_udc_pullup(enum s3c2410_udc_cmd_e cmd) { printk(KERN_DEBUG “EmbedSky udc: pullup(%d)n”,cmd); switch (cmd) { case S3C2410_UDC_P_ENABLE : s3c2410_gpio_setpin(S3C2410_GPG12, 1); break; case S3C2410_UDC_P_DISABLE : s3c2410_gpio_setpin(S3C2410_GPG12, 0); break; case S3C2410_UDC_P_RESET : break; default: break; } } static struct s3c2410_udc_mach_info EmbedSky_udc_cfg = { .udc_command = EmbedSky_udc_pullup, }; static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, }; 在 180 行添加如下内容: static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, &s3c_device_usbgadget, }; 在 196 行添加如下内容: static void __init smdk2440_machine_init(void) { s3c24xx_fb_set_platdata(&smdk2440_fb_info); platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices)); smdk_machine_init(); s3c2410_gpio_setpin(S3C2410_GPG12, 0); s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPIO_OUTPUT); s3c24xx_udc_set_platdata(&EmbedSky_udc_cfg); 2、配置内核 添加上对 USB Device 的配置,输入:#make menuconfig,进入“Device Drivers”选项的配置单的“USB support”选项的配置单的最后一项“USB Gadget Support”选项的配置单,加入对 UDC 设备的支持,以及文件系统的支持(以模块的形式),然后配置如下所示: Device Drivers —> [ ] USB support —> <*> USB Gadget Support —> USB Peripheral Controller (S3C2410 USB Device Controller) S3C2410 USB Device Controller < M > USB Gadget Drivers < M > File-backed Storage Gadget* 配 置 完 毕 后,编 译 出uImage 镜 像 , 烧 写 到 开 发 板 中 , 然 后 在 PC 的 终 端 上 使 用 #make modules SUBDIRS=drivers/usb/gadget/ 命令可以编译出来刚刚以模块形式配置的文件系统的驱动模块,最后在内核源码的“drivers/usb/gadget/”目录下生成名为:“g_file_storage.ko”的驱动模块,将其复制到文件系统的“/lib/”目录下面,然后制作新的yaffs2根文件系统: #mkyaffs2image root_2.6.30.4 root.bin 将新的文件系统烧写到开发板中,启动开发板。 3、实现开发板做U盘 在开发板的串口终端使用下面的命令挂载刚刚编译出来的驱动模块: $insmod /lib/g_file_storage.ko file=/dev/mtdblock2 removable=1 yaffs 文件系统所在的分区为mtdblock2 ,可以作为“U 盘”的存储部分, 然后挂载完毕后,插入 USB 线到开发板的 USB Device 接口(也就是烧写时用的那个 USB 口),然后可以在 Windows 的设备管理器中发现可移动硬盘,此时整个开发板就是一个“U 盘”,然后 yaffs 文件系统的分区就是“U 盘”的存储器。 4、支持鼠标键盘


下一篇:USB设备驱动移植之U盘挂载
史海拾趣
|
VisualAudio设计和开发环境是设计和开发音频系统的新软件,它的实时架构特别适合音频产品的开发.本文简短介绍VisualAudio,然后描述它的构架,音频模块和在音频产品上的应用… 查看全部问答> |
|
PXA270核心板方案: CPU:PXA270 SDRAM:128M FLASH:32M 接口:USB、SDCARD、SERIAL等 LCD+TOUCH:3.5‘ 支持WIFI 方案可提供:SCH + PCB + BOOM + WINCE ...… 查看全部问答> |
|
CoCreateInstance返回:没有注册类别(wince6.0 emulator sdk 中使用msxml) 大家好!我想在Wince的模拟器上使用msxml发送xml文件,代码如下: MSXML2::IXMLHTTPRequest* pIXMLHTTPRequest = NULL; CoInitialize(NULL); HRESULT hr; hr = CoCreateInstance (__uuidof(MSXML2::XMLHTTPRequest), NU ...… 查看全部问答> |
|
我想问下,驱动什么的都弄好了,板上只有一个usb口,我外接了一个四口的USB HUB,接四个摄像头 再在dev文件夹中新建设备文件video0,video1,video2,video3,这四个摄像头能否同时使用啊 我现在只能做到四个来回的切换,想实现一个窗口中同时显示四 ...… 查看全部问答> |
|
请问:拉丁文(西班牙语)是否支持7bit编码方式? 在给客户做一个短信终端,客户要求已7bit编码方式实现拉丁文的短信内容 多谢!… 查看全部问答> |
|
徐家骏:从应届毕业生到年薪千万2009-03-02 14:48从一个应届毕业生,到年薪千万的华为副总裁,再到离开华为转战百度,徐家骏(博客)的十年从业经历和经验对于今年的应届毕业生来说绝对可资借 鉴,我们从中也可以一窥华为公司的运作过程和徐的职 ...… 查看全部问答> |




