Linux设备驱动
文章平均质量分 75
chenlong12580
这个作者很懒,什么都没留下…
展开
-
Linxu设备驱动之Hello World!
接下来准备记录一下Linux驱动学习的点点滴滴!接触一段时间了,但是没有记录,恰巧想把手头的ARM11的板子整整!所以,准备从今天开始系统记录一下,主要就是学习驱动的架构,然后编写板子上面外设的驱动程序,并进行测试! 关于驱动学习最好的资料就是内核源码了,但是也推荐几本书。 1、《Linux设备驱动》 2、 《Linux设备驱动开发详解》原创 2012-03-03 14:19:47 · 1505 阅读 · 0 评论 -
norflash启动和nandflash启动
S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动。 1)nand flash:适合大容量数据存储,类似硬盘; 2)nor flash:适合小容量的程序或数据存储,类似小硬盘; 3)sdram:主要用于程序执行时的程序存储、执行或计算,类似内存。 Nor flash的有自己的地址线和数据线,可以采用类似于memory的随机转载 2015-03-15 15:03:58 · 1308 阅读 · 0 评论 -
norflash芯片内执行(XIP)
为什么程序不能直接在nandflash上执行?出于这个疑惑带来了这篇博文,是我在网上找了很多资料后总结的,假如有误,希望马上指出来,免得我误人子弟。谢谢!nandflash和norflash NOR Flash 和 NAND Flash是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Electrically转载 2015-03-15 14:54:58 · 2061 阅读 · 1 评论 -
Linux 内存管理之highmem简介
一、Linux内核地址空间一般来说Linux 内核按照 3:1 的比率来划分虚拟内存(X86等):3 GB 的虚拟内存用于用户空间,1GB 的内存用于内核空间。当然有些体系结构如MIPS使用2:2 的比率来划分虚拟内存:2 GB 的虚拟内存用于用户空间,2 GB 的内存用于内核空间,另外像ARM架构的虚拟空间是可配置(1:3、2:2、3:1)。内核线性地址空间用于为内核的运行提供最基本的支持,也是转载 2014-07-06 17:19:40 · 2569 阅读 · 0 评论 -
Qt中的串口编程之三
QtSerialPort今天我们来介绍一下QtSerialPort模块的源代码,学习一下该可移植的串口编程库是怎么实现的。首先,我们下载好了源代码之后,使用QtCreator打开整个工程,可以看到如下图的源代码结构:我们先来看一下serialport-lib.pri这个文件,serialport.pro工程文件就是靠这个文件来控制整个源代码的编译的。,具体内容如下:原创 2013-07-14 22:40:51 · 12299 阅读 · 1 评论 -
Android 系统中设备节点的创建
查了很多资料,有很多人错误地认为是kernel创建的/dev/yourdevice 在最近的kernel中这种说法是不对的, 其实是kernel仅负责在/sys/创建一大堆下目录和文件, 而真正的设备节点是在用户空间创建的, 在android系统中,由init进程负责处理这种uevent事件,如果是"add" device事件, init转载 2012-03-20 20:09:25 · 4187 阅读 · 0 评论 -
IP数据包的校验和算法
1、算法思路: IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算IP数据包的校验和。应该按如下步骤: (1)把IP数据包的校验和字段置为0; (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和; (3)把得到的结果存入校验和字段中。 在接收原创 2012-03-14 18:00:44 · 14475 阅读 · 0 评论 -
一步一步实现Linux下Ping命令
ICMP协议是Internet控制报文协议,通常被认为是IP层的组成部分。它传递差错报文以及其它需要注意的信息。ICMP协议通常被IP层或更高层协议使用。 Ping命令是ICMP协议的一个使用范例。Ping命令主要是用于测试一台主机和另外一台主机之间的网络连通性。主要的过程就是Ping程序通过发送回显请求报文,然后接收远程主机的回显应答报文,通过分析回显应答报文就可知道两台主机原创 2012-03-14 10:28:42 · 2312 阅读 · 0 评论 -
将 Win32 程序移植到 Linux
对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。 首先声明开发环境。Win32程序的开发环境是VS.Net 2008,编程语言是C;Linux使用的RHEL 5.4,GCC的版本是4.1.2,编程语言也是C。然后依次说明移植的对象:数据类型/字符串处理/系统调用/转载 2012-03-13 23:37:22 · 1485 阅读 · 0 评论 -
S3C6410的PWM驱动实例
我们使用PWM来控制蜂鸣器,主要是两种功能,一是使能蜂鸣器,并设置其频率;二是禁止蜂鸣器。这些操作均可通过ioctl来完成。所以在pwm的设备驱动中,主要也就是ioctl这个函数。 首先,我们要定义两个命令,用在ioctl函数中的switch语句中,至于怎么来定义这两个命令呢?其实简单的做法,我们可以将其定义为两个不同的常量,能用在switch语句中即可,但是这样会造成一定的问题。例如,其原创 2012-03-12 10:07:26 · 2686 阅读 · 0 评论 -
S3C6410的PWM部分
在分析PWM驱动的实现之前,我们需要看看6410的芯片手册中有关PWM章节,知道PWM的产生方式和控制方法,知道相关的一些寄存器才能知道设置那些寄存器,都应该赋什么值,下面就是其中的一部分,主要是芯片手册的内容,没写有关PWM的全部,主要是我们稍候的PWM驱动主要是针对蜂鸣器的使用,所以选取了相关的内容,感兴趣的可以自己去阅读芯片手册。 这一章主要是讲述S3C6410X RISC微原创 2012-03-11 20:27:51 · 3966 阅读 · 0 评论 -
设备驱动中的中断问题及实例解析
1、关于设备驱动中的中断问题 操作系统为了使得快速设备和慢速设备合适工作,需要中断来提高效率,一个外设要使用一个中断就必须注册中断号,获得跟这个中断号相关的一些资源,并且在中断发生的时候内核可以进行一些处理,例如:调用中断处理例程来真正的处理设备中断。Linux处理中断的方式很大程度上与它在用户空间处理信号的方式是一样的。 我们知道,从本质上讲,中断处理例程会和其他代码原创 2012-03-11 10:53:31 · 8250 阅读 · 0 评论 -
详解内核常用的两个表达式
1、通过typeof来获得类型信息 获取一个表达式类型信息的另一种方法是使用typeof。使用这个关键字的语法和sizeof的十分类似,但在语义上类似于用typedef定义的类型名结构。 有两种方式来书写typeof的参数:使用一个表达式或者使用一个类型。下面的例子是使用一个表达式的方式: typeof(x[0][1]) 这里假定x原创 2012-03-09 14:30:46 · 1447 阅读 · 0 评论 -
misc设备驱动模型及实例解析
1、misc设备驱动模型 本节我们来看一下misc设备驱动模型的有关内容,首先是看看它的设备结构体,定义在include/linux/miscdevice.h中:struct miscdevice { int minor; //次设备号,若为 MISC_DYNAMIC_MINOR 自动分配 const char *name; //设备名 const s原创 2012-03-10 10:50:12 · 9978 阅读 · 2 评论 -
一个简单的字符驱动程序
最近在学习Linux下设备驱动程序,从头开始吧!慢慢总结,先入手,后入门,再提高! 下面是一个简单的字符设备驱动程序,主要是一个模拟设备,使用了系统的内存,相信大家都能看懂,毕竟简单,而且注释清楚,编译测试的方法大家都知道吧,这里要说的就是习惯的测试方法是通过echo向设备文件写入内容,然后通过cat显示内容,但是希望大家看到,该设备只有4字节的内存,测试的时候建议大家可以试一试写原创 2012-03-08 23:13:26 · 3633 阅读 · 0 评论 -
Linxu设备驱动之Hello World带参数版本!
上一节中我们我们写了一个简单的驱动程序,基本就是编程中的hello world!但是整个打印出来的内容都是编译的时候确定好的,不能根据输入的参数动态改变。所以,这里我们实现hello world!带参数的版本,主要实现的效果就是装载模块的时候给出打印参数,模块能够打印出这个参数! 参数的来源主要有两个:一是使用insmod ./XX.ko 时候在命令行后直接给出参数;二是使用mod原创 2012-03-04 14:57:50 · 1835 阅读 · 0 评论 -
SRAM/DRAM,PROM/EPROM/EEPROM,NOR/NAND FLASH区别
SRAM/DRAM,PROM/EPROM/EEPROM,NOR/NAND FLASH区别RAM / ROM 存储器 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM 有两大类:转载 2015-03-15 14:40:28 · 2826 阅读 · 0 评论