驱动开发
jidonghui
这个作者很懒,什么都没留下…
展开
-
Alsa驱动移植参考
作者:程姚根,华清远见嵌入式培训中心讲师。一. 下载alsa所需要的库和测试alsa的测试工具,此次使使用的是alsa-lib-1.0.24.1.tar.bz2、alsa-utils-1.0.24.2.tar.bz2。二. 默认情况下内核已经支持alsa驱动,保险情况下先去确认一下,如下图:Device Drivers ---> Sound car转载 2012-01-13 09:52:44 · 488 阅读 · 0 评论 -
Linux驱动程序开发 004- 字符设备驱动
序言Linux下的大部分驱动程序都是字符设备驱动程序,在这一章我们就扩展我们的“Hello World”程序来支持用户应用程序的读写操作。我们也会了解到字符设备是如何注册到系统中的,应用程序是如何访问驱动程序的数据的,及字符驱动程序是如何工作的。设备号通过前面的学习我们知道应用程序是通过设备节点来访问驱动程序及设备的,其根本是通过设备节点的设备号(主设备号及从设备号)来关联驱动转载 2012-04-10 09:18:58 · 469 阅读 · 0 评论 -
Linux驱动程序开发007 - 设备驱动模型初探
序言从这一章开始,我们将详细的介绍Linux的设备驱动模型。Linux设备驱动模型是一个相当复杂的系统,对于初学者来说真有些无从入手。而且更加困难的是,随着新的Linux Kernel的release,Linux的设备驱动模型总会有或大或小的变化,我们将尽量展现 Linux Kernel 的这种变化。早期的Linux内核(版本2.4之前)并没有实现一个统一的设备模型,设备节点的转载 2012-04-10 10:06:17 · 559 阅读 · 0 评论 -
Linux驱动程序开发001 - 驱动程序基本框架
前言不管是Windows还是Linux,驱动程序都扮演着重要的角色。应用程序只能通过驱动程序才能同硬件设备或系统内核通讯。Linux内核对不同的系统定义了标准的接口(API),应用程序就是通过这些标准的接口来操作内核和硬件。驱动可以被编译的内核中(build-in),也可以做为内核模块(Module)存在于内核的外面,需要的时候动态插入到内核中运行。就像你学习操作系统概念时所了解的那样,L转载 2012-04-10 08:47:02 · 665 阅读 · 0 评论 -
Linux驱动程序开发009 - 使用内核内存
序言我们在编写用户空间程序的时候经常需要动态或静态(如静态数组)的使用系统内存资源,同样在内核空间也有类似的操作,但内核空间的操作要远比用户空间复杂的多,这一章就对如何在驱动程序中使用内存做个系统的介绍。对于一个32位的系统来说,可访问的内存地址空间是4G。Linux系统将这4G的地址空间划分为两部分,以x86为例,0-3G (0 - PAGE_OFFSET, 0xC0000000)是转载 2012-04-11 14:36:14 · 681 阅读 · 0 评论 -
内核定时器的使用(好几个例子add_timer)
LINUX内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1) 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2)转载 2012-04-11 14:43:26 · 22212 阅读 · 0 评论 -
linux内核对S3C2410睡眠模式的支持
linux内核对S3C2410睡眠模式的支持作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。一、S3C2410支持4种供电模式(1)NORMAL MODE耗电最大、可以通过关闭具体控制器的时钟来节电(2)SLOW MODE在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率(3)IDLE MODEFCLK被关断,主要由于CPU core节转载 2012-06-05 09:13:44 · 613 阅读 · 0 评论 -
linux驱动修炼之道-混杂设备
Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。 在内核中用struct miscd转载 2012-05-23 17:00:42 · 600 阅读 · 0 评论 -
Linux设备驱动模型
kobject原理与实例分析1、Sysfs文件系统"sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structures, their attributes, and thelinkages between them to us转载 2012-05-23 17:08:35 · 659 阅读 · 0 评论 -
Make menuconfig 详解
make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录.1 #make config(基于文本的最为传统的配置界面,不推荐使用)2 #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)注意:使用make menuconfig 需要安装ncurses( sudo apt-get install转载 2012-06-19 08:33:44 · 2819 阅读 · 0 评论 -
Linux 内核中的 cdev_alloc和cdev_add
Linux内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {struct kobject kobj; // 每个 cdev 都是一个 kobjectstruct module *owner; // 指转载 2012-06-19 08:35:05 · 2030 阅读 · 0 评论 -
窥视Linux内核的行为的一些方法
想了解Linux内核的行为,需要一定的偷窥经验,大致可以分为以下几个:1.使用printk直接在内核代码或者模块代码的你想偷窥的地方printk一些信息。这种方式需要你会编译内核代码以及编译内核模块,以及将其正确安装进内核并启动之。虽然需要这么多知识,然而这种方式是比较土的。除非万不得已,一定有比这更加简单的方法。2.查看dmesg这种方式取决于内核会输出哪些信息。dm转载 2012-06-19 08:36:31 · 570 阅读 · 0 评论 -
三星U-Boot-1.1.6源码分析
最近在看uboot的源码,做些笔记。lowlevel_init.S (board\samsung\smdk6410)这个文件主要是与板级配置相关的代码,看他在那个目录就知道了。不多说了,开始看源码。1、#include #include #include #include "smdk6410_val.h"_转载 2012-06-19 08:41:36 · 1009 阅读 · 0 评论 -
Linux驱动程序开发002 - Kbuild系统
序言从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同,尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。Linux内核Makefile分类转载 2012-04-10 09:17:10 · 514 阅读 · 0 评论 -
Linux驱动程序开发 006- 内核同步技术
序言在前面,我们介绍了常用两种内核同步技术:自旋锁和信号量。这里我们接着介绍其他的内核同步技术。内核同步技术前面我们提到,信号量是基于原子操作的,它的信号初始值count是一个原子类型,下面我们就对它做详细的介绍,同时我们还会讲解其他的内核同步技术。原子操作原子操作是内核中比较低级的同步操作接口,它保证指令以“原子”的方式执行而不能被打断。内核中提供了两种原子操作接口,转载 2012-04-10 09:35:11 · 565 阅读 · 0 评论 -
linux驱动开发方法论
:http://v.youku.com/v_show/id_XMTg0NDY4NDIw.html转载 2012-01-13 10:21:57 · 383 阅读 · 0 评论 -
linux驱动-platform详解
platform详解作者:程姚根,华清远见嵌入式学院讲师。一、platform设备模型从Linux 2.6起引入了一套新的驱动管理和注册机制,platform_device和platform_driver,Linux中大部分的设备驱动都可以使用这套机制。platform是一条虚拟总线。设备用platform_device表示,驱动用platform_driver进行注册,linux p转载 2012-02-07 14:53:03 · 1476 阅读 · 0 评论 -
i2c驱动之i2c-s3c2410.c
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* i2转载 2012-02-14 16:50:42 · 611 阅读 · 0 评论 -
中断函数int request_irq(...)
request_irq()、free_irq() 这是驱动程序申请中断和释放中断的调用,在include/linux/sched.h里声明。Request_irq()调用的定义:int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs),unsig转载 2012-02-15 14:25:04 · 1450 阅读 · 0 评论 -
Linux驱动模块初始教程
Linux驱动模块初始教程:一步一步,从helloworld到insmod->printk!!!【0】笔者的配置环境XP->VMWare 7.1->Ubuntu 9.04【1】有必要查询下Linux内核# uname -r2.6.28-11-generic# ls /usr/src/linux-headers-2.6.28-11 linux-headers-转载 2012-02-16 10:29:54 · 458 阅读 · 0 评论 -
使用IO内存控制硬件点亮LED灯
Linux中控制GPIO点亮LED的方法有好几种。一种是使用内核提供的专门用来控制GPIO的函数来点亮LED,如:s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]); s3c2410_gpio_setpin(led_table[i], 0);一种是通过IO内存获取硬件地址从而控制GPIO来点亮LE转载 2012-02-16 10:46:01 · 774 阅读 · 0 评论 -
I2C驱动分析
实际上在较新的代码中(如笔者现在用的linux-2.6.30)里面其实己经有一个通用的I2C驱动了。所以在一些简单的场合,我们其实可以不用再去写驱动,只要会用就可以了,但是会用也不是一件很简单的事情,因为关于这方面的内容很少,有些时候,我们不得不去分析一下代码,才能明白如何去用。I2C的代码是比较少的,因为协议本身也不是很复杂。我们可以从他的代码目录开始讲起。Linux中,关于I2C的驱动转载 2012-02-17 10:18:43 · 939 阅读 · 1 评论 -
linux内核对S3C2410睡眠模式的支持
linux内核对S3C2410睡眠模式的支持作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师。一、S3C2410支持4种供电模式(1)NORMAL MODE耗电最大、可以通过关闭具体控制器的时钟来节电(2)SLOW MODE在此模式下可以没有内部PLL,耗电情况依赖于外部时钟的频率(3)IDLE转载 2012-03-07 10:37:35 · 454 阅读 · 0 评论 -
深入理解ARM体系架构(S3C6410)---PWM实例
深入理解ARM体系架构(S3C6410)---PWM实例分类: 嵌入式arm篇2012-03-24 12:30 2088人阅读 评论(3) 收藏 举报本系列文章由muge0913编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7389801作者:张同浩,邮箱:muge0913@sina.com转载 2012-03-31 08:33:08 · 846 阅读 · 0 评论 -
移植Linux-2.6.30.4到mini2440
移植Linux-2.6.30.4到mini2440移植Linux-2.6.30.4到mini2440一、安装交叉编译器1)交叉编译器使用CodeSourcery提供的符合EABI标准的arm-none-linux-gnueabi-gcc-4.3.3交叉编译器,下载地址:http://www.codesourcery.com/sgpp/lite/arm/porta转载 2012-04-09 10:24:29 · 666 阅读 · 0 评论 -
SDIO WiFi模块分析
S3C6410硬件模块分析 -- SDIO WiFi模块分析 (2011-05-04 17:42)分类: 底层开发Andrew Huang 转载请注明作者及网址. 手头的上课s3c6410开发板,带了SDIO接口的WiFi模块,但是没有Linux下的驱动,因此在上网络驱动时课参考s3c2440的实现试着分析和调试一下SDIO的WiFi驱动。转载 2012-03-21 15:44:26 · 7582 阅读 · 0 评论 -
Linux驱动程序开发 005- 内核同步技术
序言就像我们在操作系统里学习的那样,如果多个程序(进程或线程)同时访问临界区数据就会发生竞争。存在竞争条件的程序会产生不可预料的结果。消除竞争的方法一般就是同步的访问临界区数据(原子访问)。Linux内核提供了多种技术用来实现内核同步操作。下面我们就分别介绍。内核同步技术Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。作为一个总结,我们先列出内核同步方转载 2012-04-10 09:34:17 · 570 阅读 · 0 评论 -
Linux驱动程序开发 003- 设备与驱动的关系
序言前面两章我们了解了Linux驱动程序的基本框架,也了解了如何编译Linux的驱动程序。接下来我们有必要介绍Linux系统的设备了,这样我们才能清楚的知道应用程序和设备驱动程序是如何的工作的,或者说应用程序是如何控制驱动程序的,进而知道应用程序是如何通过驱动程序操作设备的。Linux设备分类Linux下的设备通常分为三类,字符设备,块设备和网络设备。字符设备一转载 2012-04-10 09:18:01 · 534 阅读 · 0 评论 -
2416 spi
参考资料:6410手册/2416手册 Kernel部分驱动代码作者:agan联系邮箱 beswipe@yahoo.com.cnracer.blog.chinaunix.net转载须注明出处! SPI接口简述 SPI是 Serial Peripheral Interface(串型外部接口)的缩写。SPI接口有4根PIN脚,分别是:转载 2012-11-15 17:18:22 · 1488 阅读 · 0 评论