Linux Device Drivers ─
使用/proc檔案系統
/proc是核心模擬出來的軟體檔案系統,它是核心對於外界的資訊窗口。在/proc下的每一個檔案,各自連繫到核心裡的專屬函式,當user-process讀取/proc下的檔案時,對應的函式便會即時(real-time)產生檔案的“內容”。以/proc/modules為例,它總是會告訴你核心當已載入哪些模組。
Linux Device Drivers ─
使用/proc檔案系統
/proc是核心模擬出來的軟體檔案系統,它是核心對於外界的資訊窗口。在/proc下的每一個檔案,各自連繫到核心裡的專屬函式,當user-process讀取/proc下的檔案時,對應的函式便會即時(real-time)產生檔案的“內容”。以/proc/modules為例,它總是會告訴你核心當已載入哪些模組。
Linux Device Drivers ─
節制printk訊息產生速率
一般而言,正常運作狀態下不應該產生任何訊息,只有在發生了須要注意的異常狀態時,才可使用printk()。
但是printk()也是有被包含在無窮回圈裡的可能而導致嚴重的後果。對於需要偶爾輸出提醒訊息的情況,最好的解法是設立一個有調節作用的工具函式。
Linux Device Drivers ─
Debug 訊息開關
在研發驅動程式的初期,printk()是輔助測試、偵錯新程式碼的好工具。到了正式釋出驅動程式的階段,就該拿掉這些無謂的printk()敘述或至少讓它們失效。
以下的範例提供一個簡便的方式,讓你可以一口氣拿掉所有偵測用途的printk()。
ARM架構為(Advanced RISC machine),採用的是RISC(精簡指令集)運算架構,運用層面廣泛,從可攜式的手機、PDA,至硬碟控制器、汽車、甚至飛彈控制器等,均有採用該 架構的處理器,因智慧型手機、平板電腦掀起風潮,ARM架構成為PC業新寵兒。
相較於英特爾採用的x86架構,為CISC(複雜指令集)運算架構,再不斷加入指令集後,功能龐大;ARM架構讓處理器卻強調簡化,低功耗、小體積為其特色,也讓ARM架構在行動通訊產品市佔率居高不下,在平板電腦後,ARM架構也將進軍NB領域。
ARM 於1991年成立,該公司前身為Acorn Computer,出售IP(技術知識產權),授權廠家依照其IP,設計製造處理器,到1993年,TI、Cirrus Logic等知名業者採用該技術後,ARM在市場建立起知名度,受惠於手機應用,該公司ARM9核心已擁有超過200家的授權業者、ARM7也有150多 家的公司採用。
Linux Device Drivers ─
Register Character Device
要讓核心能提調你的驅動程式提供的作業方法,你必須配置並註冊一或多個struct cdev。用於配置struct cdev的函式是cdev_alloc(),你可再執行其配置一個獨立的cdev結構,然後將其ops欄位指向你的file_operations結構:
Struct cdev *my_cdev = cdev_alloc();
Linux Device Drivers ─
Device Number
裝置的存取,是透過它們在檔案系統裡的名稱;這些名稱可成為特殊檔(special file)、裝置檔(device file)或檔案系統是的節點(node),但不管哪些說法意義都一樣。裝置檔一般來說都集中在/dev/目錄下。字元裝置會出現c字樣而區塊裝置則被標示為b。
在日期欄位之前兩個以逗號隔開的數值,由左而右,依序是裝置檔的(major number)和(minor number)。
這幾天有位朋友問我,為什麼在智慧型手機中要使用到NAND FLASH?
我對智慧型手機的硬體實際做法或許不是很全面了解,但我可以以嵌入式系統的角度來說明。
一塊開發版需要幾個必備的要素,
1. CPU(ARM、MIPS...等)
2. RAM