linux2.6.24下usb驱动完成情况及问题解决

Linux2.6.24下的USB HOST移植 未作移植,插入U盘后提示如下[root@Emux/]#usb 1-1: new full speed USB device using s3c2410-ohci and address 2usb 1-1: device descriptor read/64, error -62usb 1-1: device descriptor read/64, error -62usb 1-1: new f 阅读详情

========================================================================
   任务一:                                                                                                                                                   
  任务描述:完成在linux2.6.22下的usb驱动的移植,实现usb主设备驱动,并写出总结文档       
========================================================================


1.在kernel启动是出现如下问题:
mount: mounting tmpfs on /dev failed
解决方案如下,
 File systems  --->
     Pseudo filesystems  --->
        [*] Virtual memory file system support (former shm fs)

2.另附上vivi启动参数,最近一直用nfs,转换着麻烦,先记下来cp
设置从flash 启动:
param set linux_cmd_line "noinitrd init=/linuxrc console=ttySAC0 root=/dev/mtdblock3"
设置从nfs启动:
param set linux_cmd_line "noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs nfsroot=192.192.192.xx:/srv/nfs/rootfs ip=192.192.192.200:192.192.192.xx:192.192.192.xx:255.255.255.0::eth0:off"
设置从ramdisk启动:
param set linux_cmd_line "console=ttySAC0 initrd=0x30800000,0x400000 root=/dev/ram"。

3.测试通过了usb device的测试,可以进行从设备操作,对usb device进行模块加载操作,方法如下:(两个.ko文件为usb驱动的模块文件,需要加载后使用)
$ insmod s3c2410_udc.ko
$ insmod g_file_storage.ko file=/dev/mtdblock5 stall=0 removable=1

4、usb从部分添加内容:
4.1.usb初始化为从设备时配置:
+++ linux-2.6.22/arch/arm/mach-s3c2410/mach-f2410.c    2007-11-15
     &s3c_device_i2c,
     &s3c_device_iis,
     &s3c_device_nand,
+/* add by feng */
+    &s3c_device_usbgadget,
 };
 /* USB */
     s3c_device_usb.dev.platform_data = &usb_s3c2410_info;
     s3c2410_modify_misccr(S3C2410_MISCCR_USBSUSPND0 |
-                  S3C2410_MISCCR_USBSUSPND1, 0x8);
+                  S3C2410_MISCCR_USBSUSPND1 |
+                  S3C2410_MISCCR_USBHOST, 0x0);

4.2.添加udc驱动:
+++ linux-2.6.22/drivers/usb/gadget/s3c2410-udc.c    2007-11-15 17:38:17.000000000 +0800
+++ linux-2.6.22/drivers/usb/gadget/s3c2410-udc.h    2007-11-15 17:38:31.000000000 +0800
+++ linux-2.6.22/include/asm/arch-s3c2410/regs-udc.h    2007-11-16 01:22:25.000000000 +0800

4.3.在kconfig中添加udc选项支持:
+++ linux-2.6.22/drivers/usb/gadget/Kconfig    2007-11-15 
Select this only if your OMAP board has a Mini-AB connector.
+# add by feng
+config USB_GADGET_S3C2410
+        boolean "S3C2410"
+        depends on ARCH_S3C2410
+        help
+          Samsung's S3C2410 is an ARM-4 processor with an integrated
+          full speed USB 1.1 device controller.
+          It has 4 configurable endpoints, as well as endpoint
+          zero (for control transfers).
+
+config USB_S3C2410
+        tristate
+        depends on USB_GADGET_S3C2410
+        default USB_GADGET
+        select USB_GADGET_SELECTED
+
+config USB_S3C2410_DEBUG
+        boolean "S3C2410 udc debug messages"
+        depends on USB_GADGET_S3C2410
+#end add
+
 config USB_GADGET_AT91
     boolean "AT91 USB Device Port"
