亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android為Tiny4412設備驅動在proc目錄下添加一個可讀版本信息的文件

2019-10-21 21:32:57
字體:
來源:轉載
供稿:網友

上節,我們明白了proc文件系統的作用,接下來我們在已經寫好的led驅動的基礎上,在proc目錄下創建一個文件夾,然后加入led驅動的版本信息讀取。

我們在init函數的最后加入:

//定義proc文件系統節點struct proc_dir_entry *dev_dir , *dev_version;//創建一個目錄dev_dir = proc_mkdir("Tiny4412_leds", NULL); //創建一個文件dev_version = create_proc_entry("version", S_IRUGO, dev_dir); //調用讀版本的函數dev_version->read_proc = proc_read_version ;

然后編寫獲取版本信息的讀函數:

#define VERSION_LEN 20char Tiny4412_LED_version[VERSION_LEN] = "20170908/n";int proc_read_version(char *page, char **start, off_t off, int count, int *eof,         void *data){ int len ;  len = sprintf(page,Tiny4412_LED_version); //將字符串寫入page,相當于copy到用戶層 return len ;}

大功告成!!

接下來編譯完成,將kenel刷入開發板后卡機,用adb shell進入可以看到如下:

Android,Tiny4412,設備驅動,proc

修改的源碼:

