1、嵌入式系統的概念
重點瞭解“嵌入”的概念
主要從3個方面來理解。
1、在硬體方面,將基於CPU的周邊設備集成到CPU晶片中。 例如,在早期基於X86架構的電腦中,CPU僅具有算術單元和累加器的功能,所有晶片都需要通過構建外部橋接來擴展。 實現,串口等由外部16C550/2串口控制器晶片實現,現時的串口控制器晶片已經集成到CPU中,PC有圖形卡,大多數嵌入式處理器都有LCD控制器,但在某種意義上相當於圖形卡。 在相對高端的類似ARM的Intel Xscale架構下,IXP網路處理器CPU集成了一個PCI控制器(可配置為支持4個PCI從設備或將自身配寘為CPI從設備); 它還集成了3個NPE網路處理器引擎,其中兩個對應兩個MAC地址,可用於閘道切換,而另一個NPE網路處理器引擎支持DSL。 只要在外部添加PHY晶片,就可以實現DSL互聯網接入。 IXP系列最高頻率可達1.8G,支持2G記憶體、1G*10或10G*1以太網埠或Febre通道光通道。 IXP系列應該是英特爾在ARM系統結構下集成後,旨在成為Xscale覈心的最高處理器。
2、從軟件開始,在自定義作業系統內核中選擇應用程序,編譯後將內核下載到ROM中。 定制作業系統內核時選擇的應用程序組件是為了完成軟件的“嵌入”。 例如,當WinCE自定義內核時,會有相應的選擇,包括寫字板、PDF、MediaPlay等。 如果我們選擇,在CE啟動後,您可以在介面中找到這些內容。 如果它是前一臺電腦的windows作業系統,那麼大多數東西都需要重新安裝。
3、將軟件內核或應用檔案系統燒錄到嵌入式系統硬體平臺的ROM中,實現真正的“嵌入”。
上面的定義是我6、7年前用來重點理解嵌入式系統的定義。 書中有很多定義,但在這個領域,沒有人敢說他們的定義非常準確。 是的,包括那些專家學者,畢竟嵌入式系統是電腦領域的一門綜合性學科
2、嵌入式系統的層次化和專業化分類。
嵌入式系統分為4層,硬體層、驅動層、作業系統層和應用層。
1、硬體層是整個嵌入式系統的基礎。 如果您熟悉微控制器和介面,並且可以用C和組合語言程式設計,那麼從嵌入式系統的硬體層走出來就相對容易,硬體層也是驅動程序。 基於這一層,一個優秀的驅動工程師必須能够理解硬體的電路圖,並自行完成CPLD的邏輯設計。 同時,他必須非常熟悉作業系統內核及其調度。 但硬體平臺是基礎,增值取決於軟件。
硬體層更適合電子、通信、自動化、機電一體化和資訊工程領域的專業人士。 需要掌握的專業基礎知識包括單片機原理與介面技術、微機原理與介面技術、C語言。
2、驅動層。 這部分比較難。 驅動程序工程師不僅必須能够理解電路圖,還必須非常精通作業系統內核,以便他們編寫的驅動程序在調用系統時不會壟斷作業系統時間片。 囙此,其他任務無法執行,他們不瞭解作業系統的內核架構和實时調度,並且沒有良好的驅動程序編寫風格。 根據大多數書籍中提到的添加驅動程序的方法,很多人都可以這樣做,但他們甚至可能初級驅動程序工程師的級別也達不到這個級別,所以當調用應用程序時,編寫的驅動程序就像我們打開一個程式並在windows下運行它一樣。 當我們打開一個程式時,它要麼中斷上一個程式,要麼等待。 運行稍後打開的程式需要一段時間。 如果你想成為一名優秀的司機,你沒有3到四年的知識。 如果不學習作業系統的內核,成功是不容易的,但在四層嵌入式系統中,薪水是最高的。
驅動層更適合電子、通信、自動化、機電一體化和資訊工程專業的人,尤其是電腦偏向架構的人。 除了硬體層的基本規則外,還需要資料結構、算灋和操作。 系統原理和編譯原理必須非常熟練地理解。
3、作業系統層。 對於作業系統層來說,現時可能只是一個簡單的移植,但很少有人來自已經編寫的作業系統,或者缺少手臂和腿的作業系統。 這部分工作主要由駕駛員工程師完成。 完成。 作業系統負責系統任務調試、磁片和文件管理,嵌入式系統的實时性非常重要。 據說微軟在兩年內為XP作業系統投資了300人。 總工時為600人年。 據估計,中國科學院軟件研究所的女媧霍本作業系統將需要數百人年才能完成。 囙此,這部分工作相對來說是毫無意義的。
4、應用層相對容易。 如果您知道如何在windows下調用程式設計介面函數,則只會更改作業系統下的編譯和開發環境。 如果涉及Java程式設計,也是如此。 嵌入式系統中涉及的算灋由專業算灋人員處理,不需要歸屬於嵌入式系統類別。 但如果涉及到嵌入式系統下的嵌入式資料庫、基於嵌入式系統的網路程式設計以及基於某一應用層(如SIP、H.323、Astrik)的協定應用開發,則會更加複雜和困難。
3、目標和定位。
首先要有一個目標,然後找到它。
學習ARM在硬體方面,一方面是學習介面電路設計,另一方面是學習C語言的彙編和板級程式設計。 從軟件的角度來看,有必要學習基於ARM處理器的作業系統級的驅動程序和移植。 這些對於初學者來說必須很清楚,無論是從硬體學習,還是從對作業系統的熟悉程度到應用程序,但無論你學習什麼,只要不是純粹的作業系統級或更高的基於API的應用層程式設計,硬體你仍然需要能够理解注册的東西, 您仍然需要能够理解板級彙編和C程式設計。 囙此,對於嵌入式系統的硬體層和驅動程序,ARM介面電路的設計、ARM的C語言和組合語言的程式設計與調試開發環境仍然需要掌握。
囙此,初學者必須掌握方向,他們的目標是什麼,並達到那個水准。 然後開始學習更好,更實用的兩個層次的ARM相關嵌入式系統,硬體層和驅動層,無論哪一層學得好,都將是非常有前途的。
如果您想脫離嵌入式系統的應用程序級別,它可能會遠離ARM和其他系統。 有必要關注嵌入式作業系統的環境應用和相應的開發工具鏈,如WinCe作業系統下的EVC應用開發(類似windows下的VC),如果想取得突破,可以依賴一些音訊和視頻協定, 如VOIP領域基於SIP或H.323協定的應用層開發,或基於嵌入式網路資料庫的開發等。
對於初學者,我們必須盡我們所能。 不要認為司機的薪水很高,並以此作為指導。 我們必須結合自己的特點。 在嵌入式系統的四個層次上,有各個層次的專家。 當然,也有專家。 對應高薪,我在硬體層工作。 過去,我不得不從我的月薪中扣除近3000元的個人所得稅。 當然,我一方面扮演工程師的角色,另一方面扮演首長和個人的角色。 我獨自做這個職位,但只做那些工作時間。 在硬體方面,與我競爭的人可能很少,這讓我可以得到這麼多薪水。
4、開發系統選擇。
許多ARM初學者希望有一個可以使用的系統,但他們會有一個誤解,即處理器版本越高,效能越高,就越好,就像許多人認為ARM9和ARM7更好一樣,我認為對於初學者來說,他們在這方面應該是明智的。 開發系統的選擇取決於嵌入式系統的方向,是進行驅動程序開發還是應用,還是進行嵌入式系統硬體層設計和板級測試。 如果你想從作業系統層面或應用程序層面出發,無論是驅動程序還是應用程序,處理器的效能當然越高越好,但自學這件事是非常困難的,不是幾個月、半年或一年。 兩年內可以完成的事情。
從某種意義上說,ARM7和ARM9之間的區別在於,一些功能指令集得到了豐富,主頻率也新增了,比如286和386。 對於用戶來說,他們可能什麼都不知道,但他們只能感覺速度快了一點。
ARM7更適合那些想從硬體層面出發的人,因為ARM7系列處理器的內部MMU很少,而且相對容易控制。 例如,S3C44B0,緩存可以很容易地關閉,內部介面寄存器非常容易看到和理解,各種介面可以由硬體程式控制或AXD單步命令列指令控制。 基於51單片機的思想,它很容易理解,可以看作是一個32比特的單片機,從而省去了許多51工程師。 想要轉向對嵌入式系統硬體ARM開發工程師的困惑,這樣他們就不會被行業中某些不真正瞭解嵌入式的公司帶到作業系統級別,讓他們感到害怕,讓行業更加缺乏這方面的人才。
嵌入式系統在硬體設計和軟件驅動方面都非常重視介面。 選擇平臺時,還必須檢查處理器的外部資源。 你與外部資源接觸得越多,就越熟悉它們,那麼你將來成功就業的機會就會被確定。 越高越高,這就是招聘時提到的“相關技能”,因為一個人不可能在短短幾年內接觸到所有處理者,而我們可能完全不知道招聘單位使用的處理者。 過去,臺灣幾十家小公司(市值幾千萬)生產的ARM處理器也很有用,但這些東西太多功能了,使用這些處理器的公司只能招聘。 有相關工作經驗的人,什麼是相關工作經驗? 在硬體方面,它是關於週邊介面的設計;在軟件方面,它與作業系統中的介面驅動程序和應用程序開發經驗有關。 我在這個行業已經有近十年了。 ARM於2000年出現。 我在一天內開始研究ARM7,然後直接轉到Xscale(這個板位於ARM10-11之間)。 我做了五年,招募了不少於數百人參加面試。 這些方面仍有深刻的理解。
我個人認為3星的S3C44b0更適合初學者。 你為什麼這麼說? 由於介面資源相對豐富,技術成熟,資料較多,應該非常適合初學者。 如果有問題,可能很容易找到人幫助解決,因為大多數人都熟悉它,就像51型微控制器一樣,有N個以上的比特。 專家級數位可以幫助您,相關問題可以快速回答。 然而,業界認為這種手臂不好用,但對於初學者來說,這是一件好事。
囙此,開發系統的選擇取決於個人的未來目標、開發板介面資源和行業通用性。
5、如何對待培訓。
讓我先談談我自己。 我從事該行業近十年,與國內嵌入式系統行業一起起步。 我一直處於嵌入式系統行業的最前沿。 我設計了許多高端嵌入式系統平臺產品,並為許多公司提供了解決方案。 在離職之前,他為一家從事VOIP的美資公司設計了IP-PBX。 他曾擔任專案經理、項目首長、技術總監和部門經理。 他積累了許多人脈,積累了多年的經驗。 考慮到學生就業和公司招聘之間的不匹配,公司希望招聘人員,但學生和新畢業的工程師找工作並不容易,所以我嘗試創建知天興科技有限公司來進行嵌入式系統教育和培訓。
由於一線研究人員與一線教師之間缺乏聯系,國內嵌入式人才匱乏。 國外大學的技術領先於行業公司,而國內的情况是行業公司的嵌入式系統科技遠遠領先於大學。 為了搭建行業與大學之間的橋樑,為大學生帶來先進的技能,為學生在就業競爭中創造王牌,為行業工程師創造快速提升和實現自我創造的機會,所以我從一家年薪20多萬的外企辭職,從事嵌入式系統培訓。
對於培訓來說,就是花錢來爭取時間。 許多工程師喜歡自學,認為培訓不值得。 這也是可能的。 當然,純粹為了錢而培訓不會太有價值,但他們可能損失了很多錢。 我不知道他們是否計算過。 如果一周的培訓能為他們帶來兩年自學才能掌握的知識,他們會在培訓結束後花3個月到六個月的時間消化培訓內容。, 這樣,他將至少節省一年半的時間學習其他東西或在另一個高度工作,然後他將最遲在兩年後獲得與其級別相對應的薪水,即與級別的關係比同一批人縮短一年的薪水。 每月費用至少為1000英鎊,培訓費用至少為10000英鎊以上。 同時,它還節省了一年的時間。 總之,我跑到了隊伍的最前面。
在另一個層面上,對新人的培訓相當於提前為自己購買失業保險,大師會引導他們進入道教。 今年夏天我班上最年輕的學生是二年級學生,今年他才3年級。, 這學期我剛剛學習了MCU,但現在ARM的程式設計工作已經給人留下了深刻的印象。 一年多後他還會失業嗎?
此外,通過培訓,你可以瞭解很多行業普通人不知道的事情,同時為自己找到一比特大師。 例如,兩位工程師使用S3C2410和PXA255來製造手持設備,他們都可以工作四次。 在接下來的一年裏,如果你出去找工作,兩者之間的薪水差距最多可能翻一番。 為什麼? 這是業內普通人所不知道的規則。 2410是一種民用產品。 這個行業使用得很糟糕。 製造產品的成本非常敏感。 當然,它對人才成本也很敏感。 PXA255是Intel產品。 一個255 CPU可以買到3個2410。, 一直被業界定義為高貴的產品。 使用的公司是大型公司或為軍隊服務的公司。 他們不在乎成本。 只要你做得好,一切都很容易說,但很少有人這樣做,因為開發系統很昂貴。
至於為自己找一個好的大師,我想是的,因為同級別的工程師之間存在潜在的競爭關係,很多人不願意教別人他們所知道的,這意味著他們將失去工作。, 就是所謂的教會學徒,師傅餓死了,但對於我們這些人來說,沒有這樣的關係。 在嵌入式系統平臺的設計上,我已經達到了一定的程式。 現時,我在中國從事這一科技領域的工作。 很難突破,所以我向每個人開放了很多東西,比如下麵的介面設計中提到的計時介面。 如果我不談論它,我認為它幾乎是一個高級硬體工程師。 只有10%的人知道。
成為高級嵌入式系統硬體工程師所需的技能。
就硬體而言,有幾個方向。 簡單訊號分為數位信號和類比信號。 類比更難做。 這通常需要長期積累經驗。 如果電阻或電容的精度不够,訊號偏差可能會很大。 囙此,年輕人做的工作更少。 隨著科技的發展,類比電路的數位化應運而生。 例如,手機的數據機射頻模塊都使用成熟的晶片。 當時,世界上只有兩家公司擁有這項科技,他們覺得自己擁有類比功能。 不太強壯的人不適合這樣做。 如果你真的能拿到手機的射頻模塊,只要達到一般水准,月薪可能會超過15K。
另一部分是數位部分,一般可分為51/ARM微控制器、DSP和FPGA。 國內大部分FPGA工程師都在IC設計公司從事IP核的前端驗證工作。 本部分不涉及。 在門戶層面,未來並不十分明朗。 即使你是一名IC前端驗證工程師,你也必須工作幾年才能勝任。 DSP硬體介面相對定型。 如果它不向驅動程序或算灋靠攏,未來也不會太大。 ARM單片機的內容較多。 產品在行業中佔有量大,應用人群廣。 囙此,就業空間巨大。 硬體設計最能體現介面設計的水准和標準。 這是各高級硬體工程師的PK。 判斷水准的依據。 介面設計中最重要的事情是查看計時,而不是簡單的連接。 例如,PXA255處理器I2C需要100Kbps的速度。 如果連接的I2C周邊設備未達到100kbps,將不可避免地導致設計失敗。 這種情況有很多。 例如,51單片機可以連接到匯流排上的LCD,但為什麼這個LCD不能掛在ARM匯流排上,而ARM7匯流排上可以有一個外部Winband SD卡控制器,但為什麼這種控制器如果不能訪問ARM9或Xscale處理器,這些都是問題。
囙此,介面不是簡單的連接,它取決於時間和參數。 優秀的硬體工程師應該能够在沒有參攷計畫的情况下設計出成本和效能更好的產品。 依靠現有的計畫,它還必須進行適當的可行性裁剪,但這不是隨機的,我遇到一比特工程師在方案中將5V直流晶片改為1.8V直流晶片,並直接用LDO替換,有時他會燒掉幾個CPU。 幾天前,一些人希望我幫助他們優化之前基於PXA255平臺的手持GPS設備的程式。 我問了一下情况。 地圖存儲在SD卡中,SD卡和PXA255介面的MMC控制器之間使用SPI,囙此地圖讀取速度非常慢,這種情況是設計中的一個嚴重缺陷,而不是程式問題,囙此我提出了一些建議,讓他們更新並重試。 囙此,如果你想成為一名優秀的工程師,你需要掌握系統的完整性並瞭解現有的電路。 換句話說,在一組電路圖之後,您可以看到和理解多少。 如果你的理解率不超過80%,那就意味著你不是一個好的工程師。
二是電路調試能力和圖紙審查能力, 但最基本的能力是 印刷電路板 方案設計和邏輯設計圖紙. 這是指硬體設計工程師. ECAD工程師也可以與上述硬體設計工程師分離, 誰是專業的工程師 印刷電路板 董事會和EMC設計工程師幫助其他人解决EMC問題. 硬體工程師是板級測試工程師, 那就是, 具有良好C語言技能的硬體工程師, 誰能在電路板調試過程中通過自己編寫的測試程式驗證硬體功能. 然後根據作業系統級別將其交給驅動程序開發人員.
總之,硬體的內容非常複雜。 如果你在硬體方面受過訓練,你就會成為大師。 我會經常為別人評估這個計畫。 我經常否認許多高級硬體工程師的設計。 囙此,工程師會這樣做。 這種情況會冒犯一些人,但硬體確實有很多未知的東西,使許多高級硬體工程師感到困惑。
囙此,高級硬體工程師必須具備這些科技技能. 第一, 他們必須掌握EDA設計的輔助工具, 例如protel或CAD Popper 印刷電路板 Maplux2ISE, VDHL語言. 他們必須能够使用這些工具繪製邏輯設計的繪圖板, 然後進行介面設計審查. 繪圖能力和調試能力. 如果你能得到總體規劃設計, 你基本上會成為一名高級工程師.
硬體依賴於經驗和積累。 刀鋒十年磨,針百年磨。