4.4.在makefile中添加udc选项支持:
+++ linux-2.6.22/drivers/usb/gadget/Makefile    2007-11-15 17:01:04.000000000 +0800
 obj-$(CONFIG_USB_FSL_USB2)    += fsl_usb2_udc.o
+#add by feng
+obj-$(CONFIG_USB_S3C2410)       += s3c2410-udc.o



一、学习ctags查找源码的用法,超级方便
步骤:
1,现在源码目录中运行指令
    $ ctags –R *      ($ 为Linux系统Shell提示符)
2,用vi进入编辑环境,
    Ctrl + ]查找查询
    Ctrl + T返回上一步
    :ta XX    查找文件XX
二、usb从部分(以后添加)
1,添加udc驱动:

在kconfig中添加udc支持:

在makefile中添加udc支持:

2.配置
Device Drivers  --->
    USB Gadget Support  --->
         <M> Support for USB Gadgets
         USB Peripheral Controller (S3C2410)  --->
            (X) S3C2410
         <M>   File-backed Storage Gadget


参考luofuchong的帖子,修改文件,并修改mach-f2410.c文件,使其支持usb的初始化
在mach-f2410.c添加如下:

#include <asm/arch/regs-clock.h>
#include <asm/arch/regs-gpio.h>
#include <asm/arch/usb-control.h>
#include <linux/device.h>
#include <linux/delay.h>

/* USB */
static struct s3c2410_hcd_info usb_s3c2410_info = {
       .port[0]        = {
               .flags  = S3C_HCDFLG_USED
       },
       .port[1]        = {
               .flags  = S3C_HCDFLG_USED
       }
};

int __init s3c2410_init_usb(void)
{
    unsigned long upllvalue;
    printk("USB Control, (c) 2006 pc104/n");   
    s3c_device_usb.dev.platform_data = &usb_s3c2410_info;

    s3c2410_modify_misccr(S3C2410_MISCCR_USBSUSPND0 |
                  S3C2410_MISCCR_USBSUSPND1, 0x8);

    upllvalue = (0x78<<12)|(0x02<<4)|(0x03);
    while(upllvalue!=__raw_readl(S3C2410_UPLLCON))
    {
        __raw_writel(upllvalue,S3C2410_UPLLCON);
        mdelay(1);
    }
    return 0;
}

static void __init f2410_init_machine(void)
{
    s3c_device_nand.dev.platform_data = &sbc2410x_nand_info;
    platform_add_devices(f2410_devices, ARRAY_SIZE(f2410_devices));
    s3c2410_init_usb();
}

下面为配置:

下面为拷贝luofuchong的 linux-2.6.14下USB驱动移植心得,主要根据2.6.22的核改了一下,使其可以支持u盘。
/*****************************************from luofuchong**********************************/
1、让内核支持热插拔
 │         General setup  --->
    [*] Configure standard kernel features (for small systems)  --->
      [*]   Support for hot-pluggable devices (NEW)
2.USB驱动设置
Device Drivers  --->
    Generic Driver Options  --->                                      
        <*> Userspace firmware loading support
Block devices  --->
        <*> Low Performance USB Block driver
    SCSI device support  --->
        <*> SCSI generic support
        [*] Probe all LUNs on each SCSI device
     USB support  --->       
        <*> Support for Host-side USB   
        [*]   USB device filesystem
        <*>   OHCI HCD support 
        <*>   USB Mass Storage support
        [*]   USB Monitor
 3、加入了MSDOS fs和VFAT fs的支持。

File systems  --->
    DOS/FAT/NT Filesystems  --->   
         <*> MSDOS fs support   
         <*> VFAT (Windows-95) fs support    
        (936) Default codepage for FAT   
        (cp936) Default iocharset for FAT

 File systems  --->
     Partition Types  ---> 
        [*]   PC BIOS (MSDOS partition tables) support
   
4.  加入中文字体库(可惜在我的板上还是没能正常显示中文~_~,知道的朋友麻烦告诉我一声,大家一起探讨)
 Native Language Support  --->   
    <*>   Simplified Chinese charset (CP936, GB2312) 
    <*>   NLS UTF8

