【轉】0-嵌入式linux與51/430/STM32的嵌入式開發的區別與關聯

0-嵌入式linux與51/430/STM32的嵌入式開發的區別與關聯

總結:

微控制器系列:8051, MSP 430 , STM32 F0-3( ARM Cortext M0 - M3系列)等

  主要特色沒有內存管理單元,不能運行linux 這類有着虛擬內存的操做系統,只能運行裸機程序或是ucOS一類的實時操做系統。主要工做就是外設驅動開發(好比寫個編碼器的驅動,液晶的驅動,usb的驅動)和基於驅動的應用程序開發,如控制類和簡單的圖像處理功能。linux

微處理器系列: ARM Cortex A系列的處理器

  有內存管理單元MMU,能夠運行linux程序,開發其實和在windows pc上寫程序是同樣的,只是因爲arm編譯慢,通常會選在在PC上用針對ARM特定編譯器去編譯出程序放在ARM上運行,就是交叉編譯。這裏涉及到的驅動開發比較複雜,通常會遵循linux定義的規則去寫。編程

 

詳解:

  基於STM32的開發屬於微控制器開發領域,主要開發工具是keil或IAR,這種開發更準確的說法是單片機開發或者硬件開發;而招聘裏所說的嵌入式開發,開發環境是基於Linux操做系統,這種開發通常會分爲幾個層次:驅動開發、操做系統層開發、應用層開發。開發後者所需瞭解的知識和前者的不是在同一個層次上。windows

  若是玩過Arduino和樹莓派,那麼這個就很好理解了。STM32開發和Arduino是同一個層次,處於微控制器級別;嵌入式Linux開發和樹莓派一個層次,屬於微處理器級別。服務器

  更詳細地說,單片機開發主要在於控制、檢測和傳輸數據,好比控制繼電器開關以控制門鎖,檢測溫溼度上傳數據到網關。而處理器除了能夠作單片機的事,還能夠處理音視頻等計算量很大的任務,有文件管理系統也有更多的存儲空間,以及該平臺所提供的「開封即用」的工具(即安裝後就能夠直接使用),好比在樹莓派上運行一我的臉檢測系統是沒問題的,在樹莓派上搭建Web網站也是很方便的。框架

  嵌入式Linux使用的主控芯片比STM32更高級。什麼叫高級?除了運行速度內存空間等特性之外,從拿到芯片開始開發,到最後成爲一個完整的產品原型或方案,其過程須要用到不少開發工具,硬件電路板的設計、驅動層和系統層代碼的移植,應用層代碼的編寫,這些是須要一個團隊合做完成的,固然大牛也能夠獨立完成,可是須要很是很是多的精力,同時項目週期也會拖得很是很是的長。嵌入式Linux開發,不是像單片機開發那樣設計好硬件後,只須要打開IDE編寫代碼,而後燒錄測試改代碼燒錄測試改代碼。工具

  放上一張ARM芯片內核彙總圖片。其中STM32內核屬於Cortex-M系列,嵌入式Linux所用內核多是Cortex-A系列。有的Cortex-M不支持MMU內存管理單元,據我所知最多隻能上到 µC/OS系列的嵌入式系統,而Cortex-A支持MMU,能夠上類Unix系統。一旦上了類Unix系統,底層的東西就能夠封裝起來,只提供接口給上層開發人員。學習

  這裏科普一下。若是學過面向對象編程,那封裝和接口就很容易理解。封裝是把實現細節儘量的隱藏起來,對外提供一個或多個公共接口,開發人員只須要知道這個接口怎麼調用便可,不須要知道是怎麼實現的。這一點和基於單片機開發很大不一樣,單片機開發本質就是「面向寄存器開發」。而嵌入式Linux開發,是"面向N-1層開發",好比應用層就是「面向操做系統層API開發」。開發工具

  固然,如今STM32有了STM32Cube這個開發工具,就好像把STM32開發封裝一層並提供接口同樣。但對我來講,Cube只是一個「開發框架」或"中間件",Cube使開發者配置引腳更省心省力,同時把寄存器封裝了一層,以更友好的方式告訴開發者,開發者只須要根據接口文檔提供的接口去調用便可(惋惜Cube的文檔、學習和開發資料太少)。我要是不用Cube,也能夠開發STM32,沒有Cube之前開發者都是直接看芯片手冊開發的。測試

  而對於嵌入式Linux開發,則不能脫離N-1層,不瞭解底層API都不知道要作什麼,例如使用TCP,至少也要知道Socket接口,例如編寫Web管理頁面,至少也須要一個Web框架(好比Python的Django)及Web服務器(好比Apache)。固然,因爲嵌入式Linux都是基於類Unix開發,不少接口及其知識都是通用的,掌握了底層接口之後能夠更多的關注業務邏輯。而在單片機開發中,換了一個芯片就須要從新看芯片手冊,哪怕是實現相同的功能也有種從新開發的感受,因此芯片選型階段也是重中之重。嵌入式Linux應用層開發則不用那麼麻煩,只要操做系統是類Unix,底層提供相同的接口便可代碼重用。網站

 

若有不對的地方,很是歡迎給予指導!

——【感謝】資料來源https://www.zhihu.com/question/53880054

相關文章
相關標籤/搜索