dm6441的gpio驅(qū)動(dòng)
平臺(tái):Ti
GPIO是嵌入式系統(tǒng)最簡(jiǎn)單、最常用的資源了,比如點(diǎn)亮LED,控制蜂鳴器,輸出高低電平,檢測(cè)按鍵,等等。
由于硬件資源的原因,DM6441并不是GPIO管腳就是純粹的GPIO腳,GPIO管腳和其他一些標(biāo)準(zhǔn)接口復(fù)用相同的引腳,
比如SPI和GPIO復(fù)用,I2C和GPIO復(fù)用等,到底是使用GPIO還是其他接口,在初始化的時(shí)候,都需要對(duì)PINMUX0和PINMUX1
兩個(gè)寄存器進(jìn)行設(shè)置(見(jiàn)DM6441的芯片p72),而軟件設(shè)置則在Montavista linux-2.6.18_pro500/arch/arm/mach-davinci
目錄下mux_cfg.c和對(duì)應(yīng)的include/asm/arch-davinci/mux.h里。由數(shù)據(jù)手冊(cè)知道gpio5,6,7默認(rèn)是gpio功能。
對(duì)mux_cfg.c的分析
對(duì)MUX_CFG()的參數(shù)解釋
#include
#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",
};
內(nèi)核里提供的接口在linux-2.6.18_pro500/arch/arm/mach-davinci目錄下的gpio.c,這個(gè)是寄存器級(jí)的驅(qū)動(dòng)。對(duì)這個(gè)文件的相關(guān)操作
見(jiàn)http://blog.csdn.net/langxing0508/archive/2008/12/25/3604043.aspx
說(shuō)得不錯(cuò),這里表示感謝。
下面是我的gpio驅(qū)動(dòng)程序
#include
#include
#include
#include
#include
#include
#include
#include
#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)
{
}
評(píng)論