s3c2440基于linux的gpio led字符设备驱动实践
今天完成了嵌入式linux的第一个驱动的编写和测试,虽然是个简单的程序,但是麻雀虽小,五脏俱全,希望可以给刚开始接触驱动编写的人一些提示,共同进步。
源代码:
分析如下:
下面是我的驱动程序:
#include <linux/config.h>//配置头文件
#include <linux/kernel.h>//内核头文件
#include <linux/sched.h>
#include <linux/timer.h>//时钟头文件
#include <linux/init.h>//用户定义模块初始函数名需引用的头文件
#include <linux/module.h>//模块加载的头文件
#include <asm/hardware.h>
#include <asm/arch/S3C2440.h> //这个是2440的寄存器头文件,asm/srch只是个链接
//实际根据自己的情况查找,一般是../../linux2.*.*/include/asm/arch-s3c2440里 编译器
//自己会查询链接,以前不知道,找了半天
// GPIO_LED DEVICE MAJOR
#define GPIO_LED_MAJOR 97 //定义主设备号
//define LED STATUS 我的板子 LED在GPB0 与GPB1 处 大家根据自己情况改
#define LED_ON 0 //定义LED灯的状态 开
#define LED_OFF 1 //
// ------------------- READ ------------------------ 这个前面要加static 否则警告
static ssize_t GPIO_LED_read (struct file * file ,char * buf, size_t count, loff_t * f_ops)
{
return count;
}
// ------------------- WRITE -----------------------
static ssize_t GPIO_LED_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops)
{
return count;
}
// ------------------- IOCTL -----------------------
static ssize_t GPIO_LED_ioctl (struct inode * inode ,struct file * file, unsigned int cmd, long data) //这个函数实现了led灯亮灭的接口
{
switch (cmd)
{
case LED_ON : { GPBDAT =0x01; break;} //根据自己情况修改 一个亮 一个灭
case LED_OFF: { GPBDAT =0x02; break;} //交替闪烁
default :
&n
相关文档:
现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。
1.修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
......
RedHat(CentOS5.3)平台下LAMP搭建Linux+Apache+Mysql+PHP
一、安装环境:
系统平台:CentOS5.3,内核2.6.18-128.el5,文字界面(未安装图形界面)
二、软件需求及下地地址:
httpd-2.2.13.tar.gz
MySQL-client-community-5.1.40-0.rhel5.i386.rpm MySQL-server-community-5.1.40-0.rhel5.i386.rpm   ......
九、模式变量
在GNU的make中,还支持模式变量(Pattern-specific Variable),通过上面的目标变量中,我们知道,变量可以定义在某个目标上。模式变量的好处就是,我们可以给定一种“模式”,可以把变量定义在符合这种模式的所有目标上。
我们知道,make的“模式”一般是至少含有一个“%&rdquo ......