#include <linux/kernel.h>#include <linux/module.h>#include <linux/miscdevice.h>#include <linux/fs.h>#include <linux/types.h>#include <linux/moduleparam.h>#include <linux/slab.h>#include <linux/ioctl.h>#include <linux/cdev.h>#include <linux/delay.h>#include <linux/gpio.h>#include <mach/gpio.h>#include <plat/gpio-cfg.h>//添加必要的頭文件#include <linux/proc_fs.h>#include <linux/uaccess.h>#define DEVICE_NAME "leds"static int led_gpios[] = { EXYNOS4212_GPM4(0), EXYNOS4212_GPM4(1), EXYNOS4212_GPM4(2), EXYNOS4212_GPM4(3),};#define LED_NUM ARRAY_SIZE(led_gpios)static long tiny4412_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg){ switch(cmd) { case 0: case 1:  if (arg > LED_NUM) {  return -EINVAL;  }  gpio_set_value(led_gpios[arg], !cmd);  //printk(DEVICE_NAME": %d %d/n", arg, cmd);  break; default:  return -EINVAL; } return 0;}static struct file_operations tiny4412_led_dev_fops = { .owner  = THIS_MODULE, .unlocked_ioctl = tiny4412_leds_ioctl,};static struct miscdevice tiny4412_led_dev = { .minor  = MISC_DYNAMIC_MINOR, .name  = DEVICE_NAME, .fops  = &tiny4412_led_dev_fops,};#define VERSION_LEN 20char Tiny4412_LED_version[VERSION_LEN] = "20170908/n";int proc_read_version(char *page, char **start, off_t off, int count, int *eof, void *data){ int len ;  len = sprintf(page,Tiny4412_LED_version); return len ;}static int __init tiny4412_led_dev_init(void) { int ret; int i; for (i = 0; i < LED_NUM; i++) { ret = gpio_request(led_gpios[i], "LED"); if (ret) {  printk("%s: request GPIO %d for LED failed, ret = %d/n", DEVICE_NAME,   led_gpios[i], ret);  return ret; } s3c_gpio_cfgpin(led_gpios[i], S3C_GPIO_OUTPUT); gpio_set_value(led_gpios[i], 1); } //雜類設備 ret = misc_register(&tiny4412_led_dev); //定義proc文件系統節點 struct proc_dir_entry *dev_dir , *dev_version; //創建一個目錄 dev_dir = proc_mkdir("Tiny4412_leds", NULL);  //創建一個文件 dev_version = create_proc_entry("version", S_IRUGO, dev_dir);  //調用讀版本的函數 dev_version->read_proc = proc_read_version ; printk(DEVICE_NAME"/tinitialized/n"); return ret;}static void __exit tiny4412_led_dev_exit(void) { int i; for (i = 0; i < LED_NUM; i++) { gpio_free(led_gpios[i]); } misc_deregister(&tiny4412_led_dev);}module_init(tiny4412_led_dev_init);module_exit(tiny4412_led_dev_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("FriendlyARM Inc & Y.X.YANG modify");

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模吧一区二区| 91国偷自产一区二区三区的观看方式| 亚洲人成亚洲人成在线观看| 久久久成人av| 欧美视频一二三| 国产精品久久久久久超碰| 俺去了亚洲欧美日韩| 91影院在线免费观看视频| 精品亚洲男同gayvideo网站| 日韩欧美成人精品| 国产精品久久久久久久久久小说| 日本精品久久久| 欧美最猛黑人xxxx黑人猛叫黄| 欧美乱妇40p| 91久久在线视频| 久久精品视频网站| 久久久免费精品视频| 欧美性xxxx极品hd满灌| 久久久久久97| 欧美国产精品人人做人人爱| 欧美日韩一区二区三区在线免费观看| 久久久久久久久久久网站| 精品美女永久免费视频| 国产精品爽爽爽| 在线观看精品自拍私拍| 欧美丝袜一区二区三区| 午夜精品在线视频| 97人洗澡人人免费公开视频碰碰碰| 国产不卡在线观看| 国产精品爽黄69天堂a| 91国产在线精品| 久久成人精品视频| 色婷婷综合久久久久中文字幕1| 欧美激情一级精品国产| 欧美激情国产日韩精品一区18| 国产精品69精品一区二区三区| 亚洲精品成人久久久| 国产一区二区三区三区在线观看| 欧美日韩在线视频首页| 蜜臀久久99精品久久久无需会员| 国产一区二区三区在线观看视频| 欧美国产第一页| 国产精品直播网红| 国产欧美欧洲在线观看| 久久久噜噜噜久久| 一区二区三区回区在观看免费视频| 91视频免费在线| 国产精品日韩在线观看| 狠狠色狠狠色综合日日小说| 久久久国产精品x99av| 热99在线视频| 日韩一中文字幕| 亚洲国产欧美一区二区三区同亚洲| 高清视频欧美一级| 国产aⅴ夜夜欢一区二区三区| 国产又爽又黄的激情精品视频| 91精品久久久久久久久久久久久| 一区二区三区无码高清视频| 亚洲经典中文字幕| 国产91色在线| 欧美老女人性生活| 午夜精品美女自拍福到在线| 国产成人精品免高潮费视频| 97香蕉久久夜色精品国产| 亚洲第一精品夜夜躁人人躁| 日韩在线精品视频| 在线亚洲欧美视频| 亚洲欧洲免费视频| 国内精品久久久久久久久| 亚洲大尺度美女在线| 国产精品成人观看视频国产奇米| 久久综合伊人77777| 欧美一级在线亚洲天堂| 久久久国产精品一区| 国产精品扒开腿做爽爽爽视频| 欧美在线亚洲一区| 国产精品普通话| 欧美日韩ab片| 91精品久久久久久久久中文字幕| 亚洲深夜福利在线| 久久精品美女视频网站| 2019国产精品自在线拍国产不卡| 中文字幕av日韩| 在线观看精品国产视频| 日韩欧美黄色动漫| 久久亚洲精品国产亚洲老地址| 在线不卡国产精品| 欧美日本啪啪无遮挡网站| 国产精品国模在线| 国内偷自视频区视频综合| 欧美做受高潮电影o| 亚洲精品久久久久中文字幕二区| 欧美一区三区三区高中清蜜桃| 亚洲欧洲激情在线| 91av在线精品| 欧美日韩精品在线播放| 欧美成人三级视频网站| 亚洲xxx视频| 在线精品视频视频中文字幕| 久久精品99无色码中文字幕| 日韩有码在线视频| 欧美成人全部免费| 亚洲精品永久免费| 成人有码在线播放| 国产精品午夜一区二区欲梦| 国产视频观看一区| 亚洲资源在线看| 亚洲精美色品网站| 91在线精品视频| 欧美性受xxxx白人性爽| 国产日韩欧美一二三区| 国产视频综合在线| 一区二区三区 在线观看视| 亚洲精品美女在线观看| 国产香蕉精品视频一区二区三区| 亚洲精品成a人在线观看| 亚洲精品影视在线观看| 国产成人小视频在线观看| 欧美丝袜第一区| 亚洲在线一区二区| 日韩中文字幕视频在线观看| 成人激情春色网| 亚洲黄色在线观看| 欧美午夜片在线免费观看| 亚洲专区中文字幕| 亚洲黄色有码视频| 色一情一乱一区二区| 中国china体内裑精亚洲片| 久久久999精品免费| 国产精品27p| 97在线观看视频国产| 欧美激情免费看| 色综合五月天导航| 国产国语刺激对白av不卡| 69久久夜色精品国产69乱青草| 欧美成人三级视频网站| 中文字幕日韩欧美在线| 九九热精品视频| 国产精品日韩一区| 亚洲美女免费精品视频在线观看| 亚洲精品自拍偷拍| 人人爽久久涩噜噜噜网站| 成人福利视频网| 国产精品久久久久久久久男| 成人久久久久爱| 欧美夜福利tv在线| 国产日韩欧美黄色| 国产91色在线|免| 久久久久成人网| 午夜免费在线观看精品视频| 国产欧美va欧美va香蕉在| 亚洲成人在线视频播放| 日本精品一区二区三区在线| 日韩电影中文字幕一区| 精品二区三区线观看| 亚洲欧美日韩中文在线制服| 欧美性受xxxx白人性爽| 成人写真福利网| 国产精品尤物福利片在线观看| 日本亚洲精品在线观看| 日本一区二区三区在线播放| 国产精品日韩欧美综合| 久久深夜福利免费观看| 久久亚洲电影天堂|