一.? 簡介
裸機開發,即我們常說的不帶系統的單片機開發。
Linux驅動開發,即帶文件系統的Linux驅動的開發。
二.?? 裸機開發與Linux驅動開發的區別
1.? 裸機開發
比較底層,跟寄存器打交道,有些 MCU提供了庫。
2. Linux驅動開發
(1)? Linux下驅動開發直接操作寄存器不現實。
(2)? 根據Linux下的各種驅動框架進行開發。一定要滿足框架,也就是Linux下各種驅動框架的掌握。
例如,Linux下對于 GPIO,有一整套的IO驅動框架。我們只要按照要求把IO相關屬性告訴系統,Linux會提供一些 API函數,直接使用這些 GPIO操作函數即可。
(3)? 驅動最終表現就是/dev/xxx文件。打開、關閉、讀寫、。。。
(4)? 現在新的內核支持設備樹,這是一個?.dts文件,此文件 描述了板子的設備信息。
三.? Linux驅動開發分類
linux驅動分為三大類:
(1)?? 字符設備驅動,最多的。字符設備是Linux中最基本的一類設備驅動,我們常見的點燈、按鍵、IIC、SPI、LCD等等都是通過字符設備驅動框架來進行開發的。字符設備是一個順序的數據流設備,字符設備驅動是通過一個一個字節流的方式來進行讀寫操作設備,讀寫數據是分先后順序的。
(2)? 塊設備驅動,存儲。以固定大小進行數據的讀寫,塊設備能夠隨機訪問,不需要按照順序地訪問數據大小的數據塊,
(3)? 網絡設備驅動。
一個設備不說是一定只屬于某一個類型。例如,USB WIFI,? SDIO WIFI,屬于網絡設備驅動,因為其又有USB和SDIO,因此,也屬于字符設備驅動。