0 概述
嵌入式linux系统环境以其易于移植裁减、内核小、效率高、完整、原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用。Linux的USB设备端的源代码中主要有USB device的海量存储设备、串口设备、网络设备等设备驱动程序及各种USB device控制器芯片的驱动程序。市场上USB设备控制器芯片种类繁多,大多数用户需要针对特定应用来开发相关的USB设备控制器驱动程序,才能使设备正常工作在linux操作系统下。
1 USB设备端驱动系统
Linux Gadget子系统主要分为三层:第一层为芯片驱动层,负责将各种USB device控制器抽象为统一的函数接口,以供上层驱动程序调用;第二层主要是对操作函数的简单封装;第三层为设备驱动层,可根据系统的需求实现所对应的功能。图1所示是Linux Gadget子系统的驱动层次。Linux Gadget子系统的设备驱动层主要根据各个类别的规范及协议实现各种设备的驱动,本设计需要使一个嵌入式设备拥有移动硬盘的功能,所以,可以根据海量存储类的规范及协议来实现该功能。
1.1 UDC驱动的基本构架
图2所示是UDC驱动的基本构架图。在控制器驱动程序中,首先应注册platform驱动,调用其probe函数搜索设备,并在probe函数内初始化usb_ep和usb_gadget等结构,然后注册设备,并申请中断,接着等待中断进入中断服务子程序,最后声明和实现usb_gadget_register_driver注册函数并输出给上层驱动。在该过程中,联系它们的纽带是一些全局结构体变量。
1.2 Gadget API
Gadget API为Gadget系统定义了统一的数据结构和接口函数,它和主机端的USB Core地位类似,但功能仅限于提供编程接口,如用结构体usb_gadget_ops和usb_ep_ops对设备控制器驱动操作函数和端点操作函数进行重新封装。比较特殊的是Gadget驱动程序注册函数usb_gadget_register_driver,它们是由设备控制器(UDC)驱动直接提供的,用于将UDC绑定到gadget driver。这增加了Gadget Driver和UDC之间的依赖性。
在设备端,Gadget系统虽然类似主机驱动系统分了三层结构,但Gadget API只定义了一些数据结构、宏和功能函数,并对UDC驱动程序进行了简单包装,而没有驱动管理等功能。
1.3设备应用驱动程序
设备端应用程序(Gadget Driver)用于控制USB设备功能的实现,使设备表现出“网络连接”、“打印机”或“大容量存储设备”等特性。本文以大容量移动存储设备为例来实现移动硬盘的功能。
BULK ONLY传输指的是主机和大容量存储设备之间的一种数据传输方式。
2设备端驱动调度
在嵌入式Linux操作系统中,Gadget driver和Gadget API可完成部分USB协议处理、BULK ONLY等传输协议以及指令的解析处理,用户只需要在设备控制器驱动程序中完成部分USB协议处理和Gadget API的衔接工作。
图3所示的流程图给出了USB设备端驱动程序的基本调度思想。该方案的主要思路是被动的接受主机端的传输命令(任何类型的通信都由USB主机发起,USB设备间不能直接通信),然后通过中断触发的方式完成主机端的数据传输。当产生设备端中断时,设备控制器驱动程序首先判断中断类型。当其为批量传输端点IN中断时,驱动程序会将该EP下链接的REQ中的数据依次写入USB2.0 OTG IP的设备控制器的内存区;当其为批量传输OUT中断时,驱动程序会将设备控制器内存区的数据读入REQ中的buffer中;当其为端点0的控制传输中断时,驱动程序将读取端点缓冲区的数据,并解析当前的设备请求。如果主机传输给设备的设备请求为USB REO SEDRESS(设置设备地址)、USB_REQ_GET_STATUS(获取设备状态)、USB_REQ_SET_FEATURE(设置设备特性),设备控制器驱动程序会自行响应请求。但是,如果是其它设备请求,如GET_DESCRIPTOR(获取设备描述符)时,设备控制器驱动便会将该请求提交给Gadget Driver,然后由Gadget Driver排队将该设备请求提交给端点,以等待下次控制端点中断。
控制传输比较复杂,它需要完成建立阶段、数据传输阶段和状态阶段。整个控制端点中断的处理可通过四个状态实现,分别是:端点0空闲(EP0_IDLE)、 数据IN传输(EP0 IN DATA_PHASE)、数据OUT传输(EP0 OUT DATA_PHASE)和状态阶段(EPO_STATUS)。
EP0_IDLE状态主要处理建立阶段的setup令牌,并根据获得的设备请求处理能够处理的设备请求,同时把不能处理的设备请求(如获取设备描述符,配置描述符等)提交给上层Gadget Driver;EP0_OUT_DATA_PHASE状态主要处理数据阶段的OUT传输;EP0_OUT_DATA_PHASE状态主要处理数据阶段的IN传输;EP0_STATUS状态则主要完成控制传输过程中的状态阶段。
在图3所示的流程图中,EP0为控制传输端点,EP1、EP2、EP3为批量传输端点,它们主要包括端点传输类型、端点缓冲区大小等信息。REQ为Gadget Driver提交的端点请求,主要包含传输的数据长度和地址。
3 UDC的设计与实现
设备控制器驱动主要分为Gadget Driver接口模块、Gadget API函数模块、中断处理模块、数据结构定义、初始化模块、硬件读写模块等,各模块可以单独进行设计。
3.1 数据结构定义
根据Gadget API提供的数据结构,可以定义自己的数据结构(如设备数据结构otg_udc,端点数据结构otg_udc_ep等)来描述该USB设备控制器。
定义完特定的设备控制器驱动的数据结构后,再进行相应的映射(static struct otg_ip_udcmemory),以便将具体的设备控制器、设备端点和Gadget的抽象数据结构联系起来。
3.2 Gadget Driver接口模块
UDC驱动提供有usb_gadget_driver_register模块,该模块可实usb_gadget_register_driver等绑定函数的功能,以绑定UDC和Gadget Driver。
3.3 Gadget API函数模块
Linux USB gadget driver API定义了一个通用的gadget driver的接口,利用gadget driver可通过API与底层USB controller driver进行通信。该API屏蔽了底层硬件的不同,故可使gadget driver只注重功能的实现,而尽量与硬件无关。其代码如下:
该模块主要实现Gadget API定义的函数功能,如结构体usb_ep_ops和usb_gadget_ops中的函数,以及usb_gadget_register_driver注册函数等。这些函数可供Gadget Driver调用。
3.4 中断处理模块
由于设备是被动的接受主机的控制,设备的所有行为都是基于设备中断的触发,因此,函数主要处理Reset中断、Resume中断、Suspend中断、EP0中断以及其他端口中断。
3.5 初始化模块
初始化主要是打开中断、打开并设置端点、设置最大总线转向时间(此时问即包间最大等待时间),还要设置最大缓冲区长度等。
3.6 硬件读写模块
和主机控制器驱动程序类似,设备控制器的读写方式分为PIO读写和DMA读写两种模式,读写内容也分为寄存器读写和端点缓冲区读写。在读写过程中,所有读写地址都必须是双字节对齐模式。
4 驱动测试结果
本文研究的HCD已经应用于实际的工程中,驱动测试的硬件环境如图4所示。
本系统的硬件平台是Realview EB,这是一个高度集成的开发板,其母板上的硬件资源包括:一个FPGA (Xilinx Virtex-II XC2V6000)、静态和动态内存、集成外围设备和两个用于Core Tiles连接的tile连接器。设计时可通过增加一个额外的Core Tile(ARM926EJS CORE)来创建一个微处理系统。Logic Tile(Xilinx XC2V6000)中包含有一块具有主机控制器功能的芯片otg_ip,otg_ip可通过片内总线AHB挂载在母板EB上。在该开发板上运行Linux系统时,可通过交叉编译调试环境将开发报与一台PC机相连,这样,调试信息就可以通过串口打印在该主机的终端上。otg_ip可通过ULPI接口连接PHY芯片,并与USB设备相连。
设备控制器驱动模块otg_ip_udc.ko和g_filestorage.ko成功加载后,再将其作为移动优盘插入电脑主机的USB接口,驱动即可成功识别。图5所示是内核打印的信息结果。
5 结束语
USB通用串行总线具有传输速率高、功耗低、可热插拔和发展快速等优点,而Linus操作系统则具有易于移植和裁减、内核小、效率高、原代码开放等特点,本文通过将其结合而给出的Linux环境下的USB设备驱动方法,可以快速地实现大容量的存储功能,实验表明:该系统的数据读写速度可以达到681 kB/s,而且效果良好。
Linux2.6环境下USB设备的驱动实现
- USB设备(16249)
- 驱动实现(6460)
相关推荐
Linux2.6在内存管理有哪些问题需要注意?
Linux2.6引入了基于对象的反向映射机制,这种方法为物理页面设置一个用于反向映射的链表,但是链表上的节点并不是引用了该物理页面的所有页表项,而是相应的虚拟内存区域(vm_area_struct结构)。
2020-04-09 07:08:17
Linux2.4与Linux2.6内核调度器的比较研究
)算法,它在高负载的情况下执行得极其出色,并且当有很多处理器时也可以很好地扩展,不但大大改善了对SMP的支持,同时也兼顾了单CPU或者双CPU系统的要求。3 Linux2.6调度器的改进目标为了改善
2008-06-17 12:04:46
Linux2.4和Linux2.6的调度器对比分析,Linux2.6对调度器的改进有哪些方面?
Linux2.4和Linux2.6的调度器对比分析,Linux2.6对调度器的改进有哪些方面?Linux2.4调度器性能低下的原因是什么
2021-04-27 06:42:00
Linux环境下USB的原理、驱动和配置
运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。Linux下对于一个硬件的驱动
2013-11-08 16:30:39
Linux设备驱动的硬件操作方法分享
严重的陷阱,如果硬件出现了故障,REGB 的第 0 位总是变不成 1 的话,在系统不支持抢占调度的情况下,就“死机”了。从 Linux 2.4 移植设备驱动到 Linux 2.6从 Linux 2.4
2022-05-09 10:17:16
Linux学习
`#Linux培训#华清远见Linux学习资料《Linux3.4内核USB驱动的移植》,USB接口是现在计算机系统中最通用的一种接口,通过移植USB驱动,了解Linux3.4内核与Linux2.6
2013-07-10 10:40:22
linux平台设备驱动
区)在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心
2017-09-01 14:40:51
Atmel studio 7环境 使用pickit4下载程序,如何切换为AVR模式?
Atmel studio 7环境使用pickit4下载程序,使用UPDI模式,提示当前处于PIC模式,需要切换到AVR模式,请问如何切换为AVR模式?
2020-11-22 15:50:38
MX6Q Qt5.6+Linux4.1.15环境运行图形界面程序报错是为什么?
MX6Q Qt5.6+Linux4.1.15环境运行图形界面程序,报错:QXcbConnection: Could not connect to display是不是哪个环境变量没有设置?
2022-01-11 06:05:33
RK3288环境安装Linux QT平台搭建相关资料推荐
一、RK3288环境安装Linux QT平台搭建记录1、sudo apt-get update2、sudo apt-get install git-core gnupg flex bison
2022-08-11 17:22:30
Samsung S5PV210 Cortex-A8---OK210软件手册(linux2.6)-V1.8
,最高支持32GB支持JPEG 硬件编解码,最大支持8192×8192 分辨率...............OK210软件手册(linux2.6)-V1.8-下载地址:更新日期2015.05.11下载链接链接:http://pan.baidu.com/s/1kTBtwyz
2015-05-19 11:04:57
Simulink开发STM32环境配置注意事项
Simulink开发STM32环境配置注意事项,自动生成代码无法正常实现功能分析最近做PIL,记录一些过程,备忘1.环境配置的注意事项需要的软件包括MATLAB ,我
2021-08-17 06:07:08
TM4C123G在CCS5.5环境下JLINK仿真器可以在CCS5.5环境下使用吗?
。现在想把它转化为自己的产品,想请教几个问题:1、在CCS5.5环境下可以用SEED-XDS560PLUS仿真器对TM4C123G ARM处理器进行仿真和程序下载吗?2、如果不能使用XDS560仿真器
2018-08-14 06:51:31
[分享资料]linux设备驱动开发详解_宋宝华
Linux2.6 版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux设备驱动理论;字符设备、块设备、TTY设备、I2C设备
2015-09-11 23:36:44
为什么foundation 3.1环境里找不到启动testbench.vhd的程式?
在foundation 3.1环境里怎么找不到启动testbench.vhd的程式?
2019-09-18 05:55:16
关于protel *** 2004 在win7 64位环境下运行的问题
刚下载的protel *** 2004 在win7 64位环境下不能运行,安装完成以后就提示“出现灾难性故障”,求大师解决,怎样才能运行啊。
2013-03-12 08:37:11
在stm32f107环境下可实现哪些功能
在stm32f107环境下实现如下功能: - 以太网接口用作串口使用(区别于C/S模型);- 以太网接口接收全部的网内数据; - 对网内数据包过滤,仅接收本机相关数据包及广播包; 工具
2021-08-05 06:38:09
基于Linux的USB设备驱动方法有什么优点?
设备、串口设备、网络设备等设备驱动程序及各种USB device控制器芯片的驱动程序。市场上USB设备控制器芯片种类繁多,大多数用户需要针对特定应用来开发相关的USB设备控制器驱动程序,才能使设备正常工作在linux操作系统下。
2019-11-07 08:31:16
如何在F103环境下进行UART通信实验和RS232通信实验
RS485线在F103环境下进行UART通信实验和RS232通信实验在F407环境下进行RS485实验(1.我的103板子没有485口,2.正好看下开发板环境不同的差异)UART通信实验(通用异步收发器)UART串口通信原理:什么是串行通信?什么是异步通信?什么是全双工?什么是串行.
2022-02-17 07:17:45
如何学习linux设备驱动
就可验证,当你按照手里的经典著作,如:Alessandro的《linux设备驱动程序》,编写驱动时,发现并不能够成功的在你的linux平台上编译通过、或不能正常执行,原因就在于你用的内核和书里的不一致
2011-07-06 13:12:29
如何对在QuartusII9.0环境下的多路写信号处理电路进行仿真
如何对在QuartusII9.0环境下的多路写信号处理电路进行仿真?怎样去设计一种FIFO读信号地址译码电路?
2021-09-26 06:53:31
如何编译linux驱动模块
在嵌入式系统应用中,嵌入式linux是非常重要的一个方面,而linux驱动编译又是嵌入式linux中至关重要的一个环节。下面,本文将详细讲解如何编译linux驱动模块。首先,我们要了解一下模块
2021-11-04 08:45:37
嵌入式Linux下USB蓝牙设备驱动
嵌入式Linux下USB蓝牙设备驱动.pdf第 18卷 第 2期 电子设计工程 2010年 2月V01.18No.2ElectronicDesignEngineeringFeb.2010...
2021-11-05 07:46:01
嵌入式Linux下USB蓝牙设备驱动
的应用大打折扣。在分析蓝牙协议栈的体系结构、Linux蓝牙协议BlueZ的组织结构的基础上,详细阐述蓝牙USB传输层,给出蓝牙设备驱动实现的关键数据结构和函数,并在MP2530硬件平台下实现Linux下USB蓝牙
2010-04-24 09:30:17
嵌入式Linux下的USB设备驱动
,而且所有的配置过程都由系统自动完成,无须用户干预。1 Linux下的USB设备驱动在Linux内核的不断升级过程中,驱动程序的结构相对稳定。由于USB设备也是外围设备的一种,因此,它的驱动
2018-12-07 10:29:50
嵌入式Linux学习步骤
Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备驱动程序分析 块设备的读写请求队列了解Linux块设备驱动程序结构 能够编写简单的块设备
2018-07-03 00:56:23
嵌入式Linux学习步骤
Linux内核移植Linux2.6内核到 ARM9开发板6、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配置
2015-03-24 10:41:29
嵌入式Linux学习步骤
Linux内核移植Linux2.6内核到 ARM9开发板 6、 嵌入式 Linux 下串口通信 串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统
2011-05-04 15:01:53
嵌入式Linux开发学习如何入门、如何深入?
了解Linux字符设备驱动程序结构能够编写字符设备驱动程序编写Skull驱动编写键盘驱动编写I/O驱动分析一个看门狗驱动程序对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备
2016-10-14 14:37:33
嵌入式Linux开发学习如何入门、如何深入?
程序结构能够编写字符设备驱动程序编写Skull驱动编写键盘驱动编写I/O驱动分析一个看门狗驱动程序对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理典型
2014-07-08 11:03:55
嵌入式Linux开发学习推荐书籍
详解》 (宋宝华编) 人民邮电出版社定价:89 linux2.6字符驱动讲的比较好 llinux设备驱动程序(第三版) (驱动的一些理论讲的比较好,但是比较深) 《构建嵌入式LINUX系统》 (美)雅
2018-07-05 02:30:35
嵌入式linux学习步骤
驱动 编写I/O驱动分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备驱动程序分析 块设备的读写请求队列
2016-09-12 14:23:18
嵌入式linux学习步骤
驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备
2017-10-25 10:12:39
嵌入式linux学习步骤
驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备
2021-09-08 11:51:06
怎样去解决sw4stm32环境下遇到重定向完成后printf没有输出的问题呢
在sw4stm32环境下如何添加printf支持呢?怎样去解决sw4stm32环境下遇到重定向完成后printf没有输出的问题呢?
2021-12-02 07:13:11
新手必看--嵌入式Linux学习步骤
驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备
2016-03-25 14:53:55
现在分享一个大四做的一个基于Cortex A8和linux2.6的广告机
现在分享一个大四做的一个基于Cortex A8和linux2.6的广告机,利用多线程编程,实现图片循环播放,同时播放音乐,此项目涉及jpg和mp3格式解码,所以必须在PC端linux系统安装这两个解码库,解码库自己找,这里只提供原码,如果需要的话可以找我要
2015-10-21 10:51:14
编译linux2.6时make uImage出现如下错误
首次编译linux2.6时 make uImage 出现如下错误:sound/soc/s3c24xx/s3c2410-uda1341.c:26:32: asm/arch/regs-gpio.h
2019-05-30 01:38:30
请问microblaze可以跑linux2.6.X的内核吗?
我想试着在支持MMU的microblaze7.0上跑个linux2.6内核,应该如何配置交叉编译环境?我看到网上有人提到microblaze-gcc,我装过arm-linux的交叉编译环境,那个
2012-08-23 10:38:50
请问能在CCS3.3环境下使用HVRESLLCKIT开发套件吗?
1.请问能在CCS3.3环境下使用这个套件吗?2controlsuit中怎么没有PeripheralHeaderIncludes.h这个头文件,难道我的controlsuit版本不够新?
2020-07-14 11:31:33
嵌入式Linux2.6在S3C2410上的移植技术探析
移植操作系统是开发嵌入式系统的前提和基础,通过将Linux 2.6 内核移植到S3C2410目标板上,提出了嵌入式Linux 移植的方法与具体实现过程。编译生成的内核在嵌入式系统中运行稳
2009-08-31 10:03:4915
Linux环境下USB的原理、驱动和配置
本文对 Linux 环境下USB 的原理、驱动和配置进行详细介绍。随着生活水平的提高,人们对 USB 设备的使用也越来越多,鉴于Linux 在硬件配置上尚不能全部即插即用,因此关于Linux 如
2010-01-16 16:57:5333
嵌入式Linux的USB驱动设计
本文主要介绍了 Linux 平台的USB设备驱动开发的一般步骤方法和技巧,通过详细介绍USB的相关概念和Linux中USB设备驱动程序的数据结构,框架和步骤,并通过设计和实现一个驱动的实例,
2011-06-08 17:15:4849
编译Linux2.6内核并添加一个系统调用
本文以实例来详细描述了从准备一直到使用新内核的Linux2.6 内核编译过程,然后介绍了添加系统调用的实现步骤,最后给实验结果。
2011-12-01 15:54:5546
Linux设备驱动模型摘抄
Linux2.6 内核提供了新的设备模型,目的是为了对计算机上的所有设备进行统一地表示和操作,包括设备本身和设备之间的连接关系。这个模型是在 分析了 PCI 和 USB 的总线驱动过程中得到
2012-03-19 15:15:5239
USB设备端驱动系统与嵌入式linux系统的实现
嵌入式 linux 系统环境以其易于移植裁减、内核小、效率高、完整、原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用。Linux 的 USB 设备端的源代码中主要有 USB device
2017-10-31 16:15:484
基于FPGA嵌入式系统的设备驱动开发
基于FPGA嵌入式系统,在PowerPC 架构的Linux2.6 操作系统环境下,对通用输入输出接口(GPIO)控制器的驱动,采用平台设备机制进行中断控制管理。通过该管理机制,将GPIO设备本身
2017-11-18 11:32:572134
s3c2410移植MPlayer到linux2.6
s3c2410移植MPlayer到linux2.6 我使用的linux内核为2.6.14.1 MPlayer版本为MPlayer-1.0pre7try2.bz2 目前虽然已经添加了mad的mp3
2018-09-21 14:36:01190
Linux下的硬件驱动—USB设备(上)
和使用他们,也越来越成为困扰我们的一大问题。本文分两部分着力从Linux系统下设备驱动的架构,去阐述怎样去使用和配置以及怎样编制USB设备驱动。对于一般用户,可以使我们明晰Linux设备驱动开发专业论坛
2019-04-02 14:35:56231
Linux下的硬件驱动—USB设备(下)
RESERVED FOR FUTURE USE INCLUDE FILES--> 前言在上篇《 Linux下的硬件驱动--USB设备(上)(驱动配制部分)》中,我们知道了在Linux下如何去使用一些最常
2019-04-02 14:37:35307
Linux2.6内核驱动移植参考
作者:晏渭川 随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要 进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来
2019-04-02 14:38:39143
Linux2.6 内核的 Initrd 机制解析
中的"某个文件",完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的 /sbin/init 进程。这里提到的"某个文件",Linux2.6 内核会同以前版本内核的不同,所以这里暂时使用了"某个
2019-04-02 14:39:19452
Linux设备驱动开发详解PDF电子书免费下载
这是一本介绍Linux设备驱动开发理论、框架与实例的书,Linux设备驱动开发详解基于LDD6410开发板,以Linux2.6 版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器
2019-04-28 08:00:0013
Linux设备驱动开发详解PDF电子书免费下载的
这是一本介绍Linux设备驱动开发理论、框架与实例的书,《Linux设备驱动开发详解(第2版)》基于LDD6410开发板,以Linux2.6 版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断
2019-07-24 08:00:0029
米尔科技Linux设备驱动研究浅谈
《Linux设备驱动开发详解(第2版)》是一本介绍linux设备驱动开发理论、框架与实例的书,《Linux设备驱动开发详解(第2版)》基于ldd6410开发板,以linux 2.6版本内核为蓝本
2019-11-25 09:32:411748
如何使用Linux内核实现USB驱动程序框架
Linux内核提供了完整的USB驱动程序框架。USB总线采用树形结构,在一条总线上只能有唯一的主机设备。 Linux内核从主机和设备两个角度观察USB总线结构。本节介绍 Linux内核USB驱动
2020-11-06 17:59:1719
完整的linux系统包括哪些部分?
Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。
2022-12-02 11:51:42362
评论
查看更多