embedded linux學習中幾個須要明確的概念

有些童鞋可能很奇怪,爲什麼我一開始說BBB,後來反而盡扯一些無關的呢?其它,一開始我寫關於BBB的blog是僅是想記錄個人一些歷程,如今想作點有用的、對你們有幫助的事,開始的記錄的順序可能就不合適了,反正BBB也很熟悉了,如今是補記錄,要補仍是補全一點,還有,但願不誤導人! linux

我作測量系統作了十五年,最先是最硬件和下位機軟件,所以對硬件的東西很熟悉,從51到cortexM3(但cortex-A8不熟悉!),後來作上位機軟件多一點,再後來偏於管理。不謙虛的說,我寫的測試軟件不是最好的,但其可靠性是一流的,由於個人產品測試是很全面的,從靜態到動態,一個軟件下來,測試用例用比軟件自己還龐大。爲何忽然說這個呢,由於我發現許多朋友,是由於好玩才玩BBB,並不定有我這樣的經歷,所以纔想說必定要清楚幾個概念。 ubuntu

1、linux 架構

它僅僅是一個核心(內核),其它的redhat/debian/ubuntu等都是在其之上的一功能軟件的集合體。 工具

2、編譯內核、uboot等 測試

初學者沒有必要一開始就幹這個吃力不討好的事情,由於你極可能都不知道你爲何須要作這個事兒。 spa

只有原生的系統內核中,你須要的功能沒有,或者你想將你須要的功能加入內核,讓系統一啓動就自動運行(固然這也有其它方法實現),纔會作這個事兒。 調試

編譯uboot是你的硬件系統改變,好比說是Nand的地址、MCU類型等與系統啓動相關的東西發生改變,你須要適應性的修改纔會作這些事。 blog

3、cross-toolchain是什麼? 接口

你使用的x86架構(無論用win仍是linux),而你用寫的應用程序想在ARM架構下運行(不論是embedded linux仍是ucOS),怎麼辦? 生命週期

當開發和應用的系統架構不一樣時,你須要一個工具,這個工具可以將架起不一樣平臺之間的橋,這就是cross-toolchain。簡單的例子,用x86平臺的宿主機,開發出運行於ARM架構目標機的應用程序,這期間所須要的編譯、調試等工具就是一個cross-toolchain。

不少的BBB的開發是基於linux,經過cross-toolchain,生成應用,經過ftp或其它共享工具,發佈應用到目標系統,這是一個典型的cross-toolchain的應用。其實,在win下同樣能夠經過cross-toolchain開發、發佈BBB的應用(我也常常這樣作)。

所以cross-toolchain的本質是硬件系統架構不一樣,而非OS系統架構不一樣!

4、SDK必定要用嗎?

個人建議是,你在初期(或熟悉期)最好不用,若是你對linux自己比較熟悉了,你可使用,這會使效率提升。

初期其實最重要的工做是熟悉硬件和軟件平臺,而非應用接口,況且這個應用接口仍是硬件相關的。

當你本身可以熟練的使用、搭建本身的工做環境,你會發現,你對系統的瞭解上了一層樓。


歡迎猛拍!

PS:後續,我開始說正事兒,固然,也基本是離不開BBB的使用,不想多說firmware開發的事兒,基本的順序是:創建基本的開發環境——測試一下應用程序開發——結合一個cape的開發,簡單說點硬件和系統——再回到應用開發,說點linux環境上位機和下位機軟件開發——若是我後續時間容許的話,我結合BBB和一個產品的開發,詳細說一個產品的全生命週期中的相關技術問題和解決的歷程。

相關文章
相關標籤/搜索