linux設備分層優點,Linux設備驅動的分層設計思想

代碼清單8第2行獲取platform_data,而platform_data實際上是定義GPIO按鍵硬件信息的數組,第31行的for循環工具這些信息申請GPIO并初始化中斷,對于LDD6140電路板而言,這些信息如代碼清單10。

代碼清單10 LDD6410開發板GPIO按鍵的platform_data

1 static struct gpio_keys_button ldd6410_buttons[] = {

2 {

3 .gpio = S3C64XX_GPN(0),

4 .code = KEY_DOWN,

5 .desc = "Down",

6 .active_low = 1,

7 },

8 {

9 .gpio = S3C64XX_GPN(1),

10 .code = KEY_ENTER,

11 .desc = "Enter",

12 .active_low = 1,

13 .wakeup = 1,

14 },

15 {

16 .gpio = S3C64XX_GPN(2),

17 .code = KEY_HOME,

18 .desc = "Home",

19 .active_low = 1,

20 },

21 {

22 .gpio = S3C64XX_GPN(3),

23 .code = KEY_POWER,

24 .desc = "Power",

25 .active_low = 1,

26 .wakeup = 1,

27 },

28 {

29 .gpio = S3C64XX_GPN(4),

30 .code = KEY_TAB,

31 .desc = "Tab",

32 .active_low = 1,

33 },

34 {

35 .gpio = S3C64XX_GPN(5),

36 .code = KEY_MENU,

37 .desc = "Menu",

38 .active_low = 1,

39 },

40 };

41

42 static struct gpio_keys_platform_data ldd6410_button_data = {

43 .buttons = ldd6410_buttons,

44 .nbuttons = ARRAY_SIZE(ldd6410_buttons),

45 };

46

47 static struct platform_device ldd6410_device_button = {

48 .name = "gpio-keys",

49 .id = -1,

50 .dev = {

51 .platform_data = &ldd6410_button_data,

52 }

53 };

1.3 RTC設備驅動

RTC(實時鐘)借助電池供電,在系統掉電的情況下依然可以行走。它通常還具有產生周期中斷以及產生鬧鐘(alarm)中斷的能力,是一種典型的字符設備。作為一種字符設備驅動,RTC需要有file_operations中接口函數的實現,如open()、release()、read()、 poll()、ioctl()等,而典型的IOCTL包括RTC_SET_TIME、RTC_ALM_READ、RTC_ALM_SET、 RTC_IRQP_SET、RTC_IRQP_READ等,這些對于所有的RTC是通用的,只有底層的具體實現是設備相關的。

因此,drivers/rtc/rtc-dev.c實現了RTC驅動通用的字符設備驅動層,它實現了file_opearations的成員函數以及一些關于RTC的通用的控制代碼,并向底層導出rtc_device_register()、rtc_device_unregister()用于注冊和注銷RTC;導出rtc_class_ops結構體用于描述底層的RTC硬件操作。這一RTC通用層實現的結果是,底層的RTC驅動不再需要關心RTC 作為字符設備驅動的具體實現,也無需關心一些通用的RTC控制邏輯,圖3表明了這種關系。

c64506d920e52c81ceab5b0c97426541.png

圖3 Linux RTC設備驅動的分層

drivers/rtc/rtc-s3c.c實現了S3C6410的RTC驅動,其注冊RTC以及綁定的rtc_class_ops的代碼如代碼清單11。

代碼清單11 S3C6410 RTC驅動的rtc_class_ops實例與RTC注冊

1 static const struct rtc_class_ops s3c_rtcops = {

2 .open = s3c_rtc_open,

3 .release = s3c_rtc_release,

4 .ioctl = s3c_rtc_ioctl,

5 .read_time = s3c_rtc_gettime,

6 .set_time = s3c_rtc_settime,

7 .read_alarm = s3c_rtc_getalarm,

8 .set_alarm = s3c_rtc_setalarm,

9 .irq_set_freq = s3c_rtc_setfreq,

10 .irq_set_state = s3c_rtc_setpie,

11 .proc = s3c_rtc_proc,

12 };

13

