本程序采用动态映射的方法控制led,硬件平台为飞凌的ok6410
led.h:定义控制命令
#ifndef _LED_H
#define _LED_H
#define LED_MAGIC 'M'
#define LED_ON _IO(LED_MAGIC, 0)
#define LED_OFF _IO(LED_MAGIC, 1)
#endif
驱动程序led.c
#inclu...
分类:
系统相关 时间:
2014-08-24 20:53:23
阅读次数:
266
memdev.h
#ifndef _MEMDEV_H
#define _MEMDEV_H
#define MEM_MAGIC 'm'
#define MEM_RESTART _IO(MEM_MAGIC, 0)//使用内核提供的宏产生命令,
#define MEM_SET _IOW(MEM_MAGIC, 1, int)//改命令向内核传递一个整形的参数
#endif
驱动程序memd...
分类:
系统相关 时间:
2014-08-24 14:13:42
阅读次数:
332
#include
#include
#include
#include
#include
#include
#include
#define DRIVERNAME "xxx"
#define DEV_MINOR 0
static dev_t xxx_devno = 0;
static struct class * xxx_class;
struct xxx_dev
{
st...
分类:
系统相关 时间:
2014-08-24 14:13:02
阅读次数:
298
先上代码:
#include
#include
#include
#include
static char* whom = "World";
static int howmany = 1;
module_param( howmany, int, S_IRUGO );
module_param( whom, charp, S_IRUGO );
static int hello_ini...
分类:
系统相关 时间:
2014-08-23 01:08:59
阅读次数:
367
中断处理流程如下:
1、发生中断时,CPU执行异常向量vector...
分类:
系统相关 时间:
2014-08-21 17:22:54
阅读次数:
247
s3c6410 Linux 驱动开发环境搭建
—— 既然你是做Linux开发的,你还用虚拟机?
很多人都在win下做开发,于是SD_writer.exe之类的烧写工具“大行其道”,多是用虚拟机Linux。完全转到Linux下学习开始蛮不爽的,开发板制作商送的教程都是些讲Win-CE的东东,感觉实质性的东西没什么。对于完全用Linux做开发的技术讲解非常少,连烧写SD卡都...
分类:
系统相关 时间:
2014-08-19 12:53:54
阅读次数:
264
:设备驱动程序的作用
从一个角度看,设备驱动程序的作用在于提供机制,而不是策略。在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何特定策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序。
从另一个角度来看驱动程序,它还可以看作是应用程序和实际设备之间的一个软件...
分类:
系统相关 时间:
2014-08-18 22:10:03
阅读次数:
309
一>:设置测试系统
首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中。
二>:HelloWorld模块
#include //定义了驱动的初始化和退出相关的函数
#include //定义了内核模块相关的函数、变量及宏
MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块采用自由许可证...
分类:
系统相关 时间:
2014-08-18 22:08:53
阅读次数:
472
.主设备号和次设备号
对字符设备的访问时通过文件系统内的设备名称进行的。那些设备名称简单称之为文件系统树的节点,它们通常位于/dev目录。字符设备驱动程序的设备文件可通过ls -l命令输出的第一列中的'c'来识别。块设备同样位于/dev下,由字符'b'标识
crw-rw---- 1 root root 253, 0 2013-09-11 20:33 usbmon0
...
分类:
系统相关 时间:
2014-08-18 22:08:03
阅读次数:
453
.并发及其管理
大部分竞态可通过使用内核的并发控制原语,并应用几个基本的原理来避免。第一个规则是,只要可能,就应该避免资源的共享,这种思想的明显应用就是避免使用全局变量。但硬件资源本质上就是共享的,软件资源经常需要对其他执行线程可用。全局变量并不是共享数据的唯一途径,只要我们的代码将一个指针传递给了内核的其他部分,一个新的共享就可能建立。在单个执行线程之外共享硬件或软件...
分类:
系统相关 时间:
2014-08-18 22:06:32
阅读次数:
248