Embedded_Driver
文章平均质量分 77
Greens_Ren
这个作者很懒,什么都没留下…
展开
-
s3c6410 GPIO驱动总结
[cpp] view plaincopy~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 《常识》 ¥应用程序----->系统内核----->设备转载 2014-05-04 16:21:00 · 977 阅读 · 0 评论 -
原子操作atomic_t
原文地址:http://www.cnblogs.com/dodo-bear/archive/2011/05/15/atomic_t.html所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义转载 2014-05-18 11:18:28 · 676 阅读 · 0 评论 -
内核中的_init和_exit
们在内核中经常遇到初始化函数是这样定义的: static int __init init_func(); ,与普通函数相比,定义中多了__init。那么,__init是什么意思呢?还有与其匹配的__exit呢?__init* macro__init定义在:include/linux/init.h#define __init __attribute__ ((__secti转载 2014-05-16 12:11:12 · 1013 阅读 · 0 评论 -
LCD驱动程序设计
一、LCD简介要说LCD,先需要了解什么是液晶。1888年,奥地利植物学家莱尼茨尔发现一些有机物融化后变成液体。随后一位德国专家发现这些液体具有某些晶体的特征,比如折射性,于是他就称呼这种液体叫“液态晶体”,也就是“液晶”,液晶属于一种有机化合物,分子形状为长棒状,长度大约10NM,在不同的电流作用下,分子会做有规律的旋转,这样对光线产生了一定的控制,很多液晶分子构成一个像素,而很多像素又构成原创 2014-05-14 10:54:01 · 1393 阅读 · 0 评论 -
中断申请函数request_irq详解
原地址:http://blog.csdn.net/wealoong/article/details/7566546一、中断注册方法在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_handler_t handler,转载 2014-05-20 21:11:52 · 21937 阅读 · 0 评论 -
tasklet机制分析
深入分析Tasklet机制一、tasklet使用Tasklet的使用比较简单,每个Tasklet结构体有一个函数指针,指向你自己定义的函数。当我们要使用 tasklet ,首先新定义一个tasklet_struct结构,并初始化好要执行函数指针,然后将它挂接到 task_vec 链表中,并触发一个软中断就可以等着被执行了。1.1.定义tasklet_struct结构Vo转载 2014-05-16 14:11:58 · 471 阅读 · 0 评论 -
TCP三次握手协议解析
TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urge转载 2014-05-21 19:59:49 · 551 阅读 · 0 评论 -
睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE
Two states are associated with sleeping, TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE. They differ only in that tasks in the TASK_UNINTERRUPTIBLE state ignore signals, whereas tasks in the TASK_INTER转载 2014-05-21 10:43:51 · 600 阅读 · 0 评论 -
poll_wait函数详解
原文地址 http://www.cnblogs.com/hanyan225/archive/2010/10/13/1850497.html“小王,来聊聊,今天面试的情况怎么样,应该挺顺利的吧..”看着小王平淡的眉头,我问道。“唉,别提了,你说,我的运气咋这差呢,面试前你不是给我讲了有关阻塞的问题吗,我见了面试官是吧,还跟他好好的用今天排队的例子说了有关阻塞的问题,但是.转载 2014-05-22 20:56:46 · 10251 阅读 · 1 评论 -
struct inode和struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head i_转载 2014-06-06 16:58:00 · 603 阅读 · 0 评论 -
详解Linuxrc、rcS、rc.local、Profile
/Linuxrc 执行init 进程初始化文件。主要工作是把已安装根文件系统中的/etc 安装为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;接着Linuxrc 重新构建文件分配表inittab;之后执行系统初始化进程/sbin/init。/mnt/etc/init.d/rcS 完成各个文件系统的 mount,再执行/usr/etc/r转载 2014-05-24 09:25:26 · 782 阅读 · 0 评论 -
中断服务子程序(ISR)
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area (double radius) {转载 2014-06-08 18:30:25 · 3304 阅读 · 0 评论 -
移植boa服务器到6410开发板并运行成功
OK6410的Boa服务器移植: Boa的编译1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz。2. 解压:tar xzf boa-0.94.13.tar.gz3. 进入解压后的文件夹 boa-0.94.13内部的 src文件夹,对源文件进行如下修改1 由于arm-linux-gcc 编译器版本过高,对语法的支转载 2014-05-24 10:09:48 · 1052 阅读 · 0 评论 -
开发板挂载NFS系统
在建立交叉编译环境的时候,经常需要网嵌入式Linux环境中拷贝文件,nfs网络共享文件系统是一种很方便的方式。在嵌入式Linux挂载nfs系统,需要用到如下命令:1 mount -t nfs -o nolock,rsize=1024,wsize=1024 10.11.52.249:/windows/nfs_root /mnt上述比较重要的参数是 -o nolock,rsize =原创 2014-05-23 21:04:54 · 584 阅读 · 0 评论 -
自动创建设备文件
原文地址:刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod [OPTION]... NAME TYPE [MAJOR MINOR]命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev(mdev)内核中定义了struct class结转载 2014-05-18 16:31:19 · 598 阅读 · 0 评论 -
字符设备驱动程序
一、驱动程序介绍知识结构:1、Linux驱动程序设计模式(40%)2、内核相关知识(30%)3、硬件相关知识(30%)学习方法:理论-->实验(疑问)-->理论-->实验-->....定义:驱动程序是使硬件工作的软件驱动分类:字符设备驱动(重点)、网络接口驱动(重点)、块设备驱动字符设备字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的原创 2014-05-14 16:52:35 · 715 阅读 · 0 评论 -
高级字符设备驱动
一、设备Ioctl控制功能:Read的功能?Write的功能?Ioctl用来做什么?大部分驱动除了需要具备读写设备的能力外,还具备对硬件控制的能力。例如,要求设备报告错误信息,改变波特率,这些操作常常通过ioctl方法来实现。用户使用方法:在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd, unsigned long cmd,原创 2014-05-10 21:29:02 · 562 阅读 · 0 评论 -
Linux硬件设备访问
一、mmap设备操作1、mmap系统调用void *mmap(void * addr, size_t len, int prot, int flags, int fd, off_t offset)返回值:内存映射的首地址(虚拟映射区首地址)。功能:内存映射函数mmap,负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改(使用指针),来实现对文件的读取和修改,而不原创 2014-05-03 20:11:56 · 2071 阅读 · 0 评论 -
linux嵌入式驱动-总线设备驱动模型
一、Kobject&KsetKobject就是在sysfs文件系统中创建一个目录,目录中包含一个文件。而Kset就是在sysfs文件系统中创建一个可以包含目录的目录。所以Kobject是Kset的父类或基类。1、sysfs文件系统“sysfs is a ram-based filesystem initially based on ramfs. It provides a means原创 2014-05-05 07:56:17 · 1459 阅读 · 0 评论 -
网卡触摸屏驱动程序
一、Linux网络体系架构二、网卡驱动设计三、Dm9000网卡驱动分析四、Linux输入子系统五、触摸屏驱动设计原创 2014-05-07 13:47:38 · 1641 阅读 · 0 评论 -
tasklet机制分析
一、tasklet使用Tasklet的使用比较简单,每个Tasklet结构体有一个函数指针,指向你自己定义的函数。当我们要使用 tasklet ,首先新定义一个tasklet_struct结构,并初始化好要执行函数指针,然后将它挂接到 task_vec 链表中,并触发一个软中断就可以等着被执行了。1.1.定义tasklet_struct结构Void my_tasklet_fun转载 2014-05-16 14:05:06 · 133 阅读 · 0 评论 -
PCI、串口驱动程序设计
一、PCI总线概述总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线。总线由电气接口和编程接口组成。PCI是peripheral component interconnect(外围设备互联)的简称,是在桌面及更大型的计算机上普遍使用的外设总线。PCI总线具有三个非常显著的优点:1、在计算机和外设间传输数据时具有更好的性能2、能够尽量独立于具体的平台3、可以方便地实原创 2014-05-08 18:43:22 · 1575 阅读 · 0 评论 -
struct module结构体 和 THIS_MODULE详解
yuanw结构体struct module结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插入内核时,模块便与一个 struct module结构体相关联,并成为内核的一部分。下面是结构体struct module的完整定义,接下来会逐个解释: [cpp] view pl转载 2014-05-16 15:14:04 · 620 阅读 · 0 评论 -
Makefile详解
原地址:http://blog.csdn.net/jrckkyy/article/details/4899982概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为转载 2014-05-16 09:29:55 · 689 阅读 · 0 评论 -
makefile中的ifeq、ifdef、ifneq的区别
判断语句使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 一、示例 下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnu normal_libs = foo: $(objects)转载 2014-05-16 09:15:11 · 7469 阅读 · 0 评论 -
共享内存函数(shmget,shmat,shmdt,shmctl)及其范例
原文地址:共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. shmget函数原型shmget(得到一个共享内存标识符或创建一个共享内存对象)所需头文件#include #include 函数说明得到一个共转载 2014-05-17 09:25:21 · 748 阅读 · 0 评论 -
getline()函数
yu我在网上搜了半天getline()函数,大多针对C++的,重载函数比较多,云里雾里的,而且没有实例,反正就是没有自己所需要的getline()函数。所以,自己在Linux下man了一把,并做了测试。getline()函数的功能是从文件中获取行信息,即每次读取一行信息。 因为我使用getline()函数的目的是获取本地网卡信息,即eth0的信息,从而判断启动机子时是否查了网转载 2014-05-17 09:33:31 · 677 阅读 · 0 评论 -
块设备驱动程序设计
一、块设备简介1、块设备块设备将数据存储在固定大小的块中,每个块的大小通常在512字节到32768字节之间。磁盘、SD卡都是常见的块设备。2、块设备VS字符设备# 块设备和字符设备最大的区别在于读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常为一个sector,而字符设备的基本单元为字节。# 块设备能够随机访问,而字符设备则只能顺序访问。块设备体系架构:原创 2014-05-10 15:18:37 · 1332 阅读 · 0 评论 -
软中断与硬中断
①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中断号由指令直接给出,无需使用中断控制器。转载 2014-05-18 22:05:36 · 690 阅读 · 0 评论 -
中断处理详解
之前写过中断相关的文章了,详细分析过ARM底层中断实现过程,这篇文章着重从操作系统设计层面理解中断系统。1.中断中断:是外围设备产生的异步事件,不同设备,中断号不同;比如在经典PC上,IRQ 0是时钟中断,IRQ 1是键盘中断;对于连接于PCI总线上的设备,中断还可以是动态分配的。异常:与中断不同,异常的产生必须考虑与处理器时钟同步,比如除零,缺页,软中断等,都是由处理器自身产生的同步转载 2014-06-06 21:27:09 · 1744 阅读 · 0 评论