14 static int s3c_rtc_probe(struct platform_device *pdev)

15 {

16 ...

17 rtc = rtc_device_register("s3c", &pdev->dev, &s3c_rtcops,

18 THIS_MODULE);

19 ...

20 }0b1331709591d260c1c78e86d0c51c18.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529336.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529336.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529336.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 關閉桌面環境,Ubuntu 14.04上的Cinnamon桌面環境PPA被關閉

今天Cinnamon桌面環境的開發者宣布關閉Cinnamon桌面環境的PPA,這意味著以后在Ubuntu上安裝Cinnamon桌面環境將變得很難。關于為什么要關閉PPA,Cinnamon PPA的維護者Gwendal Le Bihan做出了以下解釋:“穩定的Cinnamon PPA將不再提供&#xff0…

linux sd卡讀寫出錯,linux系統SD卡讀寫問題

請教有過linux系統SD卡讀寫經驗的前輩。我的項目是對FPGA上的SD卡部分做測試,在測試過程中發現在對SD卡所有領域進行讀寫操作時1、bus width 選擇1-bit的速度4-bit是差不多的,這與我預想的不同,想知道問題出在哪里?(理論上4bit 速度應該是1-…

genymotion linux 32,Ubuntu Linux 32bit - 不是Genymotion虛擬設備

因為4天我沒有找到解決方案我的genymotion有問題 我正在使用Ubuntu 12.04 32位(architecure:i686)并安裝android studio并將genymotion的插件放入其中succefully ......現在我的問題,當點擊genymotion設備管理器,列表是空的,當我試…

grub linux rootfs,rootfs文件系統(筆記)(草稿)

文件系統簡介文件系統就是個軟件,幫用戶來管理一些二進制的信息,管理外存上存儲的這些二進制各種文件在內存中都是以二進制的形式來存在的,如果沒有文件系統,用戶就需要自己去決定這些二進制的東西是什么,需要自己去和…

linux 如何查看屬性,linux?下查看系統屬性

linux 下查看系統屬性(2009-06-28 19:01:34)標簽:linux雜談分類:OSlinux下查看系統屬性1、查看cpu信息查看所有cpu信息:cat /proc/cpuinfo查看cpu類型: grep "model name" /proc/cpuinfo2、查看內存信息:查看…

幼兒學數數的c語言程序,【資源學習】c語言程序代碼,登錄幼兒園200個小朋友的數據...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓編寫程序,登錄幼兒園200個小朋友的數據:姓名、性別、年齡、身高、體重、出生日期,分別按年齡排序后輸出。要求:(1)登錄數據用函數input()(2)按身高排序用函數sort()(3)輸出排序結果用…

c語言傳入參數不正確,請高手看看一下程序怎么回事啊?老是提示傳參數錯誤...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#includevoid main(){ void average(float, int);void search(float,int);static float score[][4]{{65,67,70,60},{80,87,90,81},{99,90,100,98}};average(score,12);search(score,2);}void average(float *p,int n){float *p_end…

vs用c語言寫貪吃蛇,熬書幾個月,終于編出簡易的貪吃蛇了,VS2013

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include#include#include#include#define X 30#define Y 15void guozi(int *x, int *y);int main(void){char map[X][Y];int x;int y;//橫縱坐標int i;int j;//標記蛇頭int p, q;//標記蛇尾int t, d;//尋找蛇尾int n 4;//蛇的長度…

中國電信學院c語言題庫,電腦題庫試題精編版.doc

1【單選題】以下關于圖靈機的說法,正確的是( ?)。A、圖靈機是一種計算機理論模型B、圖靈機是用于圖靈測試的計算機C、圖靈機是第一臺機械式計算機D、圖靈機是馮諾依曼體系結構計算機正確答案: A?2【單選題】關于中文信息編碼,以下正確的敘述…

統計c語言中英文字幕,C語言日記——遞歸

C語言日記——遞歸首先,允許我從《c primer plus》中摘一句話:C允許函數調用它自己,這種調用稱為遞歸。有一段時間一直搞不清楚遞歸的實質,直到看到如下代碼:#includeint up_and_down(int n);int main() {up_and_down(…

gnu linux中 使用,在Linux上使用GNU sed的方法

grep 命令grep 在文件(或命令輸出)中搜索指定正則表達式,并且在標準輸出中輸出匹配的行。樣例顯示文件 /etc/passwd 中用戶 gacanepa 的信息,忽略大小寫。#grep-i gacanepa /etc/passwd顯示 /etc 文件夾下所有 rc 開頭并跟隨任意數字的內容。#ls-l /etc …

android開機自動開啟zram,低內存配置 ?|? Android 開源項目 ?|? Android Open Source Project...

Android 支持內存為 512 MB 的設備。本文檔旨在幫助 OEM 優化和配置 Android 內核 4.4,使其能夠在低內存設備上運行。在下文所述的優化措施中,有幾項非常通用,甚至也可應用于以前的版本。Android 內核 4.4 平臺優化改善了內存管理采用了經驗證…

android 自動 鍵盤,關于Android中的軟鍵盤

InputMethodService為我們的輸入法創建了一個Dialog,并且將該Dialog的Window的某些參數(如Gravity)進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統對活動主窗口進行調整,從而為輸入法騰出相應的空間&#xff0c…

Android渠道包自動發布市場,Android Gradle實現打包指定渠道后自動上傳到fir

fir分三個主要步驟1.獲取fir上傳憑證2.上傳APKAPP logo圖標3.獲取最新的下載地址供別人下載注:python使用的是requests網絡請求庫1.獲取fir上傳憑證image.png代碼如下:# 第一步:獲取fir上傳憑證print("get fir upload certificate"…

android studio vfs,Android Studio:嘗試呈現XML布局的InvalidVirtualFileAccessException

我正在嘗試在我的應用中預覽xml布局(任何xml布局).我正在使用Android Studio 1.5 Preview 2.我一遍又一遍地收到此錯誤:InvalidVirtualFileAccessException:訪問無效的虛擬文件:file:// D:/Scott/Android/Studio/MyApp/app/build/intermediates/classes/debug/com/scott/myapp/…

android 基類fragment,Android DialogFragment 基類的定制

鴻洋博客介紹:DialogFragment的基本使用好處:1:使用DialogFragment來管理對話框,當旋轉屏幕和按下后退鍵時可以更好的管理其聲明周期,它和Fragment有著基本一致的生命周期2.DialogFragment也允許開發者把Dialog作為內嵌…

升級鴻蒙系統無法選擇應用,申請鴻蒙系統有一個應用選擇怎么選擇呢

[分享交流]申請鴻蒙系統有一個應用選擇怎么選擇呢34364電梯直達huafen774590890新學乍練發表于 2020-12-18 22:19:17來自:HUAWEI Mate 30 Pro 5G最新回復 2020-12-19 09:31:55要怎么選擇大家知道嗎?想著你的狼自成一派發表于 2020-12-18 22:22:29來自&am…

html5 網頁游戲論文,JavaScript編寫的網頁小游戲,很給力

以下為游戲代碼:var timerID null;var INT 40;var loadFLG 0;var gameFLG 0;var missFLG 0;var tim 0;var blcol new Array(5); // block colorvar blsta new Array(40); // block statusvar blNO new Array(40); // block Novar blclr 0; // clear block…

c 插件讀取有屬性的html6,廖雪峰的JS教程6-jQuery

jQueryjQuery是JavaScript世界中使用最廣泛的一個庫。jQuery這么流行,肯定是因為它解決了一些很重要的問題。實際上,jQuery能幫我們干這些事情:消除瀏覽器差異:你不需要自己寫冗長的代碼來針對不同的瀏覽器來綁定事件,…

html5中的css特性,淺談HTML5 CSS3的新交互特性

本文標題的這副圖片,是用phosotshop制作的。但是,在搜索引擎中你卻無法搜索到它,搜索引擎還沒有強大到能夠識別圖片里面的文字。并且由于圖片的體積不算太小,可能網速慢的網友在瀏覽的時候不得不耐心的等待圖片的刷新。那么&#…