驅動程式部分:
在核心/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...