下圖是lcd的引腳截圖,gpg4是復用引腳,可以傳送電源使能訊號。gpio的程式很簡單,這裡不再贅述。
驅動程式:
#include #include #include #include #include #include #include #include #include int mygpio_major = 0; int mygpio_minor = 0; #define mygpio_name "lwp-gpio" dev_t dev_num; struct cdev *gpio_cdev; struct class *gpio_class; int i; static unsigned long led_table=; static unsigned long led_cfg_table=; int gpio_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) } break; case -2: //關閉流水燈 for(i = 0; i < 4; i++) break; case 3: //開啟蜂鳴器 s3c2410_gpio_cfgpin(s3c2410_gpb0, s3c2410_gpb0_outp); s3c2410_gpio_setpin(s3c2410_gpb0, 1); break; case -3: //關閉蜂鳴器 s3c2410_gpio_setpin(s3c2410_gpb0, 0); break; default: break; } return 0; } int gpio_open(struct inode *inode, struct file *file) int gpio_close(struct inode *inode, struct file *file) struct file_operations gpio_ops = ; static int __init my_gpio_init(void) memset(gpio_cdev,0,sizeof(struct cdev)); cdev_init(gpio_cdev, &gpio_ops); //初始化字父裝置 cdev_add(gpio_cdev, dev_num, 1); //字元裝置註冊到系統 gpio_class = class_create(this_module,mygpio_name); //在/sys下建立乙個類 if(is_err(gpio_class)) device_create(gpio_class,null,dev_num,null,mygpio_name); //建立裝置節點 printk("gpio_cdev is registered success\n"); fail_malloc: unregister_chrdev_region(dev_num, 1); return 0; } static void __exit my_gpio_exit(void) module_init(my_gpio_init); module_exit(my_gpio_exit); module_license("gpl"); module_author("liwanpeng");
測試程式:
#include #include #include #include int main() while(1) close(fd); return 0; }
Linux驅動修煉之道
一些學習linux驅動的筆記整理在這裡與大家分享,如果那裡有錯誤也請高手指出。若干年後能進入intel開源中心或ibm搞linux kernel是我目前的目標。君子藏器於身,待時而動。文章 不斷更新中。linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與...
Linux驅動修煉之道
linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與gpio控制 linux核心訪問外設i o資源的方式 linux裝置管理檔案系統,mdev,熱插拔 linux驅動修煉之道 混雜裝置 linux驅動修煉之道 clock框架 linux裝置模型 上 之底...
Linux驅動修煉之道
linux驅動修煉之道 流水燈 linux驅動修煉之道 按鍵 linux驅動修煉之道 lcd背光與gpio控制 linux核心訪問外設i o資源的方式 linux裝置管理檔案系統,mdev,熱插拔 linux驅動修煉之道 混雜裝置 linux驅動修煉之道 clock框架 linux裝置模型 上 之底...