5、另外,如果想让内核把它当成SCSI设备来处理的话,只要把上面:
Device Drivers  --->   
     Block devices  ---> 
        <*> Low Performance USB Block driver
的 Low Performance USB Block driver这个选项去掉,然后把:
 Device Drivers  --->
    SCSI device support  ---> 
        <*>SCSI disk support
的SCSI disk support这个选项选上,重新编译内核就行。
/***************************************end from*********************************************/

置顶必读(1) | 滚雪球学Oracle教程导航帖,带你弯道超车(持续更新中) 什么是数据库管理系统(DBMS),Oracle在行业中的领先地位Oracle数据库的市场竞争与主要应用场景Oracle数据库的核心功能模块与未来技术发展趋势约束的高级应用:主键、唯一性、外键设计与管理表分区、视图、同义词与序列的最佳实践PL/SQL编程的设计哲学,如何高效使用Oracle SQL DeveloperPL/SQL代码调试与优化技巧RAC集群中的高可用性设计,负载均衡与并行查询的配置集群中的缓存一致性管理。 阅读详情

相关推荐

ADS1299寄存器配置与应用实战指南

本文提供了ADS1299高精度生物电信号采集芯片的寄存器配置与应用实战指南。详细解析了采样率、增益、转换模式等核心寄存器的设置方法,并分享了数据读取、高级功能配置及常见问题的调试心得,帮助开发者快速掌握ADS1299的配置技巧,实现稳定的ECG/EEG信号采集。

weixin_28278377的博客 194

USB HUB不能读U盘

一般来说鼠标交互数据少,U盘交互数据多,鼠标可以,说明硬件通道和软件识别没有问题,以前这种不涉及HUB,一般是USB参数问题,即眼图效果不好,调整眼图参数可以解决。这个Log是与正常log不一样,显示是不够电,看起来是config交互的时候,交互说明bus power不够,因此上网查了一下。但HUB有点不一样,手头刚好有外置hub,发现外置hub可以识别,板载HUB通过LOG比较,终于发现问题点。调试高通USB,板上带有HUB,调试的时候发现鼠标可以识别,正常工作,但U盘不能识别。

arden3227的博客 1033

OpenClaw 快速安装与本地应用实战 —— 每一步都有截图加详细说明,本地AI助手,让打工人也有下属

《OpenClaw 2026开源智能体框架10分钟快速部署指南》摘要:本文提供OpenClaw最新版全平台部署方案,重点解决三大核心问题:1)环境配置优化,通过一键脚本实现3-8分钟快速安装(含国内镜像加速方案);2)初始化配置详解,包含大模型绑定(智普AI/本地模型)与5个高频技能安装;3)实战演示文件自动整理任务。同时总结6类常见故障解决方案,涵盖权限、端口占用等典型问题,确保用户从安装到首个自动化任务落地全程无障碍。特别强调Windows需管理员权限、禁用中文路径等关键注意事项,实现"安装即

weixin_43538316的博客 809

USB Core 十

int usb_register_device_driver(struct usb_device_driver *new_udriver, struct module *owner) { int retval = 0; if (usb_disabled())//判断一下usb 子系统是不是在你启动内核的时候就被禁止了 return -ENODEV; new_udri

jacob的专栏 1625

C++控制台实现简单的注册登录

C++控制台实现简单的注册登录 #include<iostream> #include<string> #include <vector> #include <conio.h> void Display();//调用display显示switch()界面 void Register();//注册 void Enter();//登录 using nam...

乔路非 2万+

[附源码]计算机毕业设计JAVA网上花店系统

附源码]计算机毕业设计JAVA网上花店系统项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat。

ssm毕设程序设计 2445

Kconfig使用详解

Linux 内核的系统用于管理内核配置选项,通过 make menuconfig 等工具生成配置界面,并最终产生 .config 文件控制编译行为。Kconfig 文件分布在内核源码各子目录中,使用特定语法定义配置项、菜单、依赖关系等。

