為什麼沒前途也要學習單片機,會給你後半生享福

2022-05-11     大方老師單片機

原標題:為什麼沒前途也要學習單片機,會給你後半生享福

為什麼沒前途也要學習單片機會給你後半生享福

///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比///

為什麼沒前途也要學習單片機?

因為它是個很好的入口。

學習單片機可以讓我們拋開複雜的軟體結構,先掌握硬體操作,如:看原理圖、晶片手冊、寫程序操作寄存器等在上一節視頻里,我剛把單片機貶得一無是處,說單片機沒前途了,這節視頻,我又要告訴你們,沒有前途,也要學習單片機。為什麼?

首先,我說不用學習單片機,是指不要使用老一套得學習方法學習單片機。什麼叫老一套的方法?

·硬體上:不要使C51STM32這些專用的單片機開發板。如果以後,你不打算從事單片機開發,你用這些晶片幹嘛,研究了兩三個月,把這些寄存器都用清楚了,你又用不上,沒必要啊。

·軟體上:不要使KeilMDK等集成度太高的軟體。你用這些軟體,你寫main()就可以了,然後調用各種庫,進行傻瓜式操作。這些好用的工具,封裝了很多技術細節,使得我們沒法了解裸機、單片機的本質。

以後我們會使用新一套的方法來進行單片機的開發。新一套的方法,我們後面再介紹。

我們之所以還要學習單片機,是因為它裡面的知識,對我們後續學Linux還是有用的。我們首先來看看,一Linux系統是怎麼一回事一個嵌入Linux系統的軟體組成單片機大Bootloader>Linux>Linux APP>Linux GUI(Android/QT)。我PC機一上電的時候,黑色螢幕上會顯BIOS,這BIOS目的是去啟Windows內核Windows內核再掛C(系統)D(應用),最後再去啟動應用程式,QQ、網遊等同樣的道理,我們Android手機或者工控設備,也BIOS,但嵌入Linux系統裡面不BIOSBootloader,他的目的是去啟Linux內核它首先也是識別應用程式所在的存儲設備,掛載根文件系統(Windows系統裡面CD盤,Linux裡面稱為根文件系)。最後去啟動應用程式。

仔細的分析Bootloader,它去啟動內核,它去哪裡啟動內核呢顯然是去某個地方讀出內核,就比如BIOSC盤上讀Windows內核,我們BootloaderFlashSD卡讀取內核Bootloader要擁有讀FlashSD卡的能力。有Bootloader還要顯logo,因此還要具有操LCD的能力Bootloader還要設置開發板的環境,比如,初始化時鐘、初始化內存、還要設置網卡等這麼多事情,都是Bootloader裡面實現的,太複雜了,如果你一來就分析整Bootloader是非常困難的。

那我們怎麼學習呢把他拆開,寫出單獨的程序,比如LED點燈、時鐘、網卡Flash都單獨寫個程序來練習,這些不就是單片機程序嗎?所以說Bootloader是單片機程序的大全。我們為了更好的學Bootloader,我們應該事先一個一個練習硬體,當我們熟悉每個硬體後,再組合起來,就是一Bootloader

我們再來看Bootloader啟動內核之後,內核再去掛載根文件系統,意味著內核也要有操作硬體的能力,這就是驅動程序。我們首先來看看一個簡單的驅動程序是什麼樣子首先我們的應用程式是調open()read()write()這些標準的接口去訪問硬體。那麼就進入驅動程序裡面,驅動程序裡面有對應drive_open()drive_read()drive_write()。最後在驅動程序裡面,去配置硬體比如一LED點燈驅動,那drive_open()GPIO設置為輸出引腳drive_read(),返GPIO狀態driver_write()GPIO,讓引腳輸出高電平或者低電平。

對於我們LED驅動程序,你需要提drive_open()drive_read()drive_write()這些接口,這就是它的框架。具體的怎麼操作硬體,就是硬體操作所以說,我們事先在單片機裡面,熟悉熟練的掌握硬體操作。即驅動程序的組成:

驅動程=軟體框+硬體操作

你需要學會看原理圖、看硬體怎麼連接、看晶片手冊、知道怎麼讀寫寄存器。這一切都可以先在單片機裡面學習,去掌握。以後學Linux驅動時,把重點放在軟體框架就行了。

我們可以事先學習單片機,單片機的學習可以讓我們先拋開複雜的軟體結構,先掌握硬體的操作,如:看原理圖、晶片手冊、寫程序操作寄存器等這就是為什麼單片機沒有前途,我們也要學習。是因為他裡面涉及的硬體操作,對我們後續的學習,非常有用處。

文章來源: https://twgreatdaily.com/zh-hk/c64eef602f6200148d81d42ad078e5d8.html