📄 akaeled.c
字号:
#include <linux/config.h>#include <linux/utsname.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/string.h>#include <linux/fcntl.h>#include <linux/malloc.h>#include <linux/timer.h>#include <linux/sched.h>#include <linux/tty.h>#include <linux/module.h>#include <linux/init.h>#include <asm/hardware.h>#include <asm/io.h>#include <asm/system.h>#include <linux/poll.h>#include <asm/arch/io.h>#include <asm/44b.h>#define rPCONA_LED (rPCONA=rPCONA&~0X300)#define rPCONB_LED (rPCONB=rPCONB&~0X010)#define LED_1_OFF (rPDATA=rPDATA|512)#define LED_1_ON (rPDATA=rPDATA&~512)#define LED_2_OFF (rPDATA=rPDATA|256)#define LED_2_ON (rPDATA=rPDATA&~256)#define LED_3_OFF (rPDATB=rPDATB|16)#define LED_3_ON (rPDATB=rPDATB&~16)void long_delay(void) { int i; for(i=0;i<0x7fff0;i++) {;} }static int led_open(struct inode *inode,struct file *file) { int i; rPCONA_LED; rPCONB_LED; printk("led open: the led open now\n"); for(i=0;i<3;i++) { printk("led open: all leds off\n"); LED_1_OFF; LED_2_OFF; LED_3_OFF; long_delay(); printk("led open: all leds on\n"); LED_1_ON; LED_2_ON; LED_3_ON; long_delay(); } return 0; }static int led_close(struct inode *inode,struct file *file){ printk("led close :now the led close\n"); LED_1_OFF; LED_1_ON; long_delay(); LED_2_OFF; LED_2_ON; long_delay(); LED_3_OFF; LED_3_ON; long_delay(); return 0;}static int led_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){// led_open(); switch(cmd) { case 1: { LED_1_ON; long_delay(); LED_2_OFF; long_delay(); LED_3_OFF; printk("led1 on\n"); long_delay(); long_delay(); long_delay(); long_delay(); break; }; case 2: { LED_1_OFF; LED_2_ON; LED_3_OFF; printk("led2 on\n"); long_delay(); long_delay(); long_delay(); break; }; case 3: { LED_1_OFF; LED_2_OFF; LED_3_ON; printk("led3 on\n"); long_delay(); long_delay(); long_delay(); break; }; } return 0;} static int led_read(void){ return 0; } struct file_operations akaeled_fops = { open: led_open, ioctl: led_ioctl, release: led_close, read: led_read, };int akaeled_init(void) { int result; printk("the led register now\n"); result=register_chrdev(254,"akaeled",&akaeled_fops); if(result<0) { printk("register failure!\n" ); } else { printk("register OK!\n"); } return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -