自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (8)
  • 收藏
  • 关注

转载 Linux ALSA声卡驱动之四:Control设备的创建 .

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口

2013-06-30 21:32:56 749

转载 Linux ALSA声卡驱动之三:PCM设备的创建 .

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! 1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信

2013-06-30 21:32:30 695

转载 Linux ALSA声卡驱动之二:声卡的创建 .

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_c

2013-06-30 21:31:55 557

转载 Linux ALSA声卡驱动之一:ALSA架构简介 .

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! 一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/

2013-06-30 21:31:19 518

转载 Linux输入子系统

Linux输入子系统:input.txt                            Linux Input drivers v1.0                (c) 1999-2001 Vojtech Pavlik                                 Sponsored by SuSE------------------------

2013-06-30 21:29:59 858

转载 翻译:Linux的电源管理架构 .

设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan Sternstern@rowland.harvard.edu *************************************************************本文由DroidPhone翻译于201

2013-06-30 21:28:33 434

转载 Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless) .

在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件,tick事件或者用于全局的时间管理(jiffies和时间的更新),或者用于本地cpu的进程统计、时

2013-06-30 21:26:49 526

转载 Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep() .

我们已经在前面几章介绍了低分辨率定时器和高精度定时器的实现原理,内核为了方便其它子系统,在时间子系统中提供了一些用于延时或调度的API,例如msleep,hrtimer_nanosleep等等,这些API基于低分辨率定时器或高精度定时器来实现,本章的内容就是讨论这些方便、好用的API是如何利用定时器系统来完成所需的功能的。/***********************************

2013-06-30 21:26:19 595

转载 Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现 .

上一篇文章,我介绍了传统的低分辨率定时器的实现原理。而随着内核的不断演进,大牛们已经对这种低分辨率定时器的精度不再满足,而且,硬件也在不断地发展,系统中的定时器硬件的精度也越来越高,这也给高分辨率定时器的出现创造了条件。内核从2.6.16开始加入了高精度定时器架构。在实现方式上,内核的高分辨率定时器的实现代码几乎没有借用低分辨率定时器的数据结构和代码,内核文档给出的解释主要有以下几点:

2013-06-30 21:25:49 649

转载 Linux时间子系统之五:低分辨率定时器的原理和实现 .

利用定时器,我们可以设定在未来的某一时刻,触发一个特定的事件。所谓低分辨率定时器,是指这种定时器的计时单位基于jiffies值的计数,也就是说,它的精度只有1/HZ,假如你的内核配置的HZ是1000,那意味着系统中的低分辨率定时器的精度就是1ms。早期的内核版本中,内核并不支持高精度定时器,理所当然只能使用这种低分辨率定时器,我们有时候把这种基于HZ的定时器机制成为时间轮:time wheel。虽

2013-06-30 21:24:48 459

转载 Linux时间子系统之四:定时器的引擎:clock_event_device .

早期的内核版本中,进程的调度基于一个称之为tick的时钟滴答,通常使用时钟中断来定时地产生tick信号,每次tick定时中断都会进行进程的统计和调度,并对tick进行计数,记录在一个jiffies变量中,定时器的设计也是基于jiffies。这时候的内核代码中,几乎所有关于时钟的操作都是在machine级的代码中实现,很多公共的代码要在每个平台上重复实现。随后,随着通用时钟框架的引入,内核需要支持高

2013-06-30 21:24:19 533

转载 Linux时间子系统之三:时间的维护者:timekeeper .

本系列文章的前两节讨论了用于计时的时钟源:clocksource,以及内核内部时间的一些表示方法,但是对于真实的用户来说,我们感知的是真实世界的真实时间,也就是所谓的墙上时间,clocksource只能提供一个按给定频率不停递增的周期计数,如何把它和真实的墙上时间相关联?本节的内容正是要讨论这一点。1.  时间的种类内核管理着多种时间,它们分别是:RTC时间wall time:

2013-06-30 21:23:47 676

转载 Linux时间子系统之二:表示时间的单位和结构 .

人们习惯用于表示时间的方法是:年、月、日、时、分、秒、毫秒、星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就是阐述这些表示方法的意义和区别。/*****************************************************************************

2013-06-30 21:23:09 525

转载 Linux时间子系统之一:clock source(时钟源) .

clock source用于为linux内核提供一个时间基线,如果你用linux的date命令获取当前时间,内核会读取当前的clock source,转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器,计数器只能单调地增加,直到溢出为止。时钟源是内核计时的基础,系统启动时,内核通过硬件RTC获得当前时间,在这以后,在大多数情况下,内核通过选定的时钟源更新实时时

2013-06-30 21:22:29 534

转载 Linux中断(interrupt)子系统之五:软件中断(softIRQ) .

软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。/*********************************************************************************

2013-06-30 21:17:49 496

转载 Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层 .

在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc和i

2013-06-30 21:17:16 558

转载 Linux中断(interrupt)子系统之三:中断流控处理层 .

1.  中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同步和保护

2013-06-30 21:16:40 531

转载 Linux中断(interrupt)子系统之二:arch相关的硬件封装层 .

Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;

2013-06-30 21:15:59 674

转载 Linux中断(interrupt)子系统之一:中断系统基本原理 .

这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /********************************************************

2013-06-30 21:15:08 497

转载 关于typedef的一些用法总结 .

不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别

2013-06-29 14:08:43 402

转载 usb wifi 驱动移植rtl5370 .

我用的wifi是tenda W311MI 150m无线usb网卡 内核版本2.6.37 架构cortex A8首先去tenda官网下载驱动移植过程:1 修改内核配置选项 make cleanmake menuconfigGo into the following menu(s): Device Drivers -> Generic Driver Options

2013-06-29 09:34:17 758

转载 linux platform平台设备驱动 .

一. 平台总线    1. 总线结构体struct bus_type platform_bus_type = { .name = "platform", //总线名 .dev_attrs = platform_dev_attrs, //设备属性 .match = platform_match, //匹配函数 .uevent = platform_uevent,

2013-06-29 09:33:13 492

转载 总线、设备、驱动、类 .

分类: linux设备驱动 2012-12-18 21:40 353人阅读 评论(0)收藏举报一. 总线、设备、驱动、类各自的相关结构体    1.总线     1.1 总线类型结构体struct bus_type { const char *name; //总线类型名 struct bus_attribute *bus_attrs; //总线属性

2013-06-29 09:32:19 548

转载 list_for_each_entry

参考:http://blog.sina.com.cn/s/blog_5e99b41e0100rxgf.htmlhttp://hi.baidu.com/shiftedmind/blog/item/1a7c8381e6a67fa56d8119da.html         在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体

2013-06-29 09:31:25 453

转载 linux input设备驱动 .

2012-12-21 22:54 370人阅读 评论(0)收藏举报一. 输入设备结构体     1. input_dev 输入设备struct input_dev { const char *name; //设备名 const char *phys; //设备系统层的物理路径 const char *uniq; // struct input_

2013-06-29 09:30:02 483

转载 linux i2c设备驱动 .

一. i2c的结构体     1. i2c适配器struct i2c_adapter { struct module *owner; //模块所有者 unsigned int id __deprecated; unsigned int class; //支持的类别(I2C_CLASS_HWMON,I2C_CLASS_DDC,I2C_CLASS_SPD) const st

2013-06-29 09:29:15 624

转载 linux特殊设备驱动 .

一. 内存设备结构体static const struct memdev { const char *name; mode_t mode; const struct file_operations *fops; struct backing_dev_info *dev_info;} devlist[] = { [1] = { "mem", 0, &mem_fops

2013-06-29 09:28:21 437

转载 一、usb子系统

一、usb子系统相关结构体 1. usb总线struct usb_bus { struct device *controller; int busnum; //总线号 const char *bus_name; //总线名 u8 uses_dma; u8 uses_pio_for_control; u8 otg_port; unsigned is_b_ho

2013-06-29 09:27:19 919

转载 list链表 .

一.链表头结构体struct list_head { struct list_head *next, *prev;};二.初始化链表头也就是把list的next和prew指针指向自己static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list-

2013-06-29 09:22:39 808

转载 Linux串口编程

一 uboot传递参数'console=ttyXXX'的作用linux启动时uboot传递进console=ttyS0,115200n8的参数内核中用__setup()宏声明参数处理的方法关于__setup宏参考 early_param和__setup宏__setup("console=", console_setup);console_setup函数处理1.c

2013-06-29 09:20:59 1035

转载 linux命令码(_IO宏) .

在ioctl.h头文件中定义了命令码命令码用一个32位的整型数表达bit29~31表示命令传输的方向,bit16~29记录要传输的数据的大小,bit8~15表示设备类型(一般用一个ASCII表示),bit0~7表示命令编号其中数据大小可以和方向的bit29重叠29位是特殊位,因为无方向定义值为1也就是无方向的时候会占用第29位,无方向就无所谓数据传输,所以携带数据大小段是0有方

2013-06-29 09:07:00 480

转载 MACHINE_START MACHINE_END 宏 .

一、定义#define MACHINE_START(_type,_name) \ //板类型,板名字static const struct machine_desc __mach_desc_##_type \ __used \ __attribute__((__section__(".arch.info.init"))) = { \ .nr = MACH_T

2013-06-29 09:06:28 479

转载 linux gpio接口 .

一.相关结构体1.gpio_chip代表一个芯片的一个gpio bankstruct gpio_chip { //gpio bank const char *label; //bank名 struct device *dev; //设备文件 struct module *owner; //模块所有者 int (*request)(struct gpio_chip *

2013-06-29 09:05:05 563

转载 usb触摸屏驱动 .

源码在/drivers/input/touchscreen/usbtouchscreen.c中static int __init usbtouch_init(void) //入口函数{ return usb_register(&usbtouch_driver); //注册usb触摸屏驱动}module_init(usbtouch_init);看usbtouch_dr

2013-06-29 09:03:09 858 1

转载 linux spi子系统(框架) .

一.spi设备[cpp] view plaincopyprint?struct spi_device {      struct device   dev;    //设备文件      struct spi_master   *master;    //spi主机      u32 max_speed_hz;   //最大速率       u8  chip_s

2013-06-29 09:00:35 1762

转载 alsa音频架构

alsa音频架构1第一部分 alsa子系统关键结构体对象等1.声卡设备类型定义#define SNDRV_DEV_TOPLEVEL ((__force snd_device_type_t) 0)#define SNDRV_DEV_CONTROL ((__force snd_device_type_t) 1) #define SNDRV_DEV_LOWLEVEL_PRE ((

2013-06-29 08:47:57 3179 1

转载 linux设备模型之platform总线(转)

从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。     Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。     Linux platform driver机制和传统的device driver 机制(通过driver_reg

2013-06-28 08:50:11 567

转载 我对linux理解之alsa

------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:amingriyue.blog.chinaunix.net------------------------------------------我们以imx51为平台,去分析alsa的架构。有两个文件跟平台具体相关的:一个是跟cpu的音频接

2013-06-28 08:50:00 1218

转载 uboot 详细注释讲解 .

http://home.eeworld.com.cn/my/space.php?uid=135723&do=blog&id=25548标签: uboot 注释 讲解  2009-11-18 19:22 声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分

2013-06-28 08:49:49 538

转载 uboot启动参数设置分类及方法

一、nfs启动内核与根文件系统,内核与根文件系统都在nfs上bootargs=noinitrd root=/dev/nfs rw nfsroot=192.168.0.1:/home/tekkaman/working/nfs/rootfs ip=192.168.0.2:192.168.0.1::255.255.255.0 console=ttySAC0,115200 init=/linu

2013-06-28 08:49:43 451

Si4463 datasheet

主要介绍si4463的datasheet,介绍基本工作原理,工作范围等,了解寄存器的配置等等,学习的第一手材料

2012-11-07

si4463 原理图 pcb

主要是si4463 原理图 pcb BOM 仅供参考

2012-11-07

si446x 代码

si446 bsp及应用 包括c8051单片机、SPI驱动等

2012-11-07

z80微控制器,详细介绍的资料

z80微控制器,较全面的资料,详细介绍处理器及寄存器/编程语言

2011-04-07

Cadence PCBtrainning

Cadence PCB trainning

2011-01-27

LDO原理,资料很详细

LDO原理,资料很详细 里面有很多图,很好理解

2010-02-06

Linux设备驱动第三版(中文版)

Linux设备驱动第三版(中文版),Linux设备驱动第三版(中文版),Linux设备驱动第三版(中文版)

2009-11-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除