五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

1.2單片機(jī)知識是Linux驅(qū)動開發(fā)的基礎(chǔ)之一

2020-08-09 17:37 作者:韋東山  | 我要投稿


來源:百問網(wǎng)_嵌入式Linux wiki_jz2440 新1期視頻維基教程 (視頻文字版)

作者:韋東山

本文字?jǐn)?shù):1958,閱讀時長:2分鐘

????????單片機(jī)的學(xué)習(xí)可以讓我們拋開復(fù)雜的軟件結(jié)構(gòu),先掌握硬件操作,如:看原理圖、芯片手冊、寫程序操作寄存器等。 在上一節(jié)視頻里,我剛把單片機(jī)貶得一無是處,說單片機(jī)沒前途了,這節(jié)視頻,我又要告訴你們,沒有前途,也要學(xué)習(xí)單片機(jī)。為什么?

????????首先,我說不用學(xué)習(xí)單片機(jī),是指不要使用老一套得學(xué)習(xí)方法學(xué)習(xí)單片機(jī)。什么叫老一套的方法??

  • 硬件上:不要使用C51、STM32這些專用的單片機(jī)開發(fā)板。如果以后,你不打算從事單片機(jī)開發(fā),你用這些芯片干嘛,研究了兩三個月,把這些寄存器都用清楚了,你又用不上,沒必要啊。

  • 軟件上:不要使用Keil、MDK等集成度太高的軟件。你用這些軟件,你寫個main()就可以了,然后調(diào)用各種庫,進(jìn)行傻瓜式操作。這些好用的工具,封裝了很多技術(shù)細(xì)節(jié),使得我們沒法了解裸機(jī)、單片機(jī)的本質(zhì)

????????以后我們會使用新一套的方法來進(jìn)行單片機(jī)的開發(fā)。新一套的方法,我們后面再介紹。

Chapter1 lesson2 001.png

????????我們之所以還要學(xué)習(xí)單片機(jī),是因?yàn)樗锩娴闹R,對我們后續(xù)學(xué)習(xí)Linux還是有用的。我們首先來看看,一個Linux系統(tǒng)是怎么一回事。 一個嵌入式Linux系統(tǒng)的軟件組成:

????????單片機(jī)大全Bootloader-->Linux驅(qū)動-->Linux APP-->Linux GUI(Android/QT)

????????我們PC機(jī)一上電的時候,黑色屏幕上會顯示BIOS,這個BIOS目的是去啟動Windows內(nèi)核。Windows內(nèi)核再掛載C盤(系統(tǒng)盤)、D盤(應(yīng)用盤),最后再去啟動應(yīng)用程序,像QQ、網(wǎng)游等。

????????同樣的道理,我們的Android手機(jī)或者工控設(shè)備,也有BIOS,但嵌入式Linux系統(tǒng)里面不叫BIOS,叫Bootloader,他的目的是去啟動Linux內(nèi)核。 他首先也是識別應(yīng)用程序所在的存儲設(shè)備,掛載根文件系統(tǒng)(在Windows系統(tǒng)里面的C盤、D盤,在Linux里面稱為根文件系統(tǒng))。最后去啟動應(yīng)用程序。

Chapter1 lesson2 002.png

????????仔細(xì)的分析下Bootloader,他去啟動內(nèi)核,他去哪里啟動內(nèi)核呢? 顯然是去某個地方讀出內(nèi)核,就比如說BIOS是去C盤上讀出Windows內(nèi)核,我們的Bootloader是去Flash或者SD卡讀取內(nèi)核。 因此Bootloader要擁有讀取Flash或者SD卡的能力。有些Bootloader還要顯示logo,因此還要具有操作LCD的能力。Bootloader還要設(shè)置開發(fā)板的環(huán)境,比如,初始化時鐘、初始化內(nèi)存、還要設(shè)置網(wǎng)卡等。 這么多事情,都是在Bootloader里面實(shí)現(xiàn)的,太復(fù)雜了,如果你一來就分析整個Bootloader是非常困難的。

