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源代码目录,会看到若干子目录和文件。现代操作系统一般由进程管理,内存管理,文件系统,驱动程序和网络协议栈组成。
arch : 包含了所有和体系结构相关的核心代码。它下面的每个子目录代表一种linux支持的体系结构。如arm目录就是与ARM体系结构兼容的CPU的子目录;/arch/i386则是intel CPU及其兼容 ......
最近由于需要,把几年前(有点夸张)的EeePc 1000拿出来,想在它自带的Linux系统下进行编程。谁知道居然没有GCC编译器,所以源码安装肯定是不行的啦。
后来在终端(ctrl+alt+t)里输入:sudo apt-get install gcc
发现支持apt-get安装软件,只不过没找到 ......
一.填空题:
1. 在Linux
系统
中,以
文件
方式访问设备 。
2. Linux内核引导时,从文件/etc/fstab
中读取要加载的文件系统
。
3. Linux文件系统中每个文件用i节点
来标识。
4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和
数据
存储块
。
5. 链接分为:硬链接 和 符号链接
......
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   ......