-
1 # 瓶凡科技營
-
2 # 糖尿病便秘腸炎管理
什麼是嵌入式?
嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用裝置上,通常這些裝置的硬體資源(如處理器、儲存器等)非常有限,並且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智慧化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高畫質電視(HDTV)、遊戲機、智慧玩具、交換機、路由器、數控裝置或儀表、汽車電子、家電控制系統、醫療儀器、航天航空裝置等等都是典型的嵌入式系統。
嵌入式系統是軟硬結合的東西,搞嵌入式開發的人有兩類。(1)一類是學電子工程、通訊工程等偏硬體專業出身的人,他們主要是搞硬體設計,有時要開發一些與硬體關係最密切的最底層軟體,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅動硬體,往上支援作業系統),最初級的硬體驅動程式等。他們的優勢是對硬體原理非常清楚,不足是他們更擅長定義各種硬體介面,但對複雜軟體系統往往力不從心(例如嵌入式作業系統原理和複雜應用軟體等)。(2)另一類是學軟體、計算機專業出身的人,主要從事嵌入式作業系統和應用軟體的開發。如果我們學軟體的人對硬體原理和介面有較好的掌握,我們完全也可寫BSP和硬體驅動程式。嵌入式硬體設計完後,各種功能就全靠軟體來實現了,嵌入式裝置的增值很大程度上取決於嵌入式軟體,這佔了嵌入式系統的最主要工作(目前有很多公司將硬體設計包給了專門的硬體公司,稍複雜的硬體都交給臺灣或國外公司設計,國內的硬體設計力量很弱,很多嵌入式公司自己只負責開發軟體,因為公司都知道,嵌入式產品的差異很大程度在軟體上,在軟體方面是最有“花頭“可做的),所以我們搞軟體的人完全不用擔心我們在嵌入式市場上的用武之地,越是智慧裝置越是複雜系統,軟體越起關鍵作用,而且這是目前的趨勢。
從事嵌入式軟體開發的好處是:(1)目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟體(例如作業系統級、驅動程式級軟體),對軟體專業水平要求較高(嵌入式系統對軟體設計的時間和空間效率要求較高),而且必須懂得硬體的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬體技術出現時間不長或正在出現(如ARM處理器、嵌入式作業系統、MPEG技術、無線通訊協議等),掌握這些新技術的人當然很找。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟體,另外需要有經驗的人進行指導開發流程。(2)與企業計算等應用軟體不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。搞企業應用軟體的IT企業,這個使用者的系統搞完了,又得去搞下一個使用者的,而且每個使用者的需求和完成時間都得按客戶要求改變,往往疲於奔命,重複勞動。相比而言,搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事。所開發的產品通常是通用的,不會因客戶的不同而修改。一個產品型號開發完了,往往有較長一段空閒時間(或只是對軟體進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟體的每個人工作範圍相對狹窄,所涉及的專業技術範圍就是那些(ARM、RTOS、MPEG、802.11等),時間長了這些東西會越搞越有經驗,賣賣老本,幾句指導也夠讓那些初入道者琢磨半年的。若搞應用軟體,可能下一個客戶要換成一個完全不同的軟體開發平臺,那就苦了。(3)哪天若想創業,搞自已的產品,那麼嵌入式是一個不錯的主意,這可不像應用軟體那樣容易被盜版。土木學院有一個叫啟明星的公司開發出一個好象叫“工程e”的掌上PDA(南校區門口有廣告),施工技術人員用該PDA可當場進行土木概預算和其它土木計算,據說銷路特好。我認識的某大學老師,他開發的飯館用的點菜PDA(WinCE平臺,可無線連網和上網),據他說銷路不錯,飯館點點PDA讓客戶點菜,多顯派頭檔次。我記得00級2+2班當年有一組同學在學Windows程式設計課程時用VC++設計了一個功能很強的點菜系統做為課程專案,當時真想建議他們將這個軟體做成PDA,估計會有些銷路(上海火車站南廣場的Macdonald便使用很漂亮的PDA給使用者點食品,像摸像樣的)。這些PDA的硬體設計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬體,我們只管設計軟體就變成自己的產品了。
從事嵌入式軟體開發的缺點是:(1)入門起點較高,所用到的技術往往都有一定難度,若軟硬體基礎不好,特別是作業系統級軟體功底不深,則可能不適於此行。(2)這方面的企業數量要遠少於企業計算類企業。特別是從事嵌入式的小企業數量較多(小企業要搞自己的產品創業),知名大公司較少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半導體、Microtek、研華、華為、中興通訊、上廣電等製造類企業)。這些企業的習慣思維方式是到電子、通訊等偏硬專業找人。由於我院以前畢業生以企業計算為主,所以我院與這些企業聯絡相對較少。我院正積極努力,目前已與其中部分公司建立了聯絡,爭取今後能有我院同學到這些企業中實習或就業。(3)有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。我院同學若學習嵌入式,顯然應偏重於嵌入式軟體,特別是嵌入式作業系統方面,應是我們的強項。對於搞嵌入式軟體的人,最重要的技術顯然是(實際上很多公司的招聘廣告上就是這樣寫的):(1)掌握主流嵌入式微處理器的結構與原理(2) 必須掌握一個嵌入式作業系統(3)必須熟悉嵌入式軟體開發流程並至少做過一個嵌入式軟體專案。
嵌入式軟體方面最重要的課程包括:(1)嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,我院用這門課取代了傳統的“微機原理與介面”課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對ARM處理器工作原理和介面技術有充分了解,包括ARM的彙編指令系統。若不瞭解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省記憶體又執行高速的最優程式碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程式(驅動程式都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該裝置的硬體規格說明書(xxxSpecification),您必須能看懂其中的記憶體分佈和埠使用等最基本的說明(就像x86彙編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。還有同學對ARM彙編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將組合語言當成一個程式設計語言,學彙編主要是為了掌握處理器工作原理的。一個不熟悉組合語言的人,怎麼能在該處理器寫出最優的C語言程式碼。在嵌入式開發的一些關鍵部分,有時還必須寫彙編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速影象採集和影象解壓縮),目前主要還要靠彙編寫程式(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在檢視描述原理的手冊時,可能很多都是用匯編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用匯編描述,此時您就必須看懂彙編程式,否則軟硬體人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉彙編。(2) 嵌入式作業系統類課程:除了WinCE的實時性稍差外,大多數嵌入式作業系統的實時性都很強,所以也可稱為實時作業系統Real Time Operating System.從事嵌入式的人至少須掌握一個嵌入式作業系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。
目前最重要的RTOS主要包括:第一類、傳統的經典RTOS:最主要的便是Vxworks作業系統,以及其Tornado開發平臺。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且核心可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks佔據了嵌入式系統的多半疆山。特別是在通訊裝置等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通訊企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時作業系統還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux作業系統:Linux的前途除作為伺服器作業系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支援軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的作業系統,不是微核心的,並且實時性不強。
目前應用在嵌入式領域的Linux系統主要有兩類:(1)一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前佔較大應用份額,可在ARM7上跑;
(2)另一類是跑在ARM9上的,一般是將Linux2.4.18核心移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM9上)。
很多人預測,嵌入式Linux預計將佔嵌入式作業系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時作業系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時作業系統原理,但由於ucOS/II功能有限,實用用得較少,所以我院不將其作為教學重點,要學習就應學直接實用的,比如uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深作業系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,(1)一是能將Linux移植到某個新型號的開發版上;(2)二是能寫Linux驅動程式的人;(3)三是熟悉Linux核心裁減和最佳化的人。我院在該嵌入式Linux方面的課程系列是:本科生作業系統必修課,然後是Linux程式設計選修課,最後是嵌入式Linux系統選修課。第三類、 WindowsCE嵌入式作業系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等介面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平臺主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程式設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支援,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC作業系統專用於PDA上(掌上電腦),另一個是MS SmartPhone作業系統用於智慧手機上(帶PDA功能的手機),兩者也都屬於WinCE平臺。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式作業系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁衝擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的“Windows CE嵌入式作業系統“課程的學校,這主要是基於以下原因:我院本身前面便有Windows程式設計課程,同學學過VC++後再學WinCE,非常方便自然,透過學習WinCE同樣也可瞭解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰佔份額大還很難講,畢竟很多人更願意接受MS的平臺,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的使用者?據我觀察,目前在嵌入式平臺上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮;二是微軟亞洲研究院對我院WinCE課程的支援計劃,我們也很希望將來我院能有同學透過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的專案領域之一,他們很需要精通WinCE的人。總結關於嵌入式作業系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最好的選擇。
嵌入式開發需要掌握的知識!(1)嵌入式開發的其它相關軟體課程
A、數字影象壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,我院已預訂了一位能開設數字影象處理課程的博士。
B、通訊協議及程式設計技術:這包括傳統的TCP/IP協議和熱門的無線通訊協議。首先,大多數嵌入式裝置都要連入區域網或Internet,所以首先應掌握TCP/IP協議及其程式設計,這是需首要掌握的基本技術;其次,無線通訊是目前的大趨勢,所以掌握無線通訊協議及程式設計也是是很重要的。無結通訊協議包括無線區域網通訊協議802.11系列,Bluetooth,以及行動通訊(如GPRS、GSM、CDMA等)。
C、網路與資訊保安技術:如加密技術,數字證書CA等。我院有這方面的選修課。
D、DSP技術:DSP是Digital Signal Process數字訊號處理的意思,DSP處理器透過硬體實現數字訊號處理演算法,如高速資料採集、壓縮、解壓縮、通訊等。數字訊號處理是電子、通訊等硬體專業的課程,對於搞軟體的人若能瞭解一下最好。目前DSP人才較缺。如果有訊號與系統、數字訊號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。
(2)嵌入式開發的相關硬體基礎
-
3 # 大樹NB
別的大佬都說的很詳細了,我從另外一個角度來談談:
1.閱讀程式碼的能力
2.編碼的能力
3.硬體知識,圖紙的閱讀能力
4.作業系統相關知識
5.系統觀
下面是詳細的解釋
閱讀程式碼的能力指的是讀得懂別人的程式碼,並且能為己用,有兩種模式,一種是學習模式。一種是查詢使用,就是說當你需要實現一個東西的時候可以去別人那裡找到類似的解決方法並且能經過修改移植為自己服務。
編碼能力指的是別人給你需求,你直接上手就能開始寫程式碼,而不是雙手不知所措,這個需要幾萬行程式碼才能入門。同時這種能力不和具體某種語言有關,不管哪個語言熟悉下語法就能上手。
硬體知識不比說了,做底層硬體難道不懂點電路?我多年前有一次做的arm板子給做驅動的人,過了好久對我說硬體有問題,搞得我也很奇怪,我移植的uboot和核心就沒事,一跑他們的就宕機,最後發現他們把我給的uboot啟動程式碼裡好多初始化的程式碼刪除了,不用的管腳需要設定內部上拉,全去掉了……所以不懂硬體還做底層軟體有硬傷
作業系統屬於基本配置,裸機跑的越來越少了
系統觀指的是除了問題得從整個系統的角度來排查,因為有的時候問題的產生是好多因素共同作用的結果。
-
4 # 嵌入式經驗分享
嵌入式系統其實面還是比較廣泛的,有裸機的,有用RTOS的(也有好幾中系統,不過大同小異),也有Linux的。 從開發語言來說,C仍然是主流,C++也有。
如何做好軟體的設計,關鍵看個人的邏輯思維能力,還有一個是程式的組織架構。個人的邏輯思維能力,和你的學歷恐怕就有很大的關係了。同樣一個功能,不同的人實現起來會有很大的不同,雖然都能工作,但是有些人寫的程式碼就是亂,定義也沒有規則,反正就是難以維護;有些人寫的就是乾淨整潔,一目瞭然。
我個人認為,實現一個功能只是最基本的要求,如何實現程式碼精簡、整潔、高效、邏輯清晰,這個是有一定難度的,需要個人不斷的去總結提高。
-
5 # goodmann
個人一點理解
先從規範做起:
1.專案目錄結構統一規範
2.makefile格式及引用方式規範
3.程式碼註釋規範
4.函式名,變數名規範
5.程式碼風格統一,易於閱讀
對於c語言,大概學好這些,基本的團隊合作就沒問題了,另外一些就是一定要學懂至少一種rtos,在寫驅動的時候,一定要考慮好效能和可靠性,一定要從業務角度去拆分介面...
-
6 # 科技電小二
嵌入式的定義比較廣泛,可以分為微控制器,linux驅動,DSP等幾大方向, 我們分情況進行講解。
總的來說,學習嵌入式開發,都是需要有C語言程式設計基礎,如果要對程式設計遊刃有餘,還得對結構體,指標有比較清晰認識和掌握,現在很多韌體,demo都常用結構體和指標。所以這點專業知識非常重要。
除此之外,還多、少都需要掌握一定的硬體的專業知識,對硬體理論有一定的熟悉。因為經常在除錯過程中,經常為了除錯BUG,需要用萬用表,示波器測試相關引腳的輸入輸出電平。這對除錯軟體非常有幫助。也是必須要掌握的。
差異點分開說:微控制器,常見STC/AT 51核心微控制器,Cotex-M3核心的STM32等微控制器,
DSP傾向於電機控制和演算法,常見TMS32F2812系列,
linux驅動,會對linux作業系統熟悉,對於shell,makefile,linux檔案系統等熟練掌握。
嵌入式發展方向網上說的嵌入式發展方向其實都大同小異,其實也基本正確,但目的是為了讓自己能夠在專業技能上獨當一面,成為技術專家,和專案高手,再或者希望走管理路線的工程師還可以轉研發管理。都亦無不可,不過這裡強調的是,在做選擇前,請根據自己的真實情況,公司或者部門現狀,認真清楚的分析。任何一次選擇,都非常重要。
想做好嵌入式軟體開發,除了掌握專業知識外,還需要熟悉各類外設介面,uart串列埠,IIC,SPI,等等,還需要學會總結經驗,每次程式設計畫軟體流程圖,總結程式設計思路,形成屬於自己的程式設計習慣和方法。做開發,既有趣又枯燥,要真正熱愛和感興趣,才能長久做下去,否則堅持不了幾年,就會轉行。所以,興趣和愛好才是第一要素。
-
7 # 墨陽莫楊
設計上的問題不用急於求成,很多都是因為業務變更自然而然學會的。
特別是你在重構的時候,如果你不清楚之前的問題,你就不知道好的設計到底好在哪裡。
例如,工廠方法模式,如果我們每次建立物件都需要去修改建立的方法,寫一堆 if else,你就不會想到開閉原則的好處,擴充套件會如此方便。
設計模式等很多都是軟體工程的研究領域,和具體的語言框架無關,語言的框架其實也是設計模式的應用。如果你使用現成的開發框架,基本上只要按照它給定的模式開發即可,不用太多涉及設計的部分,最好的實踐就是,自己從頭寫一個框架。
我之前學習的時候就寫過,不用很複雜,不用考慮太細。一點一點慢慢改進,不斷重構,當你自己從頭寫一個 Web 框架,實現了路由分發、請求響應、中介軟體、資料庫連線等等,你就會不斷應用已學過的工廠、生成器、代理、介面卡等等設計模式去改進了。
最後我想說的是,開發一個系統/軟體,寫程式碼只是其中的一部分工作,不要一上來就開始 coding,先思考、設計,可以畫畫 UML 圖,理清活動狀態轉移的關係,類之間的聯絡等等。後面就編碼如有神了。
想在這裡和大家討論一下各自的看法,探索一下軟體設計工作如何才能做好,以及未來的發展方向等,歡迎加入討論,給出你的觀點,謝謝!
回覆列表
一個具有幾年嵌入式開發經驗的設計人員來回答一下這個問題,也對自己的工作做一個小總結,個人認為,從事嵌入式底層工作要學習晶片體系結構、介面和匯流排技術以及作業系統相關的知識,在學習的基礎上多練習,參與專案,並多思考和總結,經過專案的鍛鍊,一步步對軟體設計有更完整和深入的理解,從而做好相關的設計工作,下面我從晶片體系結構、介面和匯流排以及作業系統三個方面詳細總結一下:
第一,晶片體系結構
做底層軟體的設計,肯定離不開啟動程式碼相關的程式設計,學習體系結構比如ARM、PPC、MIPS和DSP等等,理解它們核心特點,指令集和晶片結構等知識,對於底層啟動程式碼設計有很大的幫助,比如Cache、MMU和中斷系統相關的程式設計,深入學習體系結構的知識,才能做好更深入的底層軟體設計工作。
第二,介面和匯流排技術
如果說體系結構的知識是深入學習底層軟體設計的前提,那麼介面和各種匯流排的知識應該是底層軟體的基礎知識了,比如常見的低速序列匯流排:I2C、SPI、UART和CAN匯流排,並口,比如ARM的GPMC或者PPC的Local Bus或是DSP的EMIF匯流排等,高速一點的匯流排比如:乙太網、PCIE和RapidIO等。做好底層的軟體需要學習和了解它們的協議組成和工作機制,去思考一下它們工作的原理和具體晶片下的實現方式,這樣才能讓軟體的每一步設計合情合理,提高工作效率。另外介面晶片,常用的Norflash、NAND、DDR、EEPROM、LCD、鍵盤介面和各種交換機晶片等等,這些常用外設介面晶片的工作原理也要弄清楚一些,這樣設計的驅動軟體每一個細節才會更合理,工作效率更高。
第三,作業系統知識
現在的嵌入式軟體設計大多數都要跑一個作業系統,最常見的手機的安卓,或者各種Linux,實時性要求高一些的比如VxWorks,如果晶片資源有限,沒有MMU之類的,可以考慮Ucos-II、FreeRTOS和RT-thread等輕型作業系統。總之做好嵌入式底層,還需要知道這些系統大致的工作原理和特點,可以擅長其中的某一個系統配合某一個晶片平臺,但對於作業系統原理還是要知道的,甚至做好了可以學習一下它們的原始碼,因為本身系統也是一個軟體,學習一下它們的結構框架,設計思想,對於自己的軟體設計也大有幫助。
關於如何做好軟體設計
個人認為沒有捷徑可以走,做好設計需要大量的實踐環節,多參與專案的鍛鍊,在這期間多思考,多總結,多學習,逐步提高自己的認識和設計水平。
總結起來,嵌入式底層軟體設計需要學習晶片體系結構、介面和匯流排原理以及作業系統相關知識,不斷參與專案,多思考總結,提高自己的設計能力,從而做好軟體的設計。