先是内核驱动程序:
#include <linux/module.h>//具体的头文件位置为/opt/FriendlyARM/mini2440/linux-2.6.29/include/linux/*.h
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/poll.h>
#include <linux/irq.h>
#include <asm/irq.h>
#include <linux/interrupt.h>
#include <asm/uaccess.h>
#include <mach/regs-gpio.h>//具体头文件位置/opt/FriendlyARM/mini2440/linux-2.6.29/arch/arm/mach-s3c2410/include/mach/*.h
#include <mach/hardware.h>
#include <linux/platform_device.h>
#include <linux/cdev.h>
#include <linux/miscdevice.h>
#include <linux/ioctl.h>
#define DEVICE_NAME "buttons"
struct button_irq_desc {
int irq;
int pin;
int pin_setting;
int number;
char *name;
};
static struct button_irq_desc button_irqs [] = {
{IRQ_EINT8 , S3C2410_GPG0 , S3C2410_GPG0_EINT8 , 0, "KEY0"},
{IRQ_EINT11, S3C2410_GPG3 , S3C2410_GPG3_EINT11 , 1, "KEY1"},
{IRQ_EINT13, S3C2410_GPG5 , S3C2410_GPG5_EINT13 , 2, "KEY2"},
{IRQ_EINT14, S3C2410_GPG6 , S3C2410_GPG6_EINT14 , 3, "KEY3"},
{IRQ_EINT15, S3C2410_GPG7 , S3C2410_GPG7_EINT15 , 4, "KEY4"},
{IRQ_EINT19, S3C2410_GPG11, S3C2410_GPG11_EINT19, 5, "KEY5"},
};
/* 上面初始化成员里的S3C2410_GPG0_EINT0在/opt/FriendlyARM/mini2440/linux-2.6.29/arch /arm/mach-s3c2410/include/mach/regs-gpio.h中定义为
#define S3C2410_GPF0_EINT0 (0x02 << 0),即为我们前面说的“10”模式,其他的管脚类似。这个初始化函数的作用就是将如S3C2410_GPF0_EINT0的模式写入地址为如 S3C2410_GPF0的寄存器里,并将这个管脚设置成中断模式,以及添加一些其他信息。*/
static volatile char key_values [] = {'0', '0', '0', '0', '0', '0'};
//声明LED的管脚
static unsigned long led_table [] ={ S3C2410_GPB5, S3C2410_GPB6, S3C2410_GPB7, S3C2410_GPB8,};
// 声明LED管脚的配置信息,此处的 S3C2410_GPB8_OUTP与上面的S3C2410_GPF0_EINT0类似。
static unsigned int led_cfg_table [] = { S3C2410_GPB5_OUTP, S3C
在现行的linux发布版本中,软件包管理工具使用最多的是rpm和dpkg,但是这两者都不能解决软件之间的依赖关系,所以又有了yum和apt,yum其实是对rpm的封装,而apt是对dkpg的封装,两者都在封装的同时,很好的解决了软件依赖问题,使用起来非常方便。下面是一些软件管理常用的命令:
更新软件列表:
......