企業(yè)網(wǎng)站建設(shè)開發(fā)費(fèi)用seo基礎(chǔ)知識培訓(xùn)
一.? 簡介
裸機(jī)開發(fā),即我們常說的不帶系統(tǒng)的單片機(jī)開發(fā)。
Linux驅(qū)動(dòng)開發(fā),即帶文件系統(tǒng)的Linux驅(qū)動(dòng)的開發(fā)。
二.?? 裸機(jī)開發(fā)與Linux驅(qū)動(dòng)開發(fā)的區(qū)別
1.? 裸機(jī)開發(fā)
比較底層,跟寄存器打交道,有些 MCU提供了庫。
2. Linux驅(qū)動(dòng)開發(fā)
(1)? Linux下驅(qū)動(dòng)開發(fā)直接操作寄存器不現(xiàn)實(shí)。
(2)? 根據(jù)Linux下的各種驅(qū)動(dòng)框架進(jìn)行開發(fā)。一定要滿足框架,也就是Linux下各種驅(qū)動(dòng)框架的掌握。
例如,Linux下對于 GPIO,有一整套的IO驅(qū)動(dòng)框架。我們只要按照要求把IO相關(guān)屬性告訴系統(tǒng),Linux會(huì)提供一些 API函數(shù),直接使用這些 GPIO操作函數(shù)即可。
(3)? 驅(qū)動(dòng)最終表現(xiàn)就是/dev/xxx文件。打開、關(guān)閉、讀寫、。。。
(4)? 現(xiàn)在新的內(nèi)核支持設(shè)備樹,這是一個(gè)?.dts文件,此文件 描述了板子的設(shè)備信息。
三.? Linux驅(qū)動(dòng)開發(fā)分類
linux驅(qū)動(dòng)分為三大類:
(1)?? 字符設(shè)備驅(qū)動(dòng),最多的。字符設(shè)備是Linux中最基本的一類設(shè)備驅(qū)動(dòng),我們常見的點(diǎn)燈、按鍵、IIC、SPI、LCD等等都是通過字符設(shè)備驅(qū)動(dòng)框架來進(jìn)行開發(fā)的。字符設(shè)備是一個(gè)順序的數(shù)據(jù)流設(shè)備,字符設(shè)備驅(qū)動(dòng)是通過一個(gè)一個(gè)字節(jié)流的方式來進(jìn)行讀寫操作設(shè)備,讀寫數(shù)據(jù)是分先后順序的。
(2)? 塊設(shè)備驅(qū)動(dòng),存儲(chǔ)。以固定大小進(jìn)行數(shù)據(jù)的讀寫,塊設(shè)備能夠隨機(jī)訪問,不需要按照順序地訪問數(shù)據(jù)大小的數(shù)據(jù)塊,
(3)? 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)。
一個(gè)設(shè)備不說是一定只屬于某一個(gè)類型。例如,USB WIFI,? SDIO WIFI,屬于網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng),因?yàn)槠溆钟蠻SB和SDIO,因此,也屬于字符設(shè)備驅(qū)動(dòng)。