????????那我們怎么學(xué)習(xí)呢? 把他拆開,寫出單獨(dú)的程序,比如:LED點(diǎn)燈、時鐘、網(wǎng)卡、Flash都單獨(dú)寫個程序來練習(xí),這些不就是單片機(jī)程序嗎?所以說,Bootloader是單片機(jī)程序的大全。我們?yōu)榱烁玫膶W(xué)習(xí)Bootloader,我們應(yīng)該事先一個一個練習(xí)硬件,當(dāng)我們熟悉每個硬件后,再組合起來,就是一個Bootloader。

Chapter1 lesson2 003.png

????????我們再來看看Bootloader啟動內(nèi)核之后,內(nèi)核再去掛載根文件系統(tǒng),意味著內(nèi)核也要有操作硬件的能力,這就是驅(qū)動程序。我們首先來看看一個簡單的驅(qū)動程序是什么樣子。 首先我們的應(yīng)用程序是調(diào)用open()、read()、write()這些標(biāo)準(zhǔn)的接口去訪問硬件。那么就進(jìn)入驅(qū)動程序里面,驅(qū)動程序里面有對應(yīng)的drive_open()、drive_read()、drive_write()。最后在驅(qū)動程序里面,去配置硬件。 這里以如果是一個LED點(diǎn)燈驅(qū)動,那么drive_open()要把GPIO設(shè)置為輸出引腳,drive_read(),返回GPIO狀態(tài),driver_write()則寫GPIO,讓引腳輸出高電平或者低電平。

Chapter1 lesson2 004.png

????????對于我們的LED驅(qū)動程序,你需要提供drive_open()、drive_read()、drive_write()這些接口,這就是他的框架。具體的怎么操作硬件,就是硬件操作。 所以說,我們事先在單片機(jī)里面,熟悉熟練的掌握硬件操作。即驅(qū)動程序的組成:

????????驅(qū)動程序=軟件框架+硬件操作

????????你需要學(xué)會看原理圖、看硬件怎么連接、看芯片手冊、知道怎么讀寫寄存器。這一切都可以先在單片機(jī)里面學(xué)習(xí),去掌握。以后學(xué)習(xí)Linux驅(qū)動時,把重點(diǎn)放在軟件框架就行了。

????????我們可以事先學(xué)習(xí)單片機(jī),單片機(jī)的學(xué)習(xí)可以讓我們先拋開復(fù)雜的軟件結(jié)構(gòu),先掌握硬件的操作,如:看原理圖、芯片手冊、寫程序操作寄存器等。 這就是為什么單片機(jī)沒有前途,我們也要學(xué)習(xí)。是因?yàn)樗锩嫔婕暗挠布僮?,對我們后續(xù)的學(xué)習(xí),非常有用處。

????????現(xiàn)在我們知道了,我們學(xué)習(xí)單片機(jī),不是為了掌握單片機(jī)的開發(fā)技能,而是為了掌握Bootloader,掌握硬件操作。

Chapter1 lesson2 005.png


1.2單片機(jī)知識是Linux驅(qū)動開發(fā)的基礎(chǔ)之一的評論 (共 條)

分享到微博請遵守國家法律
无棣县| 榆林市| 含山县| 鸡东县| 汉源县| 辰溪县| 安阳市| 兰溪市| 四平市| 康保县| 龙州县| 竹山县| 喀喇| 武夷山市| 安达市| 邯郸县| 英山县| 湘阴县| 三亚市| 洛隆县| 增城市| 昌图县| 普陀区| 日土县| 金湖县| 泸西县| 吉安县| 新竹县| 武威市| 石柱| 赤峰市| 简阳市| 崇明县| 淳安县| 花垣县| 伽师县| 凤冈县| 内丘县| 吉木萨尔县| 陆川县| 廊坊市|