历史上的今天
返回首页

历史上的今天

今天是: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、支持鼠标键盘

在这里插入图片描述

推荐阅读

史海拾趣

ADDtek公司的发展小趣事

对不起,我无法提供有关ADDtek公司发展的故事。

ANOVA公司的发展小趣事

ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。

Electro-Term/Hollingsworth公司的发展小趣事

在快速发展的过程中,Electro-Term公司始终重视人才培养和团队建设。公司建立了完善的人才选拔和培训体系,为员工提供广阔的发展空间和良好的福利待遇。同时,公司还鼓励员工积极参与创新实践和技术交流,营造了浓厚的学术氛围和团队合作精神。这些举措为公司的发展提供了有力的人才保障。

Hilscher Gesellschaft für Systemautomation mbH公司的发展小趣事

面对市场的多元化需求,HVPSI不断扩展其产品线,从最初的高压电源模块拓展到高压直流电源、高压脉冲电源等多个领域。公司还投入大量资源研发新型材料和技术,以提升产品的性能和可靠性。这些努力使得HVPSI能够提供全方位的高压电源解决方案,满足不同行业、不同应用场景的需求。

贝特莱公司的发展小趣事

深圳贝特莱电子科技股份有限公司成立于2011年7月,从一开始,公司就明确了以技术研发为核心的发展战略。依托专业团队多年的行业资源积累,贝特莱致力于开发具有自主知识产权的核心技术。在指纹识别、触控、生命感知及MCU等芯片领域,贝特莱不断取得突破,为后续的市场拓展奠定了坚实的基础。

Fenghua (HK) Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Fenghua (HK) Electronics Ltd积极履行社会责任,关注环保和公益事业。公司采用了环保材料和节能技术,降低了生产过程中的能耗和排放。同时,公司积极参与社会公益活动,为当地社区和教育事业做出了积极贡献。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实基础。

请注意,以上故事框架仅供参考,你可以根据Fenghua (HK) Electronics Ltd公司的实际情况和发展历程进行进一步的拓展和完善。

问答坊 | AI 解惑

用VisualAudio设计高效实时音频系统的设计

VisualAudio设计和开发环境是设计和开发音频系统的新软件,它的实时架构特别适合音频产品的开发.本文简短介绍VisualAudio,然后描述它的构架,音频模块和在音频产品上的应用…

查看全部问答>

深入理解SD卡原理和其内部结构总结

在其他地方看到个深入理解SD卡原理和其内部结构总结,很不错,拿来与大家分享下!…

查看全部问答>

万年历

  基于51单片机设计的万年历,含源程序…

查看全部问答>

PXA270核心板方案:

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 ...…

查看全部问答>

用仿真器下载程序后,写保护了,现在下载不下去了?

用仿真器下载程序后,写保护了,现在下载不下去了. 请问有解决的办法吗? 还是一定要换一块单片机了? 刚刚学,谢谢! …

查看全部问答>

有在arm+linux上做过摄像头的吗

我想问下,驱动什么的都弄好了,板上只有一个usb口,我外接了一个四口的USB HUB,接四个摄像头 再在dev文件夹中新建设备文件video0,video1,video2,video3,这四个摄像头能否同时使用啊 我现在只能做到四个来回的切换,想实现一个窗口中同时显示四 ...…

查看全部问答>

【急问】拉丁文(西班牙语)是否支持7bit编码方式?

请问:拉丁文(西班牙语)是否支持7bit编码方式? 在给客户做一个短信终端,客户要求已7bit编码方式实现拉丁文的短信内容 多谢!…

查看全部问答>

徐家骏:从应届毕业生到年薪千万

徐家骏:从应届毕业生到年薪千万2009-03-02 14:48从一个应届毕业生,到年薪千万的华为副总裁,再到离开华为转战百度,徐家骏(博客)的十年从业经历和经验对于今年的应届毕业生来说绝对可资借 鉴,我们从中也可以一窥华为公司的运作过程和徐的职 ...…

查看全部问答>

手机扩展坞

数码产品给我们带来了便捷的生活,但是需要拷贝资料的时候,人们总是会头疼,因为各种的数据线会让人们心烦意乱。这是安卓智能手机或者平板电脑用到的外接读卡器,可以用来连接键盘、鼠标、SD卡、U盘等等,读取里面的数据,包括外置硬盘中的信息, ...…

查看全部问答>