mini2440 led驅動及 應用程式注釋

2021-06-04 01:38:36 字數 2580 閱讀 9491

驅動程式部分:

在核心/driver/char/目錄中建立檔案s3c2440-leds.c

原始碼如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define device_name "leds" //裝置名(/dev/leds)

#define led_major       231     /* 主裝置號 */

/* 應用程式執行ioctl(fd, cmd, arg)時的第2個引數 */

#define ioctl_led_on    0

#define ioctl_led_off   1

//led 對應的 gpio 埠列表

static unsigned long led_table = ;

//led 對應埠將要輸出的狀態列表

static unsigned int led_cfg_table = ;

/*ioctl 函式的實現

*  在應用/使用者層將通過ioctl 函式向核心傳遞引數,以控制led 的輸出狀態

*/ static int sbc2440_leds_ioctl(

struct inode *inode,

struct file *file,

unsigned int cmd,

unsigned long arg)

//根據應用/使用者層傳遞來的引數(取反),通過 s3c2410_gpio_setpin  函式設定 led  對應的埠寄存 器,

s3c2410_gpio_setpin(led_table[arg], !cmd);

return 0;

default:

return -einval;

} }

/* *  裝置函式操作集,在此只有ioctl 函式,通常還有read, write, open, close 等,因為本led 驅動在下面已經

*  註冊為misc 裝置,因此也可以不用open/close

*/ static struct file_operations dev_fops = ;

/* *  把led 驅動註冊為misc 裝置

*/ static struct miscdevice misc = ;

/* *  裝置初始化

*/ static int __init dev_init(void)

ret = misc_register(&misc); //註冊裝置

printk (device_name"\tinitialized\n"); //列印初始化資訊

return ret;

} static void __exit dev_exit(void)

接著在該目錄下的kconfig檔案中新增如下**

config leds_s3c2440

tristate "led support for mini2440/qq2440 gpio leds"

depends on arch_s3c2410

help

this option enables support for leds connected to gpio lines

修改makefile

新增obj-$(config_leds_s3c2440) += s3c2440_leds.o

這樣在核心部分的驅動就是做完了。

接著寫應用程式部分

建立led.c

新增如下**

#include

#include

#include

#include

int main(int argc, char **argv)

fd = open("/dev/leds", 0);開啟裝置

if (fd < 0)

if (fd < 0)

ioctl(fd, on, led_no);

close(fd);

return 0;

}建立makefile

新增如下**:

cross=arm-linux-

all: led

led: led.c

$(cross)gcc -o led led.c

clean:

@rm -vf led *.o *~

make 編譯通過後

生成led可執行檔案

命令格式為:

./led   (0.1.2.或3)(0,1代表燈的亮滅)

mini2440 led測試程式

本程式用到的硬體資源 nled 1 nled 2 nled 3 nled 4 gpb5 gpb6 gpb7 gpb8 k2 l5 k7 k5 儲存器位址分配如下 sdram 0x3000,0000 0x3400,0000 特殊功能暫存器 0x4800,0000 0x6000,0000 ads1.2編...

mini2440 LED燈裸機硬體控制程式

查詢mini2440的原理圖,找到led部分的原理圖 然後查詢nled 1到nled 4分別連線的s3c2440的引腳 由圖可知 nled 1 gpb5 nled 2 gpb6 nled 3 gpb7 nled 4 gpb8 在s3c2440的引腳劃分中,這四個引腳都屬於port b,因此可以通過配...

關於mini 2440 的spi驅動移植及分析

linux2.6.32下spi驅動的移植 mini2440 下面需要修改部分核心 具體操作如下 1.修改arch arm mach s3c2440 mach mini2440.c檔案 在include標頭檔案 行之後增加如下 spi add by shiguang include include s...