![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动开发
文章平均质量分 69
willand1981
这个作者很懒,什么都没留下…
展开
-
linux2.6.24下usb驱动完成情况及问题解决
======================================================================== 任务一:转载 2010-03-01 17:39:00 · 964 阅读 · 0 评论 -
深入浅出 Linux设备驱动中断处理介绍
与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API: request_irq()和free_irq()。 request_irq()的原型为: int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsigned long irqflags,const char * devname, void *dev_id);转载 2010-06-28 15:35:00 · 842 阅读 · 0 评论 -
为S3C6410的u-boot添加nor支持
6410开发板上有nor芯片,但是u-boot没有做nor驱动,将u-boot保存在nor中比较安全,因为nand很有可能会被全部清空。查看开发板硬件原理图,发现使用的nor flash芯片是am29lv160DB,2MByte,但是由于a20被ddr占用,只连接了a0-a18这19根数据线,也就是只能使用1Mbyte空间。既然只有1Mbyte空间,应该和am29lv800这颗芯片的使用方法兼容,查看smdk6410.h,发现启动有AMD_LV800相关的定义,smdk6410文件夹中的flash.c文件也转载 2010-06-30 16:01:00 · 1447 阅读 · 0 评论 -
移植dm9000ae驱动到u-boot
[6410]移植dm9000ae驱动到u-bootu-boot版本1.1.6(1)在smdk6410.h中注释掉CS8900信息,添加DM9000信息注意参考原理图,DM9000使用了CSn1,基地址为18000000//#define CONFIG_DRIVER_CS8900 0 /* we have a CS8900 on-board *///#define CS8900_BASE 0x18800300//#define CS8900_BUS16 1 /* the Linux driver do转载 2010-07-01 11:05:00 · 2421 阅读 · 0 评论 -
ALSA SOC架构基础知识
关于ALSA(Advanced Linux Sound Architecture)中文资料真的很少,可能是国人很少真的从零开始做驱动开发的原因。毕竟像wolfson或者realtek这样的公司多还是老外在做开发。ALSA 对SOC支持,更是ALSA在嵌入式领域的应用,也是后来才加入到ALSA中的,那资料更是少了。我花了一个星期也几乎没有任何发现,而后通过零星资料的蛛丝马迹,终于对ALSA有感觉了。转载 2010-05-12 11:30:00 · 1463 阅读 · 0 评论 -
ALSA 所有的资源
a old alsa-mini-howto(ch5 is useful) ----- http://man.chinaunix.net/linux/how/Alsa-sound.html#toc5 用ALSA驱动声卡流程详解 ----- http://fedora.linuxsir.org/main/?q=node/67midi with alsa转载 2010-05-14 15:25:00 · 1329 阅读 · 2 评论 -
WM9713音频处理介绍
昨天从整体上介绍了一下音频处理流程,让大家对音频处理有个大致的概念,以便进行深入的研究。整个音频处理可以分为三个部分:用户空间Mplayerservice 它是一个独立的服务进程,其主要作用有;首先是充当一个抽象层,隔离下层的软件和硬件平台,让应用程序不受下层变化的影响,比如以前我们用mplayer,现在改为用gstreamer,上层应用程序不需要做任何修改。 其次是负责播放任务的调度转载 2010-05-17 10:40:00 · 6413 阅读 · 1 评论 -
调试WM9714音频通道切换
WM9714的耳机跟喇叭通道切换由寄存器软件控制,跟之前电视里面插入耳机让功放直接拉低关掉外音的方式有点差别。通过设置WM9714的0X1C寄存器的值来切换,其中设置耳机时为0X00A0,设置喇叭时为0X1200。 电路中有外部上拉固定EINT11为高电平,通过插入耳机将这个外中断EINT11拉低来触发中断,再进行WM9714的寄存器控制。首先在WM9713.C中wm9713_soc转载 2010-05-19 17:00:00 · 1982 阅读 · 0 评论 -
S3c610 Codec移植的工作经验总结
1. S3C6410与WM9713的I2S,AC97,PCM相比较: 1.I2S,AC97,PCM是不同的,各是各的,三者时序不同,要双方通信,必须要是 同一种时序,要么均是I2S,要么均是AC97,要么均是PCM 2.S3C6410的I2S,AC97,PCM复用同一组Pin脚,但同一时间只能用一种类型, 要么是I2S,要么是AC97,要么是PCM 3.WM9713有两大接口,一是AC97,另一是转载 2010-05-19 17:05:00 · 2348 阅读 · 1 评论 -
S3C6410 MFC decode H.264流程
内核启动初始化:1)执行s3c_mfc_init(),打印“S3C6400 MFC Driver, (c) 2007 Samsung Electronics”;2)注册平台设备platform_driver_register(&s3c_mfc_driver);3)进入s3c_mfc_probe();4)获取时钟、打开时钟,映射寄存器物理地址,获取中断、注册中断;5)调用s3c_get_media_memory(S3C_MDEV_MFC),获取显存空间;6)调用s3c_mfc_setup_memory(),设转载 2010-07-19 16:57:00 · 5321 阅读 · 2 评论 -
S3C6410 2D Graphics Driver
S3C6410 2D Graphics Driver2010-04-24 16:23<br />/*****************************************************<br />三星的2D驱动<br />主要实现功能有<br />bitBLT<br />rotate<br />Alpha Blending<br />transparent<br />color expansion<br />奇怪的是有两个功能没有实现?<br />stretch <--这个是可以修改简单转载 2010-07-21 17:11:00 · 1756 阅读 · 0 评论 -
S3C6410 Linux 2D Test Program
S3C6410 Linux 2D Test Program V0.012010-04-27 18:54<br />/*<br />**调了一天都调不通这个程序,终于发现2D硬件要提高物理地址。<br />**Linux用户态要如何才能获取图片和LCD的物理地址呢?HELP<br />**<br />*/<br />#include <stdlib.h><br />#include <stdio.h><br />#include <string.h><br />#include <unistd.h><br /转载 2010-07-21 17:15:00 · 1270 阅读 · 1 评论 -
zImage / vmlinux / Image生成的流程图
<br />zImage / vmlinux / Image生成的流程图<br /><br />SRC_TREE :=./<br />HEADER_PATH :=arch/arm/boot/compressed<br />BOOT_PATH :=arch/arm/boot/<br />KERNEL_PATH :=arch/arm/kernel<br /><br />------------------------------------------------------------转载 2010-07-28 14:04:00 · 852 阅读 · 0 评论 -
netif_receive_skb
<br />netif_receive_skb驱动接收包后最终处理是调用netif_receive_skb进行3层处理。<br />对于驱动接收分为NAPI和netif_rx方式。<br /><br />转载 2010-07-28 14:03:00 · 3204 阅读 · 1 评论 -
Linux Ac97音频处理介绍
Linux Ac97音频处理介绍<br /><br /> <br /> <br />昨天从整体上介绍了一下音频处理流程,让大家对音频处理有个大致的概念,以便进行深入的研究。<br />整个音频处理可以分为三个部分:<br />用户空间<br />Mplayerservice 它是一个独立的服务进程,其主要作用有;<br />1. 首先是充当一个抽象层,隔离下层的软件和硬件平台,让应用程序不受下层变化的影响,比如以前我们用mplayer,现在改为用gstreamer,上层应用程序不需要做任何修改。<br />转载 2010-08-18 14:27:00 · 1679 阅读 · 0 评论 -
Linux音频设备驱动
在Linux中,先后出现了音频设备的两种框架OSS和ALSA,本节将在介绍数字音频设备及音频设备硬件接口的基础上,展现OSS和ALSA驱动的结构。17.1~17.2节讲解了音频设备及PCM、IIS和AC97硬件接口。17.3节阐述了Linux OSS音频设备驱动的组成、mixer接口、dsp接口及用户空间编程方法。17.4节阐述了Linux ALSA音频设备驱动的组成、card和组件管理、PCM设备、control接口、AC97 API及用户空间编程方法。17.5节以S3C2410通过IIS接口外接UDA1转载 2010-08-20 15:16:00 · 3977 阅读 · 0 评论 -
[2410]移植uda1341驱动到linux2.6.14.1
<br />经过一上午的努力,终于把uda1341的驱动移植到linux2.6.14.1。<br />目前只能放wav,声音速度也不对,需要修改一些设置,但至少能够放出声音。<br />下面讲讲移植的过程,网上教程有好几个,综合后才成功的,不过有点乱,自己都有点搞混了。<br />===============================================<br />1)linux2.4内核里面的s3c2410-uda1341.c文件肯定是不能用的,需要大量修改,我是从华恒的论坛下载到修改转载 2010-08-20 16:16:00 · 1438 阅读 · 1 评论 -
关于hid设备中使用ioctl向设备进行写数据问题
在使用HIDIOCSUSAGE一次向设备写1个value可以,但使用HIDIOCSUSAGES向设备写多个value却失败。经过调查发现: kernel从2.4版本开始代码就已经实现了HIDIOCSUSAGES方法,但是从/usr/include/linux/hiddev.h中却没有对HIDIOCSUSAGES和及其相关的hiddev_usage_ref_multi结构进行定义,而且在原创 2010-04-02 15:38:00 · 4717 阅读 · 2 评论 -
Linux下的硬件驱动——USB设备
最困难的是,usb 设备可以在任何时间点从系统中取走,即使程序目前正在访问它。usb驱动程序必须要能够很好地处理解决此问题,它需要能够切断任何当前的读写,同时通知用户空间程序:usb设备已经被取走。 如果程序有一个打开的设备句柄,在当前结构里,我们只要把它赋值为空,就像它已经消失了。对于每一次设备读写等其它函数操作,我们都要检查 usb_device结构是否存在。如果不存在,就表明设备已经消失,原创 2010-04-02 17:59:00 · 1371 阅读 · 1 评论 -
通用usb驱动libusb介绍和使用示例
sudo insmod /lib/modules/2.6.22-14-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x8086 product=0xd001同时插上ttyUSB0和ttyUSB1(ch341),obm可以将dkb下载下去,但是自动重起之后,就不能下载接下来的东西了,所以应该,需要close(ttyUSB0_handle转载 2010-04-01 17:36:00 · 1740 阅读 · 0 评论 -
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原创 2010-03-01 14:47:00 · 1289 阅读 · 0 评论 -
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原创 2010-03-02 11:33:00 · 2076 阅读 · 0 评论 -
关于kernel2.6中USB host controller driver 的问题
2.6在s3c2410上usb host不工作的直接结果就是提示110错误: usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能不能找到导致这个错误的线索。 include/asm-generic/errno.h #define EPROTO 71 /* Protocol error */ #define EILSEQ原创 2010-03-03 16:46:00 · 2236 阅读 · 0 评论 -
Linux 2.6 字符设备驱动程序
说明笔记适用于Linux的2.6.10以后的内核。笔记以LinuxDeviceDriver3提供的scull程序(scull目录中的main.c和scull.h)为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录顺序。比如,module_init( )和module_exit()为相对应的一对系统调用,一般书籍中都会放在一起讨论,但是本笔记却不会这样,而是在需要调用的时候才会涉及,因此转载 2010-03-11 15:37:00 · 451 阅读 · 0 评论 -
linux2.6字符设备驱动编程第一例:globalmem
view plaincopy to clipboardprint?/*====================================================================== A globalmem driver as an example of char device drivers This example is to introdu转载 2010-03-11 15:46:00 · 691 阅读 · 0 评论 -
[转帖]USB OTG学习笔记
仅仅看了半天SPEC写的笔记,有些乱,等调试完毕再次整理,思路不是很成熟,推测成分较多,可能有不对的地方,欢迎拍砖交流指正。 1. 概要 OTG设备使用插头中的ID引脚来区分A/B Device,ID接地被称作为A-Device,为连接时候的USB Host,A-Device始终为总线提供电力,ID悬空被称作为B-Device,为连接时候的USB Device转载 2010-03-10 16:27:00 · 1143 阅读 · 0 评论 -
S3C6410 SPI驱动移植
内核版本:linux-2.6.29 主要的几个结构platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_driver spidev_data s3c_spi_info 第一步:注册platform_device 在arch/arm/mach-s3c2410/mach-q转载 2010-03-11 15:28:00 · 4629 阅读 · 3 评论 -
S3C6410 USB-HOST调试纪实
共需要修改个文件:kernel下:drivers/usb/kconfigdrivers/usb/host/ohci-hcd.carch/arm/mach-s3c6410/mach-smdk6410.carch/arm/plat-s3c64xx/devs.cU-boot-nand下:board/samsung/smdk6410/lowlevel_init.S转载 2010-03-09 14:35:00 · 2391 阅读 · 0 评论 -
2410上NAND的初始化及驱动流程
2410上NAND的初始化及驱动流程一 NAND设备及资源的定义和注册我们通过MACHINE_START定义了smdk2410的machine_desc对象,这个对象里面有个init_machine的函数指针, 这里指向smdk_machine_init(), 我们的NAND设备就是在这个函数里注册到系统的.void __init smdk_machine_init(void){转载 2010-03-11 15:35:00 · 451 阅读 · 0 评论 -
[S3C64XX] USB OTG support
Signed-off-by: Minkyu Kang Signed-off-by: Kyungmin Park ---diff --git a/arch/arm/mach-s3c6400/include/mach/map.h b/arch/arm/mach-s3c6400/include/mach/map.hindex cff27d8..c51fd6c 100644--- a/arch/arm/m转载 2010-03-18 15:23:00 · 3794 阅读 · 0 评论 -
S3C2440/6410 TOUCH抖动问题彻底解决
6410 TOUCH抖动问题 #define TSP_SAMPLE_NUM 20 #define TSP_ADC_DELAY = 4000; 至于调用的TIMER中断,每秒次数降到50次即可 #define TSP_SAMPLE_RATE_LOW (50) // 50 Samples per Sec #define TSP_SAMPLE_RATE_HIGH (50转载 2010-03-30 10:03:00 · 658 阅读 · 0 评论 -
Linux设备驱动之HID驱动
------------------------------------------一:前言继前面分析过UHCI和HUB驱动之后,接下来以HID设备驱动为例来做一个具体的USB设备驱动分析的例子.HID是Human Interface Devices的缩写.翻译成中文即为人机交互设备.这里的人机交互设备是一个宏观上面的概念,任何设备,只要符合HID spec,都可以称之为HID设备.常见的转载 2010-03-31 14:16:00 · 5411 阅读 · 0 评论 -
浅析linux下鼠标驱动的实现
浅析linux下鼠标驱动的实现【浅析linux下键盘设备工作和注册流程】对于鼠标驱动和前面分析过的键盘驱动都是共用input模型,所以,对于事件上报和处理的方式都没有区别,只是mouse鼠标驱动当上报完dx,dy,left,middle,right之后,需要调用input_sync(),将前面上报的仅仅填充在缓冲区中的数据,通过mousedev_notify_readers()发送给ope转载 2010-03-31 14:31:00 · 3086 阅读 · 0 评论 -
浅析linux下键盘设备工作和注册流程
浅析linux下键盘设备工作和注册流程【浅析linux下鼠标驱动的实现】 input_init()=>=>class_register(&input_class);注册input类input_proc_init();创建proc下的目录和文件register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.dr转载 2010-03-31 14:33:00 · 1437 阅读 · 0 评论 -
Linux-2.6.30.4在2440上的移植之USB驱动
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、移植环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand 编译器:ar转载 2010-04-01 16:45:00 · 2011 阅读 · 0 评论 -
linux HID 问题
linux驱动中HID设备的驱动不支持read,write系统调用,而要使用ioctl,但ioctl将数据写下去后不能马上回读,要有大于400毫秒的延迟,否则读出来的数据是不正确的。所以发现ioctl通信的效率是很低的,不知道有什么方法可以解决。 Linux 2.6内核中包含了HID驱动,能够自动把USB Key等HID外设识别成“/dev/hiddev0”之类的设转载 2010-04-01 14:05:00 · 4390 阅读 · 2 评论 -
在linux下针对AC'97编程
<br />AC'97大多数应该听说过,可能有些人把它当成一种声卡,或者是声卡上的芯片等等,其实它仅仅是一种规范,符合AC'97规范的声卡,通常叫做AC'97声卡,但其实上面使用的芯片可能完全不一样。现在很多桥片中甚至已经集成了AC'97的规范进去,就不需要专门的声卡了。本文针对AMD的较新的一种桥片CS5536上集成的AC'97进行编程,进而说明如何对符合AC'97规范的声卡进行编程。以下为书写方便,把AC'97写成AC97。<br />1、AC97规范介绍<br /> AC97最重要的三个规范就转载 2010-08-25 16:09:00 · 1821 阅读 · 0 评论