ACMIII的博客 946

在innovus中通过ecoAddRepeater插入buffer/inverter

在innovus中,我们可以通过ecoAddRepeater命令来在net上添加单个buffer或者成对的inverters。ecoAddRepeater命令的行为由命令setEcoMode控制。 选项说明 -cell <list of cells> 指定插入的buffer或者inverter的类型。 -net <netName> | -term <inst1/term1 inst2/term2 ...> -net指定需要插入buffer/inverters的

kevindas的博客 1万+

linux2.6.28 24CXX芯片I2C设备驱动

linux2.6.28 24CXX芯片I2C设备驱动

开阳-英飞凌-小华 850

网易数智CoreAgent实战:5步教你打造企业级AI数字员工(附避坑指南)

本文以网易数智CoreAgent智能体协作中枢为核心,提供了一份企业级AI数字员工的实战部署指南。文章详细拆解了从环境准备、智能体配置、业务集成、安全合规到效果评估的五个关键步骤,并分享了部署过程中的常见“避坑”经验,旨在帮助企业技术团队高效、安全地将AI智能体落地于实际业务场景,解决AI落地难题。

rice5的博客 953

Unity机械拆装实战:5步搞定发动机模型交互式装配(附完整代码)

本文详细介绍了在Unity中实现高交互性机械拆装仿真的完整流程。以发动机模型为例,通过5个核心步骤:项目初始化与模型准备、核心交互实现、智能装配逻辑、场景管理与相机控制、进阶优化与扩展,系统讲解了从零构建交互式装配功能的方法,并提供了完整的代码示例。

weixin_28049429的博客 215

Kconfig简介

linux内核Kconfig内容简介

Aruko的博客 669

手写中间件之——并行框架(1 并行框架的应用场景和需求)

我们为什么会需要一个带任务顺序编排的并行框架 1 复杂的微服务系统间调用 经常会有这样的调用场景:app(或web前端)调用后台的一个接口,该接口接到该请求后,需要调用其他多个微服务来获取数据,最终汇总一个最终结果返回给用户。 譬如用户请求“我的订单”,后台在收到请求后,就需要去调用用户详情rpc、商品详情rpc、库存rpc、优惠券rpc等等很多个服务。有些服务是可以并行去请求的,但有些服务...

tianyaleixiaowu的专栏 1万+

linux的usb驱动失败,linux2.6.24下usb驱动完成情况及问题解决

1.在kernel启动是出现如下问题:mount: mounting tmpfs on /dev failed解决方案如下,File systems --->Pseudo filesystems --->[*] Virtual memory file system support (former shm fs)2.另附上vivi启动参数,最近一直用nfs,转换着麻烦,先记下来cp设...

weixin_36184718的博客 760

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[嵌入式Linux] 配置WSL2 Ubuntu24.04 连接USB设备 识别SD卡

本文主要介绍WSL2怎样连接USB设备,分为两部分 1. 怎样通过usbipd将USB设备添加到WSL中。 2. 如何在WSL内核中加入USB设备驱动。

山高路远 5130

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux2.6内核usb gadget驱动移植

 在写之前恶补一点usb slave端的知识      在kernel 2.4版本中,嵌入式USB驱动是在kernel/arch/arm目录下的ep0.c  ep**.c, 在调试USB驱动的时候比较难,主要是如果在中断了加太多的printk, 会影响USB的时序,导致枚举就失败或不停地USB reset。       在kernel 2.6版本中,USB的驱动改为了gadget接口,在/ke

激情成就梦想--关注移动互联网 2159

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

linux 2.6.35 内核配置 usb,Linux2.6内核usb gadget驱动移植

Linux2.6内核usb gadget驱动移植在写之前恶补一点usb slave端的知识在kernel 2.4版本中,嵌入式USB驱动是在kernel/arch/arm目录下的ep0.c ep**.c,在调试USB驱动的时候比较难,主要是如果在中断了加太多的printk,会影响USB的时序,导致枚举就失败或不停地USB reset。在kernel 2.6版本中,USB的驱动改为了gadget接...

