freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于linux操作系統(tǒng)下rtc驅動開發(fā)(編輯修改稿)

2025-07-09 08:39 本頁面
 

【文章內容簡介】 m 分配給 rtc 作為主設備號。 ⑸ 動態(tài)分配主設備號: include linux/ //這是 Linux 內核中有關設備號的頭文件 int alloc_chrdev_resion(dev_t *, unsigned int , unsigned int , char *rtc); 這是內核自動分配一個設備好給 rtc。 ⑹ 釋放設備號 void unregister_chrdev(dev_t, unsigned int )。 在該設備號不再使用之后,釋放并刪除它,以節(jié)約內核資源。 實現(xiàn)字符驅動程序 實現(xiàn)字符設備驅動,最重要的就是字符設備結構體 cdev,以及驅動接口結構體file_operations。 ⑴ cdev 結構體 struct cdev { struct kobject xxx。 /* 內核內嵌的對象 */ struct module *xxx。 /*所屬模塊 */ struct file_operations *xxx。 /*文件操作結構體 */ struct list_head xxx。 /*不常用 */ dev_t xxx。 /*設備號 */ unsigned int xxx。 /*不常用 */ }。 ⑵ file_operations 結構體 字符驅動和內核的接口: 在內核代碼中, ./include/linux/ 下的代碼實現(xiàn),定義了字符驅動程序只要填充一個 file_operations 結構體并把它注冊到內核中,內核就有了通過它操作這個字符設備的能力。 基于 Linux 操作系統(tǒng)下 RTC 驅動開發(fā) 14 ⑶ file_operations 的主要成員: struct module *xxx: 指向模塊本身 open: 提供打開設備的函數(shù)接口; release:提供關閉設備的函數(shù)接口; read: 實現(xiàn)從設備上讀取數(shù)據(jù)的函數(shù)接口; write: 實現(xiàn)向設備上寫入數(shù)據(jù)的函數(shù)接口; ioctl: I/O 控制函數(shù); llseek: 定位讀寫指針位置并把他們輸出出來; ⑷ ioctl 函數(shù) 為設備驅動程序執(zhí)行用戶空間的“命令”提供了一個特有的接口用來設置或者讀取設備的具體信息。 ⑸ cmd 參數(shù)的定義 Linux 內核對 file_operations 的 ioctl()函數(shù)的 cmd 參數(shù)有特殊的定義:如圖 61。 圖 61 cmd參數(shù) 構造命令編號的宏: _IO() 給沒有參數(shù)的命令; _IOR() 給從驅動中讀數(shù)據(jù)的命令; _IOW() 給寫入數(shù)據(jù)的命令; _IOWR() 用于雙向傳輸。 ⑹ Ioctl 函數(shù)模板 static long rtc_dev_ioctl(struct file *file,unsigned int cmd, unsigned long arg) { ... switch (cmd) { case RTC_EPOCH_SET: ... Break。 蚌埠學院本科畢業(yè)設計(論文) 15 case RTC_SET_TIME: ... break。 case RTC_IRQP_SET: ... break。 case RTC_PIE_ON: ... break。 ... } 圖 62 字符設備驅動 基于 Linux 操作系統(tǒng)下 RTC 驅動開發(fā) 16 第 7 章 RTC 驅動實現(xiàn) 設計思路 Linux 設備 驅動 屬于內核的一部分, Linux 內核的驅動模塊可以用兩種不同的方式加載和編譯: ⑴ 通過內核裁剪, 隨同 Linux 的啟動直接加載編譯進 Linux 內核; ⑵ 把驅動程序 編譯成一個可加載和刪除的動態(tài)模塊,可以在需要時隨時使用insmod 命令加載, rmmod 命令刪除。這種方式更快,也節(jié)省了內核資源,控制了內核的大小,而模塊一旦被插入內核,就和其他被直接初始化到內核中的模塊一樣了。 這次的 RTC 驅動就采用動態(tài)模塊加載的方式,將程序主體分成 3 個部分。分別是注冊字符設備的 ,定義操作函數(shù)的 和提供接口說明的 。 RTC 程序實現(xiàn) RTC 基本數(shù)據(jù)結構 struct rtc_time 結構體 struct rtc_time { int sec。 int min。 int hour。 int mday。 int mon。 int year。 int wday。 int yday。 int isdst。 }。 這個結構體 代表了 硬件 時間與日期,從 RTC 芯片 讀 取 的時間和日期就 分開 保存在這個結構體中 注冊字符設備 模塊初 始化函數(shù): init_rtc 蚌埠學院本科畢業(yè)設計(論文) 17 static int __init init_rtc(void) { rtc_class = class_create(THIS_MODULE, rtc)。 int err。 err = alloc_chrdev_region(amp。rtc_devt, 0, RTC_DEV_MAX, rtc)。 rtc_dev_init()。 rtc_sysfs_init(rtc_class)。 if (err 0) printk(KERN_ERR %s: failed to allocate char dev region\n, __FILE__)。 return 0。 } Init_rtc 首先創(chuàng)建了一個類 rtc[12]。 類本身就是一個高度面向對象的產物 , 而用戶空間就可以在不知道如何實現(xiàn)的情況下直接得到結果, 驅動程序 也 不 用 直接處理 ,只要調用就行了。 定義操作函數(shù) 填充了 file_operations 結構 rtc_foperations,以及這些操作函數(shù)的具體實現(xiàn)。 rtc_foperations rtc 基本的文件操作 : static const struct file_operations rtc_foperations = { .owner = THIS_MODULE, .llseek = null, .read = read, .poll = poll, .unlocked_ioctl = ioctl, .open = openfile, .release = release, .fasync = fasync, }。 基于 Linux 操作系統(tǒng)下 RTC 驅動開發(fā) 18 函數(shù)聲明 里的所有函數(shù)的實現(xiàn)都對應于 中 rtc_ioctl 相應的命令, 其中 RTC_RD_TIME 與RTC_SET_TIME 兩個命令需要特別 注意 , 這是 RTC 最基本的功能函數(shù) —— 獲取時間和設置時間 。 運行步驟 通過編寫的 Makefile 及 armlinuxgcc 編譯生成 文件,如圖 71。 圖 71 編譯生成 .ko文件 編寫用戶層測試程序,并編譯成可執(zhí)行程序 qq。 實際運行及結果 將生成的 .ko 模塊和應用層測試程序 qq 下載的目標板,運行過程如圖 72: 用 insmod 裝載模板。 創(chuàng)建設備節(jié)點: mknod /dev/rtc c 250 0 修改執(zhí)行程序權限: chmod 777 qq 執(zhí)行測試程序。 蚌埠學院本科畢業(yè)設計(論文) 19 圖 72 運行過程 結果如圖 73: 圖 73 運行結果 基于 Linux 操作系統(tǒng)下 RTC 驅動開發(fā) 20 第 8 章 結論 本論文中對 Linux的發(fā)展跟 現(xiàn)狀進行了了解,還在對課題基于 Linux操作系統(tǒng)下 RTC驅動開發(fā)的基礎上對 Linux內核進行了大致的分析,并在課題最后進行了相對于 RTC驅動模塊的應用層測試軟件的編寫。 在本文中嵌入式系統(tǒng)選擇的是 Linux系統(tǒng),它具有占有內存小和運行速率高的優(yōu)點。并采用了模塊化的指導設計方法開發(fā)設備驅動,提高了程序的可讀性和可移植性。本文將字符設備分為了設備注冊、函數(shù)功能實現(xiàn)以及調用接口,并對程序進行了應用層的實例驗證。由于時間的原因,本文中 RTC字符驅動的程序設計還是有些簡單,在以后的學習工作中還需要進一步改善。 在以后 對驅動的學習中,希望能夠不斷完善 RTC芯片的功能實現(xiàn),并在在嵌入式Linux操作系統(tǒng)的建立中,以內核剪裁的方式將驅動程序移植到 Linux內核中去,努力做出更為精簡穩(wěn)定的內核系統(tǒng)。 蚌埠學院本科畢業(yè)設計(論文) 21 謝 辭 首先,向我的指導老師趙老師和劉老師表示感謝,感謝老師們一直以來對我的關懷和悉心指導,并在完成畢業(yè)設計的過程中讓我體會到了也學到了很多。在整個畢業(yè)設計指導活動中,老師的豐富經驗和對整個行業(yè)脈絡的把握,都是年輕的我難以望其項背的,并在整個課題的完成過程中起到了至關重要的作用。趙老師教學作風的和劉老師的治學風格都讓我留下 了很深的印象。 同時也要感謝培訓班的所有同學,在臨近畢業(yè)的培訓過程中,對我的關心和幫助。感謝他們不厭其煩地指導我解決了不少項目上的難題,她們積極向上的學習態(tài)度也是我奮斗下去的動力。感謝我的親人,在這四年里是他們給我無數(shù)的鼓勵、支持和幫助,正因為有他們我才能高興順利的完成大學學業(yè),并學到了很多專業(yè),以及很多人生道路上的寶貴財富。 最后感謝各位評閱老師在百忙之中抽空評閱我的論文。 基于 Linux 操作系統(tǒng)下 RTC 驅動開發(fā) 22 參 考 文 獻 [1] 徐俊仕 .基于嵌入式 Linux 的車載 GPS 導航系統(tǒng)設計與實現(xiàn) [D]西安:西北工業(yè)大學機械電 子工程學院, 2021. [2] 戴明華 ,李長云 ,曾志浩 ,崔海燕 . 嵌入式 Linux 驅動程序框架研究綜述 [J]. 長沙大學學報 ,2021,02:5253. [3] 方先康 .基于 powerpc 處理器 MPC8541E 的嵌入式 Linux 系統(tǒng)開發(fā) [D]北京:北京郵電大學計算機科學與技術學院, 2021. [4] 張利平 .基于 MPC8536 的雷達嵌入式數(shù)據(jù)處理平臺設計 [D].成都:中國西南電子技術研究所, 2021. [5] 羅澤勇 .一種基于 powerpc 的嵌入式信號處理平臺的設計 [D].西安:西安電子科技大學, 2021. [6] 董文軍 . Linux 驅動程序兼容性的相關問題 [J].單片機與嵌入式系統(tǒng)應用 ,2021,03:1618. [7] 董闖 .基于 MPC85xx 的 Uboot 啟動流程分析和移植 [D],北京:北京郵電大學, 2021. [8] 周立功 , 陳明計 , 陳渝. ARM 嵌入式 Linux 系統(tǒng)構建與驅動開發(fā)范例 [M].北京:北京航空航天大學出版社 ,2021. [9] 王淑貞 . UBoot 在 S3C2410 上的移植 [J].微計算機應用 , 2021, 29(4): 9597. [10] LTIB user manual Linux Target Image Builder,Freescale,2021. [11] 史勝輝 .基于嵌入式 Linux 的頻譜分析儀軟件系統(tǒng)設計 [D].成都:電子科技大學,2021. [12] MPC8536 datasheet MPC8536E PowerQUICC III tm Integrated Processor Product Brief ,2021. 蚌埠學院本科畢業(yè)設計(論文) 23 附錄 A RTC 驅動程序 include linux/ include linux/ include linux/ include linux/ include linux/ include linux/ include static DEFINE_IDR(rtc_idr)。 static DEFINE_MUTEX(idr_lock)。 struct class *rtc_class。 static void rtc_device_release(struct device *dev) { struct rtc_device *rtc = to_rtc_device(dev)。 mutex_lock(amp。idr_lock)。
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1