这是我进入嵌入式职业进公司做的第一个驱动,
渠道:Ti
GPIO是嵌入式体系最简略、最常用的资源了,比方点亮LED,操控蜂鸣器,输出凹凸电平,检测按键,等等。
因为硬件资源的原因,DM6441并不是GPIO管脚便是朴实的GPIO脚,GPIO管脚和其他一些标准接口复用相同的引脚,
比方SPI和GPIO复用,I2C和GPIO复用等,到底是运用GPIO仍是其他接口,在初始化的时分,都需要对PINMUX0和PINMUX1
两个寄存器进行设置(见DM6441的芯片p72),而软件设置则在Montavista linux-2.6.18_pro500/arch/arm/mach-davinci
目录下mux_cfg.c和对应的include/asm/arch-davinci/mux.h里。由数据手册知道gpio5,6,7默许是gpio功用。
对mux_cfg.c的剖析
对MUX_CFG()的参数解说
#include
#include
#include
#include
#ifdef CONFIG_DAVINCI_MUX
struct pin_config __initdata_or_module davinci_dm644x_pins[] = {
MUX_CFG(“HDIREN”,
MUX_CFG(“ATAEN”,
MUX_CFG(“MSTK”,
MUX_CFG(“I2C”,
MUX_CFG(“MCBSP”,
MUX_CFG(“PWM0”,
MUX_CFG(“PWM1”,
MUX_CFG(“PWM2”,
MUX_CFG(“VLINQEN”,
MUX_CFG(“VLINQWD”,
MUX_CFG(“EMACEN”,
MUX_CFG(“GPIO3V”,
MUX_CFG(“GPIO0”,
MUX_CFG(“GPIO3”,
MUX_CFG(“GPIO43_44”,
MUX_CFG(“GPIO46_47”,
MUX_CFG(“RGB666”,
MUX_CFG(“LOEEN”,
MUX_CFG(“LFLDEN”,
};
内核里供给的接口在linux-2.6.18_pro500/arch/arm/mach-davinci目录下的gpio.c,这个是寄存器级的驱动。对这个文件的相关操作
见http://blog.csdn.net/langxing0508/archive/2008/12/25/3604043.aspx
说得不错,这儿表明感谢。
下面是我的gpio驱动程序
#include
#include
#include
#include
#include
#include
#include
//#include
#define DEVICE_NAME “dm644x_gpios”
#define GPIO_MAJOR 199
#define ZX_GPIO5
#define ZX_GPIO6
#define ZX_GPIO7
static int davinci_dm644x_gpio_open(struct inode *inode, struct file *file)
{
//
//
//
//
}
static int gpio_release(struct inode *inode,struct file *filp)
{
}