weixin_42510148的博客 564

linux usb menuconfig,Linux2.6.24内核在开发板支持usb鼠标的实现

昨天下午,对以前移植的Linux2.6.24内核不能检测USB鼠标进行了修改menuconfig,新内核的USB鼠标在内核drivers/hid/usbhid目录下,文件名:usbmouse.c,如果你需要对鼠标驱动修改就看这个文件,我的开发板暂时不需要对鼠标驱动定制特别的操作,于是在保证2410配置文件默认的情况下,make menuconfig然后选择 Device Drivers --&gt...

weixin_39609670的博客 373

linux 2.6.35 内核配置 usb,让linux2.6.24内核在开发板支持usb鼠标

让linux2.6.24内核在开发板支持usb鼠标发布时间:2008-03-27 16:06:22来源:红联作者:Inwind今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行了修改menuconfig,新内核的USB鼠标在内核drivers/hid/usbhid目录下,文件名:usbmouse.c,如果你需要对鼠标驱动修改就看这个文件,我的开发板暂时不需要对鼠标驱动定制特别的...

weixin_28797725的博客 263

linux板卡支持USB键盘,让linux2.6.24内核在开发板支持usb鼠标

让linux2.6.24内核在开发板支持usb鼠标发布时间:2008-03-27 16:06:22来源:红联作者:Inwind今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行了修改menuconfig,新内核的USB鼠标在内核drivers/hid/usbhid目录下,文件名:usbmouse.c,如果你需要对鼠标驱动修改就看这个文件,我的开发板暂时不需要对鼠标驱动定制特别的...

weixin_31140599的博客 315

让linux2.6.24内核在开发板支持usb鼠标

转自:http://blog.chinaunix.net/uid-7960587-id-2035471.html 今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行了修改menuconfig,新内核的USB鼠标在内核drivers/hid/usbhid目录下,文件名:usbmouse.c,如果你需要对鼠标驱动修改就看这个文件,我的开发板暂时不需要对鼠标驱动定制特别的操作,

happy803的专栏 2545

linux最稳定的内核,号称最稳定 Linux内核2.6.24版本发布

作为 Linux 操作系统核心的 Kernel 最新稳定版 2.6.24 在今日得以发布。根据 Kernel Newbies 网站的描述,Linux Kernel 2.6.24 改善了 CFS、针对 x86-64、PPC、UML、ARM、MIPS 等架构添加了 Tickless 支持、新增了无线驱动程序及配置界面、引入了 Anti-fragmentation 补丁、使 MMC 层获得了 SPI/S...

weixin_28745975的博客 3143

高效解决Linux无线连接难题:RTL88x2BU驱动一站式安装指南

还在为Linux系统下RTL88x2BU无线网卡无法正常工作而烦恼吗?这款强大的Realtek RTL88x2BU WiFi USB驱动正是你的救星。无论你是Ubuntu用户还是Kali Linux爱好者,本指南将带你深入了解如何轻松搞定Linux无线网卡驱动安装,让你的WiFi连接稳定如初。 ## 🔧 为什么你的Linux需要这个驱动? 许多Linux发行版的内核默认不包含RTL88x2B

gitblog_00112的博客 929

(二十二)Linux的USB驱动

STM32MP157 提供了两个 USB2.0 接口,这两个 USB 接口都支持高速模式,也就是480Mbit / 秒,都内置了高速 PHY。其中 USB2 支持 OTG 功能, 正点原子 STM32MP157 开发板上的 USB OTG 接口就是连接到 USB2 接口上的。USB1 接口连接了一个 HUB 芯片,可以实现 USB Host 接口扩展。

小新的博客 1622
上一篇: 移植madplay mp3 播放器到linux-2.6
下一篇: Linux2.6内核usb gadget驱动移植
willand1981
博客等级 码龄18年 136粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值