《字元装置驱动程式》PPT课件

《字元装置驱动程式》PPT课件

ID:39474245

大小:203.19 KB

页数:53页

时间:2019-07-04

《字元装置驱动程式》PPT课件_第1页
《字元装置驱动程式》PPT课件_第2页
《字元装置驱动程式》PPT课件_第3页
《字元装置驱动程式》PPT课件_第4页
《字元装置驱动程式》PPT课件_第5页
资源描述:

《《字元装置驱动程式》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Chap3-字元裝置驅動程式OutlineIntroduction3.1scull的設計藍圖3.2主編號與次編號3.3檔案架構3.4file結構3.5open與release3.6Scull的記憶體用法規劃3.7相競狀況3.8read與write3.9tryscull3.10devfs檔案系統3.11回溯相容性3.12速查參考3--Introduction本章目標:寫出一個完整的字元裝置驅動程式(chardevicedriver)--簡稱chardriver終極目標:寫出一個模組化的chardriver範例:scull--(Simp

2、leCharacterUtilityforLoadingLocalities)Makefile,main.c,access.c,empty.c,pipe.c,scull.h,scull.init,scull_load,scull_unload,alpha.checkthemscull的作用是“讓使用者可把一塊記憶區當成字元裝置來使用”scull所驅動的目標裝置是一塊記憶區不需依賴任何“特殊”硬體只要有linux平台就可以編譯與執行未提供任何實用功能,只展示核心與chardriver之間軟體介面3.1--scull的設計藍圖定義驅動

3、程式要提供哪些功能給user-sapce的程式可循序存取(字元裝置)or可隨機存取(區塊裝置)模擬單一裝置(ex:一機多體or多個同類裝置)Scull所模擬出的每一種裝置,分別由不同類型的模組予以實現(相同的mechanism差別在於policy的不同)scull0~scull3四個由記憶區所構成的裝置,兼具“共通”“持續”scullpipe0~scullpipe3四個FIFO裝置(blocking與nonblocking)Scullsingle一次只容許一個被行程存取Scullpriv允許每個終端機都有權開啟一次,分屬不同

4、行程Sculluid允許開始多次,限同一使用者。(回傳錯誤碼)Scullwuid允許開始多次,限同一使用者。(推延,等待)Ch_5.2.5Ch_5.63.2--主編號與次編號主編號(majornumber)(0~255)代表裝置所配合的驅動程式當核心收到open()系統呼叫時,就是依據“主編號”來選擇驅動程式次編號(minornumber)(0~255)驅動程式以次編號來辨認同類裝置的個體核心本身用不到,只有驅動程式自己才知道次編號的意義當使用者要存取字元裝置時,必須透過檔案系統裡的“代表名稱”特殊檔(specialfile)

5、、裝置檔(devicefile)、檔案系統樹的節點(node),集中在/dev/目錄下。裝置類型:“c”代表chardriver的特殊檔“b”代表blockdriver的裝置檔3.2--主編號與次編號ls–al/dev/

6、lessbrw-rw----1rootdisk66,72Apr112002sdak8brw-rw----1rootdisk66,73Apr112002sdak9crw-r--r--1rootroot253,1Mar122:58scull1crw-r--r--1rootroot253,2Mar122:58scull

7、2crw-r--r--1rootroot253,3Mar122:58scull3brw-rw----1rootdisk8,0Apr112002sdacrw-rw----1rootuucp154,18Apr112002ttySR18裝置類型主編號次編號代表名稱3.2--主編號與次編號檔案系統製作裝置節點的命令是mknod,必須有特權身分(root)才能使用此工具。至少需要四個引數…<代表名稱><裝置類型><主編號><次編號>mknod/dev/antc2520像任何儲存在磁碟上的普通檔案一樣,mknod所產生的裝置節點會被保存下來,

8、除非刻意刪除它們。用一般的rm命令即可辦到…<不使用時未刪除及佔用空間>rm/dev/ant3.2.1--隨機取得主編號大部份常見的裝置幾乎都有固定的主編號,可在核心源碼樹的Documentation/devices.txt檔案內找到一份“裝置-主編號”對照表。<挑選可用主編號不易>less/usr/src/linux-2.4.20/Documentation/devices.txt“實驗性或自家使用”的主編號:60~63、120~127、240.254<真正公開給大眾使用的驅動程式不該使用這些範圍內的主編號>“隨機索取主編號”

9、呼叫register_chrdev()定義在less/usr/src/linux-2.4.20/include/linux/fs.hexternintregister_chrdev(unsignedint,c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。