windowsce編程
1. 計算機程序設計有哪些經典必讀書籍
1、Java
Java編程語言銷攜(第三版)---Java四大名著----JamesGosling(Java之父)
Java編程思想(第2版)----Java四大名毀搭著----BruceEckel
Java編程思想(第3版)----Java四大名著----------------BruceEckel
JAVA2核心技術卷I:基礎知識(原書第7版)---Java四大名著-----CayHorstmann
JAVA2核心技術卷II:高級特性(原書第7版)----Java四大名著-----CayHorstmann
EffectiveJava中文版------Java四大名著--------JoshuaBloch
精通Struts:基於MVC的JavaWeb設計與纖斗拿開發---孫衛琴
精通Hibernate:Java對象持久化技術詳解---孫衛琴
Tomcat與JavaWeb開發技術詳解------------孫衛琴
Java與模式------------------------------閻宏
2、C#
C#程序設計-------CharlesPetzold「windows編程泰山北斗」---C#語言「倚天屠龍雙劍」
C#Primer中文版--------StanleyB.Lippman---C#語言「倚天屠龍雙劍」
.NET框架程序設計(修訂版)--------JeffreyRichter「windows編程泰山北斗」---.NET平台四大天王
c#Windows程序設計----------CharlesPetzold「windows編程泰山北斗」------.NET平台四大天王
.NET程序設計技術內幕-------------JeffProsise---.NET平台四大天王
.NET本質論--第1卷:公共語言運行庫(中文版)--------ChrisSells---.NET平台四大天王
3、C++
C++程序設計語言(特別版)---c++八大金剛----BjarneStroustrup「C++之父」
C++Primer(第3版)中文版----c++八大金剛---StanleyB.Lippman
C++Primer(第4版)中文版----c++八大金剛---StanleyB.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--NicolaiM.Josuttis
C++語言的設計和演化-----c++八大金剛----BjarneStroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----StanleyB.Lippman
EssentialC++中文版---c++八大金剛---StanleyB.Lippman
EffectiveC++中文版2ndEdition-----c++八大金剛------ScottMeyers
MoreEffectiveC++中文版----c++八大金剛------ScottMeyers
C++編程思想(第2版)第1卷:標准C++導引--------BruceEckel
C++編程思想(第2版)第2卷:實用編程技術--------BruceEckel
C++程序設計--------------------------譚浩強
C++程序設計教程(第2版)--------------錢能
C++PrimerPlus(第五版)中文版---StephenPrata
廣博如四庫全書Thec++programminglanguage、c++Primer
深奧如山重水復Insidethec++objectmodel
程序庫大全Thec++standardlibray
工程經驗之積累Effectivec++、MoreEffectivec++、Exceptionalc++
C++八大金剛:
1、Essentitalc++---lippman---C++之父,旁枝暫略,主攻核心,輕薄短小,初學者
2、Thec++programminglanguage----C++之父,技術權威,用詞深峻,思想深遠,c++網路全書代表,聖經。
3、c++Primer----lippman---縱橫書市十數年,c++最佳教本,c++網路全書代表。
4、Insidethec++objectmodel-----lippman----揭示c++底層,非常好,非常難。
5、Effectivec++-----通過50個編程實例,展示專家經驗,行文有趣,深處淺出。
6、MoreEffectivec++----通過35個編程實例,展示專家經驗,行文有趣,深處淺出。
7、Thec++standardlibray---c++標准庫的網路全書。
8、設計模式:可復用面向對象軟體的基礎------good!
4、C語言
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---BrianW.Kernighan「C語言之父」
CPrimerPlus中文版(第五版)--------C語言「倚天屠龍雙劍」---StephenPrata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERTSCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVIDR.HANSON
C語言參考手冊(原書第5版)--------------------------SamuelP.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------AndrewKoenig
5、VB
VisualBasic.NET技術內幕-----VB編程三劍客-----------FrancescoBalena「vb首席大師」
Windows程序設計-VisualBasic.NET語言描述--VB編程三劍客-----CharlesPetzold「windows編程泰山北斗」---
.NET框架程序設計:VisualBasic.NET語言描述--VB編程三劍客--JeffreyRichter「windows編程泰山北斗」---,FrancescoBalena「vb首席大師」
VisualBasic6編程技術大全------------------------FrancescoBalena「vb首席大師」
VisualBasic.NET從入門到精通-------------------------Petroutsos,E.
高級VISUALBASIC編程-----------------------------------MATTHEWCURLAND
6、Delphi
InsideVCL(深入核心——VCL架構剖析)----------李維
Delphi7高效資料庫程序設計--------------李維
面向對象開發實踐之路(Delphi版)----------李維
7、VC
Windows程序設計(第5版)-----CharlesPetzold「windows編程泰山北斗」---
Windows核心編程----------JeffreyRichter「windows編程泰山北斗」---
Windows高級編程指南---------JeffreyRichter「windows編程泰山北斗」---
深入淺出MFC(第二版)-----「MFC四大天王」-------侯捷
MFCWindows程序設計(第2版)---MFC四大天王」---------JeffProsise
VisualC++技術內幕(第4版)--MFC四大天王」--------DavidKruglinski
深入解析MFC-------------MFC四大天王」-----------GeorgeShepherd
VisualC++.NET技術內幕(第6版)-MFC四大天王」------------DavidKruglinski
8、VF
VisualFoxpro程序設計參考手冊-------------------張洪舉
專家門診——VisualFoxPro開發答疑160問-------------------張洪舉
VisualFoxPro6.0/9.0解決方案與範例大全-------------------張洪舉
VisualFoxPro軟體開發模式與應用案例-------------------張洪舉
9、黑客
應用密碼學(協議演算法與C源程序-----------BruceSchneier
網路信息安全的真相-----------BruceSchneier
黑客大曝光:網路安全機密與解決方案(第5版)--------STUARTMCCLURE
軟體加密技術內幕------------看雪學院
加密與解密——軟體保護技術與完全解決方案------------看雪學院
加密與解密(第二版)--------段鋼
10、匯編
Intel微處理器結構、編程與介面(第六版)---------BarryB.Brey
80*86、奔騰機匯編語言程序設計---------BarryB.Brey
Windows環境下32位匯編語言程序設計(第2版)-----------羅雲彬
IBM-PC匯編語言程序設計(第2版)本書是國內優秀教材--------沈美明溫冬嬋
IBMPC匯編語言程序設計(第五版)這本書籍是國外優秀教材-------PETERABEL著,沈美明溫冬蟬譯
11、驅動開發
WindowsWDM設備驅動程序開發指南------------------------------------ChrisCant
Windows2000/XPWDM設備驅動程序開發(第2版)--------------------------武安河
WINDOWS2000/XPWDM設備驅動程序開發--------------------------------武安河
12、網路
計算機網路第四版中文版----網路編程三劍客--------------AndrewS.Tanenbaum
TCP/IP詳解3卷本--------------------RichardStevens----網路編程三劍客
UNIX網路編程2卷本--------------------RichardStevens----網路編程三劍客
用TCP/IP進行網際互聯-----------DouglasE.Comer
高級TCP/IP編程-------------------JonC.Snader
C++網路編程-----------------------DouglasSchmidt
UNIX環境高級編程(第2版)--------------------RichardStevens
13、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------ThomasH.Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------KennethH.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
14、圖形編程
Windows圖形編程----------------FENGYUAN--圖形編程界的CharlesPetzold之書
15、數據結構
數據結構C++語言描述》58.00(DataStructuresC++)WilliamFord,WilliamTopp劉衛東沈官林
數據結構演算法與應用-C++語言描述》49.00SartejSahni汪詩林孫曉東等機械工業出版社
16、軟體工程
設計模式--可復用面向對象軟體的基礎
重構—改善既有代碼的設計
17、操作系統
深入理解計算機系統(修訂版)-------RANDALE.BRYANT
18、Unix
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX編程藝術
UNIX環境高級編程(英文影印第2版-----UNIX編程「聖經
UNIX環境高級編程(英文影印版)(第2版)
99-UNIX環境高級編程(第2版)
UNIX環境高級編程(第2版)---UNIX編程「聖經
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX編程環境
UNIX網路編程卷I套接字聯網API(英文版第三版
UNIX系統編程
UNIX環境高級編程
UNIX環境高級編程(英文影印版
88-linux內核分析及編程
UNIX網路編程卷I套接字聯網API(英文版第三版)
UNIX網路編程第1卷:套介面API(第3版)
UNIX網路編程(第二版)第2卷:進程間通信
UNIX網路編程卷2:進程間通信(第2版)(英文影印版)
UNIX網路編程(第2版)第1卷:套介面API和X/Open傳輸介面API
UNIX網路編程(卷1):連網的APLS:套接字與XTI(第二版)(英文影印版)
UNIX環境高級編程
UNIX環境高級編程(英文版)
UNIX環境高級編程(第2版)
Unix技術手冊
19、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程
GNU/Linux編程指南(第二版)
Linux設備驅動程序(第三版)
嵌入式設計及Linux驅動開發指南——基於ARM9處理器
Linux設備驅動程序第三版(英文影印版)
Linux內核設計與實現(第2版)
Linux內核設計與實現(英文影印版)(第2版)
linux技術手冊
20、游戲編程
Windows游戲編程大師技巧(第二版
游戲之旅--我的編程感悟
OpenGL超級寶典:第三版
OpenGL編程指南(第四版)
Java游戲高級編程
J2ME手機游戲編程入門
游戲之旅——我的編程感悟
游戲開發中的人工智慧(英文影印版)
3D游戲:卷2動畫與高級實時渲染技術
面向對象的游戲開發
Java游戲高級編程
3D游戲編程大師技巧
游戲編程精粹
面向對象的游戲開發
3D游戲卷1:實時渲染與軟體技術
3D游戲:卷2動畫與高級實時渲染技
J2ME手機游戲編程入門
Direct3D游戲編程入門教程(第二版
21、移動開發
WindowsMobile手機應用開發
SYMBIANOSC++手機應用開發
68-WindowsMobile手機應用開發--傅曦齊宇徐駿
48-SYMBIANOSC++手機應用開發(第2卷)------------------RICHARDHARRISON著,周良忠王伯欣譯
68-SYMBIANOSC++手機應用開發---------------RICHARDHARRISON著,周良忠譯
WindowsCE.net內核定製及應用程序開發---------周毓林寧楊陸貴強付林林
嵌入式系統WindowsCE開發技巧與實例--傅曦
PalmOS編程實踐---絕版
22、單片機
單片機輕松入門----------------------------------周堅(平凡老師)
單片機典型模塊設計實例導航-----------------------求是科技
例說8051----------------------------------------張義和陳敵北
KEILCX51V7.0單片機高級語言編程與ΜVISION2應用實踐-----徐愛鈞
單片機應用程序設計技術(修訂版)--------------------周航慈
8051單片機實踐與應用-------------------------------吳金戎
MCS-51系列單片機實用介面技術---------------------李華
23、串並口通訊
VisualC++/TurboC串口通信編程實踐------------------龔建偉
VISUALBASIC與RS-232串列通信控制(最新版)----------范逸之
24、電子
無線電識圖與電路故障分析輕松入門(第二版)-------------------胡斌
無線電元器件檢測與修理技術輕松入門(第二版)-------------------胡斌
圖表細說電子技術識圖-------------------胡斌
圖表細說電子元器件-------------------胡斌
圖表細說元器件及實用電路-------------------胡
2. 嵌入式操作系統的分類
嵌入式操作系統的分類 篇1
第一類、傳統的經典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系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在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領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。
第三類、WindowsCE嵌入式操作系統:
Microsoft也看準了嵌入式的巨大市場,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCEPlatformBuilder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以學習Windows程序設計課程不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MSPocketPC操作系統專用於PDA上(掌上電腦),另一個是MSSmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有PalmOS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?據觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多。嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。
嵌入式操作系統的分類 篇2
目前我國已推出一些應用比較成功的EOS產品系列。隨著Internet技術的發展、信息家電的普及應用及EOS的微型化和專業化,EOS開始從單一的弱功能向高專業化的強功能方向發展。嵌人式操作系統在系統實時高效性、硬體的相關依賴性、軟體固態化以及應用的專用性等方面具有較為突出的特點。EOS是相對於一般操作系統而言的,它除了是具備了一般的操作系統最基本的功能,比如:任務調度、同步機制、中斷處理、文件功能之外的話,它還含有以下的特針:
(1)可裝卸性:開放性、可伸縮性的體系結構。
(2)強實時性:EOS實時性一般較強,可用於各種設備控制當中。
(3)統一的介面:提供各種設備驅動接入。
(4)操作方便、簡單、提供友好的圖形GUI,圖形界面,追求易學易用。
(5)提供強大的網路功能,支持TCP/IP協議及其它協議,提供TCP/UDP/IP/PPP協議支持及統一的MAC訪問層介面,為各種移動計算設備預留介面。
(6)強穩定性,弱交互性:嵌入式系統一旦開始運行就不需要用戶過多的干預,這就要負責系統管理的EOS臭有較強的穩定性。嵌入式操作系統的用戶接日一般不提供操作命令,它通過系統調用命令向用戶程序提供服務。
(7)固化代碼:在嵌入系統中,嵌入式操作系統和應用軟體被固化在嵌入式系統計算機的ROM中。輔助存儲器在嵌入式系統中很少使用,因此,嵌入式操作系統的文件管理功能應該能夠很容易地拆卸,而用各種內存文件系統。
(8)更好的硬體適應性,也就是良好的移植性。
國際上用於信息電器的嵌入式操作系統有40種左右。現在,市場上非常流行的EOS產品,包括3Corn公司下屬子公司的PalmOS,全球佔有份額達50%,Microsoft公司的WindowsCE不過29%。在美國市場,PalmOS更以80%的佔有率遠超WindowsCE.開放源代碼的Linux很適於做信息家電的開發。
然而我們常見的嵌入式系統有:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、CExecutive.嵌入式操作系統的發展也必將帶動新一輪的科技競爭。
嵌入式操作系統的分類 篇3
常見的嵌入式系統有這么多:
Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、CExecutive、autosar......
什麼是嵌入式操作系統?
嵌入式操作系統是一種支持嵌入式系統應用的操作系統軟體,它是嵌入式系統的重要組成部分。嵌入時操作系統具有通用操作系統的基本特點,能夠有效管理復雜的系統資源,並且把硬體虛擬化。
從應用角度可分為通用型嵌入式操作系統和專用型嵌入式操作系統。常見的通用型嵌入式操作系統有Linux、VxWorks、WindowsCE.net等。常用的專用型嵌入式操作系統有SmartPhone、PocketPC、Symbian等。
按實時性可分為兩類:
實時嵌入式操作系統主要面向控制、通信等領域。如WindRiver公司的VxWorks、ISI的pSOS、QNX系統軟體公司的QNX、ATI的Nucleus,很多汽車電子行業都是利用實時性很強的操作系統等。
非實時嵌入式操作系統主要面向消費類電子產品。這類產品包括PDA、行動電話、機頂盒、電子書、WebPhone等。如微軟面向手機應用的SmartPhone操作系統。
嵌入式系統的設計和實現而言,基本上需要四種不同的工作:系統設計工作,硬體設計工作,驅動程序和操作系統移植工作和應用程序設計開發工作。
1、 系統設計工作
在系統的設計階段,系統分析師將根據需求確定系統的硬體的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟體開發工具。系統分析師往往是較為完整的參與過嵌入式系統設計的全過程,對於系統應用的行業較為了解,對於嵌入式系統本身的開發流程十分清楚的人。
2、硬體設計工作
系統硬體設計人員需要根據系統分析師的設計結果,進行硬體原理圖的設計。通常需要硬體設計人員熟悉嵌入式系統的硬體構成。硬體設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),乙太網MAC晶元,音頻/視頻編解碼晶元,電源管理晶元,匯流排介面電路(USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網路通信模塊(Bluetooth,WLAN,GPRS)等硬體電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網路上能找到很多公司的評估板的原理圖,對於這些原理圖要仔細研究,摸清處理器同存儲器,網卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統的構成,這些電路同實際產品中的電路雖有一定差別的,特別是對於手持設備,但這些差別不影響初學者學習嵌入式系統的硬體設計基本構成。
1)學習Linux系統安裝、常用命令、應用程序安裝。
2)學習Linux下的C編程、這本書必學《UNIX環境高級編程》、《UNIX網路編程》,RechardStevens寫的,C高手大都學習過《C和指針》、《C缺陷與陷阱》、《高質量C/C++編程指南》、《C專家編程》、《TheCprogrammingLanguage》
3)程序員大都要學:數據結構,嵌入式程序員數據結構必學!
4)底層開發人員大都要學:微機原理、計算機體系結構,嵌入式開發人員必學!
5)單片機可以讓一個從事軟體開發的人了解和如何操作硬體,有必要學,因為一開始就從ARM入手,不太現實!
6)ARM體系結構,其中有匯編。
7)數字電路有必要學習,不然你在做底層開發時真的會不知道怎麼看原理圖,起碼也得懂與或門吧。
8)ARM+Linux應用程序開發。(前提是要有開發板)
9)要做底層開發,就必須知道軟硬體之間是如何銜接和配合工作的,那麼電子技術應該要好好學習了,很多時候會用到模擬電路知識,這是區別好手與菜鳥的不同之處之一。
10)Linux下的匯編要學,這樣你才能真正了解你寫的程序是如何在一個特定的硬體上跑的。這是區別好手與菜鳥的不同之處之二。
11)TCP/IP協議棧要學,所有的嵌入式高手都得掌握的東西,這是區別好手與菜鳥的不同之處之三。
12)有了這些東西,拿下Linux驅動已經不再話下,需要你去學習Linux內核源代碼和Linux驅動程序設計,這是一個技術升華。
13)音頻、視頻的解碼解碼技術你得學。
14)各種IC,各種bootloader你能夠參與其開發設計。
15)自行設計開發新產品,新技術。
學到這個地步差不多要花個3年的時間吧。但是後面的路該怎麼走呢?嵌入式系統性的東西搞了一個產品之後,基本上一些套路都摸清楚了。
不同的行業,對於系統的要求是不一樣的,比如汽車行業,航空航天行業等一些高精度,高安全的需要對實時性要求非常之高,對於安全性和可靠性的要求非常嚴格。而有些行業比如消費類產品,娛樂類的,生活用具方面的對於用戶體驗是不一樣的,數碼產品對於一些圖像聲音的處理,要求更高,需要高清,高品質的。而對於一些通信設備類對於網路的應答數據傳輸要求就非常嚴格,等等。這些根據不同的要求,選擇符合自己的操作系統,能對開發工作有更大的幫助。
嵌入式操作系統的分類 篇4
DOS
微軟一開始選用了派特森的Q-DOS「QUICKANDDISKOPERATINGSYSTEM」為基礎然後再擴充功能而成MS-DOS,主要是採用由IBM提供的使用8088微處理器的計算機作開發平台,它是以16位元組單人單工操作系統,特別適合一些功能簡單裝置使用。
WindowsCE
雖然微軟Windows系統已經稱霸了PCDesktop環境。但是對於嵌入式系統這塊大餅,微軟也是垂涎已久,桌上型的Windows桌業系統對於嵌入式系統來說自然是太過於肥大的產物,於是微軟推出精簡版的WindowsCE作為進攻嵌入式系統的主力。目前主要應用於PDA上頭,但是跟微軟一系列Windows系統一般,WindowsCE也承襲了原有的缺點:耗系統資源、不穩定、效率不佳等等。毛病實在太多,後來將整個架構重新改寫後推出WindowsCE3.0版,或稱為PocketPC。改版之後的確改進了不少缺點。
WindowsCE可應用於PDA、WebPAD、ThinClient等等。是採用WindowsCE為操作系統的SIMPad(西門子公司所有)。
Palm
由PalmComputing公司的嵌入式操作系統,目前最大的應用在PDA,是市場佔有率最高的PDA操作系統,Palm操作系統架構非常簡潔,因為少去了很多功能,如內存管理、多任務等等,使得Palm可以非常不耗系統資源,硬體需求低,連帶的整體耗電量便可壓縮到非常低,因此採用Palm操作系統的PDA都有待機時間長的優點。
EPOC
由英國手持裝置大廠Psion所開發,常用於PDA與手機結合的場合。最有名的例子Nokia9110系列手機,它就是採用EPOC系統。
著名的嵌入式實時系統
實時系統是嵌入式系統里頭非常重要的一環,很多人都誤以為實時系統執行速度非常快的系統,事實上不然,所謂實時代表的意義是『實時反應』,一般多人多任務操作系統如:Windows、UNIX,在上面執行的軟體都一起分享CPU,因為CPU速度快,所以我們感覺好象可以同時執行多支軟體,其實在系統內部的同一時間內都只有一個程序在執行,每個軟體都必須排隊,而且規定只能用一小段時間後就要換下一位,但是因為CPU速度夠快,很快又可以被執行到,所以人們感覺並不會很明顯軟體是一段一段在執行。這是一般所謂的非實時性的操作系統運作模式,而實時操作系統具有立即反應而且不能讓出資源的特性,例如汽車的ABS煞車系統,如果不採用能夠立即反應的實時系統,後果可就不堪設想。而這類的應用多半多屬體積小、功能簡單的地方,所以也算是嵌入式系統。QNX的QNXOS、WindRiver的VxWorks、Microware的OS9、pSOS等等,都是有名的嵌入式實時系統公司。
Linux
Linux不是都用來做伺服器嗎?不然就是Cluster,怎麼會跟嵌入式系統扯上關系?不要懷疑,Linux除了對伺服工作應付自如外,嵌入式系統也難不倒Linux。
那麼究竟Linux有怎樣獨特的能耐,可以想變大就變大想縮小就縮小?又用Linux來發展嵌入式系統有什麼優點?請看底下介紹。
開放原始碼、模塊化設計
Linux採用GPL授權,除了把原始碼公開以外,任何人都可以自由使用、修改、散布,而Linux核心本身采模塊化設計,讓人很容易增減功能,例如我的平台並不需要藍芽的功能,我只要不把這項功能加入,有需要就加入,不需要就刪除,由於這樣的高的彈性,我們可以調校出最適合我們硬體平台的核心出來。
相較於Linux,Windows是走封閉原始碼路線,所以我們完全無法得知或修改它的核心部份。另外因為是採用GPL授權自然就沒有什麼權利金或保密協議的約束。
穩定性夠
Linux不屬於任何一家公司,但是它的開發人員卻是全世界最多的,每天在全球都有無數的人參與LinuxKernel的改進、除錯、測試,這樣嚴苛的條件造就了穩定度高的Linux。
就因為如此,Linux雖不是商業的產物但是品質卻不遜於商業產品。
網路功能強大
Linux的架構是參造UNIX系統而來,因此Linux也承襲了UNIX強大的網路功能。在這個每樣事情都講求網路的時代下,只能說是Linux大放異彩的年代。未來可能家裡的電冰箱、冷氣、電視機都會連上網路,如何增加這些家電的網路功能,Linux可以替他們辦到。
跨平台
Linux一開始是基於Intel386機器而設計,但是隨著網路的散布,各式各樣的需求涌現,因此就有許多工程師致力於各式平台的移植,造成了Linux可以在x86、MIPS、ARM/StrongARM、PowerPC、Motorola68k、HitachiSH3/SH4、Transmeta..等等平台上運作的盛況。這些平台幾乎涵蓋了所有嵌入式系統所需的CPU,因此選擇Linux就可以把更多的`硬體平台納入考量的范圍。
嵌入式環境不如x86PC那樣單純,嵌入式環境所採用的CPU架構之多,使用Linux作開發,就等於有更多硬體的選擇,硬體成本是商業公司考量的一大重點,選擇多自然可以找到最合適的硬體,對於公司的競爭力是有極大的幫助。
應用軟體眾多
自由軟體世界裡有個很大的特色就是軟體超級多,而且幾乎都是符合GPL標准,換句話說,大家都可以自由取用,因為這些軟體多半是由工程師業余空暇時間所發展,而且不以營利為性質,所以並不能擔保這些軟體完全沒有BUG,但是仍舊有許多殺手級的軟體出現,大家熟知的KDE與GNOME便是很好的證明,當然與嵌入式系統較為相關如:gcc編譯器、Kdevelop整合式開發環境等等。
通常我們都會先在PC端造出模擬出嵌入式的環境,並直接在上頭開發,因此用的工具也都與開發一般Desktop軟體類似,良好的工具能夠增加開發的速度。
選擇多樣
如果公司有能力可以自己實作Linux嵌入式系統,因為程序代碼全部都開放在那裡,您可以隨心所欲的設計出自己想要的EmbeddedLinux系統,但是有更多的公司的業務重點不在於此,這時候您也可以選擇購買商業版的EmbeddedLinux系統,像是有名的Redhat公司、Lineo、MontaVista..等等,這些都是商業的Linux公司,購買他們的產品就可以得到完整的服務。因此商業或非商業全都在於您的需求。
自行開發系統
當然您也可以自行開發系統,嚴格控制硬體,但是相對的必須投注更大的成本在於研發系統上,原則上如果目標簡單明確只是一些基本的I/O控制,例如:跑馬燈。便適合自己開發,但是如果系統過於復雜則必須審慎評估自行研發的難度與時程的控管。
嵌入式操作系統的分類 篇5
進程的同步(直接制約):synchronism
指系統中一些進程需要相互合作,共同完成一項任務。具體說,一個進程運行到某一點時要求另一夥伴進程為它提供消息,在未獲得消息之前,該進程處於等待狀態,獲得消息後被喚醒進入就緒態。同步是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。
進程的互斥(間接制約)mutualexclusion
由於各進程要求共享資源,而有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關系為進程的互斥。某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。
相關概念:
互斥:指多個進程不能同時使用同一個資源;
死鎖:指多個進程互不相讓,都得不到足夠的資源;
飢餓:指一個進程一直得不到資源(其他進程可能輪流佔用資源)
臨界資源:系統中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源或共享變數
臨界區:進程中訪問臨界資源的一段代碼。
臨界區問題
臨界區(criticalsection):進程中訪問臨界資源的一段代碼。
進入區(entrysection):在進入臨界區之前,檢查可否進入臨界區的一段代碼。如果可以進入臨界區,通常設置相應"正在訪問臨界區"標志
退出區(exitsection):用於將"正在訪問臨界區"標志清除。
剩餘區(remaindersection):代碼中的其餘部分。
使用臨界區應遵循的准則
有空讓進:當無進程在臨界區時,任何有權使用臨界區的進程可進入
無空等待:不允許兩個以上的進程同時進入臨界區
多中擇一:當沒有進程在臨界區,而同時有多個進程要求進入臨界區,只能讓其中之一進入臨界區,其他進程必須等待
有限等待:任何進入臨界區的要求應在有限的時間內得到滿足
讓權等待:處於等待狀態的進程應放棄佔用CPU
平等競爭:任何進程無權停止其它進程的運行進程之間相對運行速度無硬性規定
Linux下的進程包含以下幾個關鍵要素:
有一段可執行程序;
有專用的系統堆棧空間;
內核中有它的控制塊(進程式控制制塊),描述進程所佔用的資源,這樣,進程才能接受內核的調度;
具有獨立的存儲空間
進程和線程有時候並不完全區分,而往往根據上下文理解其含義。
嵌入式操作系統的分類 篇6
1、緒論
電控機械式自動變速器(,AMT)具有傳動效率高、成本低、操作容易、駕駛舒適等優點,已成為車輛自動變速器發展的一個重要方向。AMT的核心部件是電控單元(TCU),實時採集和檢測輸入信號(發動機轉速、輸入軸轉速和車速,油門踏板位置、節氣門開度、變速箱油溫等以及各種狀態信號)並進行調理、存儲,同時,TCU根據這些運行參數進行工況判斷並發出控制信號,完成車輛的平穩起步或自動換擋,從而使車輛獲得優良的舒適性、燃油經濟性與動力性能。較之傳統的控制器,TCU有更多的感測器,執行器以及更為復雜的控制演算法,若TCU設計不合理,難以滿足實時性與可靠性的要求,同時,如果換擋規律不合理,汽車難以獲得較好的燃油經濟性和動力性。本文從TCU硬體和軟體設計做了相應的介紹。
2、TCU軟體設計
TCU軟體部分的核心是控制策略,其主要部分是最佳換擋規律。本控制器採用兩種換擋控制策略,即經濟性換擋規律,綜合性換規律,通過模式選擇開關進行切換,使用Simulink搭建的換擋控制策略。
Simulink模型無法直接燒寫到單片機中運行,編寫好的程序通過Simulink提供的RTW工具生成可用的C代碼,編寫介面嵌入到軟體系統中。生成的C代碼是上層核心演算法程序,只提供與底層程序的介面,而底層程序則須自己編寫並留出對應介面和上層代碼對應介面進行連接[3]。然後把相應的C代碼添加到CCS中的工程文件中,並編寫代碼的介面,實現軟體三部分的無縫連接;其中驅動程序包括信號輸入通道設置與信號處理驅動程序、輸出通道設置與輸出處理、通信設置與數據轉換。
3、TCU硬體設計
根據TCU的功能需求,把硬體電路劃分以下幾個部分:信號採集輸入調理電路、執行器控制電路以及主控電路。
(1)主控電路:TCU的硬體電路選擇了TMS320F2812主控晶元,兩個16位通用定時器,以負責離合器轉速信號、車速信號等脈沖信號的採集;8個16位的脈寬調制(PWM)通道、可以實現對離合器電磁閥、換擋電磁閥的控制;16通道A/D轉換器,在採集節氣門位置、離合器位置等感測器輸入的多路模擬信號的應用中,可以簡化硬體,提高系統可靠性;擁有改進的區域網絡(eCAN)支持CAN2.0B協議,以實現串列信號的輸入輸出以及與汽車發動機ECU的信息交換,實現ECU之間的CAN通信。
(2)輸入電路:對於主控晶元TMS320F2812晶元上帶有AD轉換模塊的處理晶元,其輸入的模擬信號需要經過簡單的濾波、放大後才可接入DSP。開關量信號採用光電隔離來實現信號的轉換,數字信號調理部分的作用是將仿正弦信號經過處理後,變成電平范圍在DSP允許范圍內的方波信號。數字信號調理部分的設計採用先濾波後整形,最後光電隔離的辦法。
(3)TMS320F2812主控晶元EV外設提供的PWM外設功能,對電路進行控制,但,由控制器輸出的PWM波的峰值電壓只有5V,不足以驅動電磁閥,這就需要電磁閥驅動電路將PWM控制信號的功率進行放大,從而控制電磁閥正常工作。
4、結論
自行設計了TCU軟硬體,對設計的TCU做了相應的硬體在環試驗,利用RealTimeWorkshop實現控制模型向C代碼的轉化,優化後下載到TCU,進行了硬體在環模擬實驗,篇幅有限,本文不做具體說明。試驗結果表明,設計的該TCU,能按照控制策略實時、准確、可靠的控制AMT的換擋過程,同時,同時獲得了較好的經濟性以及動力性能。為AMT控制器的開發提供了參考。
3. 如何學習嵌入式
作者:匿名用戶
鏈接:https://www.hu.com/question/19688487/answer/32217959
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
學習嵌入式系統,首先應該明確什麼是嵌入式系統,否則費力去學,卻不知所學為何物,豈不惘然?嵌入式系統的定義很多,這也是困擾嵌入式系統學習的一個因素。筆者根據自己開發和教學過程中的理解,以及對各種嵌入式系統的應用進行總結,提出了嵌入式系統的簡單定義:嵌入式系統是嵌入式計算機系統的簡稱,這個定義突出嵌入式計算機系統和普通計算機系統的共性。下表列出了嵌入式系統的一些典型的應用:
智能機器人(S D R 4,火星登陸車)
娛樂和消費電子(Gameboy Advance,SonyPSP)
網路通信產品(Smartphone)
軍用設備(軍用PDA )
汽車(車載導航,自動駕駛,娛樂系統)
智能儀器(虛擬儀器)
安全防護(防火,防盜)
環境保護(探空氣球)
銀行和商業消費(ATM)
以火星登陸車為例來分析一下嵌入式系統的定義。火星登陸車雖然聽起來感覺在技術上有些高不可測,但是本質就是嵌入式計算機系統的應用,其核心就是一個計算機系統,而這個計算機系統的組成同傳統的計算機系統在本質上沒有什麼差別。兩者的顯著不同之處就在於,用於火星登陸車的計算機系統被安裝到了火星登陸車上。當然,一個計算機系統能夠被安裝在火星登陸車上,是需要進行很多特殊設計的。但是從本質上講,嵌入式系統的核心概念還在計算機系統。嵌入式系統學習的重點也在計算機系統上。一方面,學習者需要牢固掌握計算機系統本身的概念,更重要的是學習嵌入系統的開發過程同傳統計算機系統開發過程的差別。這里需要指出的是,很多學習者本來就沒有從事過完整計算機系統的開發,高校的教學是以程序設計為中心的,計算機系統的構成,操作系統的原理,編程語言等課程都是為了能夠讓學生更好的使用計算機系統進行程序設計,在現有的計算平台上來設計實現各種應用,學生一般沒有機會學習一個完整的計算機系統是如何構建,並親身參與到構建的每一個過程。而對於嵌入式系統而言,從事平台開發的人就是要親自去開發出一個完整的計算機系統,這個過程包括
1. 需求分析
2 硬體設計
3 驅動程序
4 Bootloader & BSP (板級支持包)
5 操作系統的移植
6 應用程序的開發
7 性能檢查
嵌入式系統教學的目的就是教會學生如何根據需求去建立滿足某種特殊行業需求的嵌入式計算機系統。讓學生學會如何構件硬體平台,進行硬體設計,選擇能夠滿足應用要求的最佳的嵌入式操作系統,並完成Bootloader,BSP和驅動程序的編寫,移植,調試等過程。為了滿足行業需求,最終要在所建立的系統上編寫調試相應的應用程序,並進行性能的測試和檢查。
你是誰,你需要學習哪些東西?
如果你的工作只是需要在PC 機上編寫一個圖片瀏覽程序,那麼你就沒有必要去了解當系統收到一個ARP請求包後應該如何回應。同樣的道理,嵌入式系統的學習也是有很多方面的。就嵌入式系統的設計和實現而言,基本上需要四種不同的工作:系統設計工作,硬體設計工作,驅動程序和操作系統移植工作和應用程序設計開發工作。
1.系統設計工作
在系統的設計階段,系統分析師將根據需求確定系統的硬體的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟體開發工具。系統分析師往往是較為完整的參與過嵌入式系統設計的全過程,對於系統應用的行業較為了解,對於嵌入式系統本身的開發流程十分清楚的人。
2.硬體設計工作
系統硬體設計人員需要根據系統分析師的設計結果,進行硬體原理圖的設計。通常需要硬體設計人員熟悉嵌入式系統的硬體構成。硬體設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),乙太網MAC晶元,音頻/視頻編解碼晶元,電源管理晶元,匯流排介面電路 (USB,PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網路通信模塊(Bluetooth,WLAN,GPRS)等硬體電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網路上能找到很多公司的評估板的原理圖,對於這些原理圖要仔細研究,摸清處理器同存儲器,網卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統的構成,這些電路同實際產品中的電路雖有一定差別的,特別是對於手持設備,但這些差別不影響初學者學習嵌入式系統的硬體設計基本構成。
以上這些知識,往往需要較長時間的學習和積累,需要親自參與實踐的機會。對於剛剛接觸嵌入式系統硬體開發的學生來講,一般不可能全部了解這些知識,但也不會是通通一無所知。筆者結合自己開發和教學的經驗認為:首先應該選定一款主流且較為簡單的嵌入式系統處理器,比如基於ARM7TDMI 內核的AT91M40800,S3C44B0 等嵌入式系統處理器,學習32 位RISC處理器的編程模型,指令集。高校教學中,單片計算機課程一般以8051系列單片為核心講解,由於現代32位處理器的結構和開發方式同8位單片機有著較大的差別,學習者還是需要花一點力氣來研究以下32位處理器的。以ARM處理器為例,學習者就需要理解處理器的多種工作模式,備份寄存器,RISC 指令集的特點,MMU 和虛擬地址,中斷處理過程等內容。在學習指令集的過程中,最好能夠每學習幾條指令,就使用這幾條指令在模擬器上實驗以下,觀察處理器執行的結果。這個過程一方面是學習者對於指令本身的學習能夠取得一個比較好的效果,另外也是對開發工具本身的一種學習。接著,就可以開始學習片上資源的使用和配置方法。這時就需要一個方便使用的開發板,學習者能夠通過JTAG模擬器將開發板同調試PC機相連,進行程序的下載,調試。特別是要仔細研究系統的初始化過程和中斷處理的過程。在開發過程中如果遇到問題,應自己分析問題產生的原因,通過分析縮小問題可能產生的范圍,最終找到問題的所在。最重要的就是要保持一種解決問題的信心,面對困難如何處理,往往能夠決定最終系統是否能夠調試成功。然後,學習者可以開始仔細學習處理器同存儲器的連接,存儲空間的配置,各種外擴器件,如網卡,AC97音效卡的工作原理和使用方法。嵌入式系統硬體設計中往往需要使用可編程器件,學習者還需要一定的時間來學習使用常用的可編程器件(CP L D / F P G A),常用的有Xilinx和Altera公司的產品。進行系統硬體原理圖設計,就需要使用原理圖設計的EDA工具,常用的EDA 原理圖設計工具主要包括Cadence公司的Capture,Protel公司的Protel99SE等。接下來就可以參照評估板的電路圖,根據系統的設計要求,開始進行原理圖的繪制了。在原理圖繪制過程中,一定要搞清評估板電路連接的原因,對於一時沒有搞清楚的問題切不可矇混過關。例如,有些處理器的地址線是以位元組位單位的,而另一些處理器的地址線則是以兩個位元組為單位的,當連接16位的存儲器的時候,切不可想當然的把處理器的A 0 直接連接到存儲器的A 0 上面。另外,學生還應具有一定的PCB板圖繪制能力,因為在現階段,很多公司還不能完全把原理圖的設計工作和PCB 的繪制工作分開,往往要求硬體設計人員既能進行原理圖設計又能進行板圖設計。即使是PCB設計和原理圖設計分開的公司,也需要原理圖設計者能為PCB 的設計者對於不同的信號提出布板要求。
3.驅動程序和操作系統移植工作
現代嵌入式系統的開發同傳統8位單片機系統的開發相比,一個顯著的區別就是嵌入式操作系統的廣泛使用。在拿到焊接完畢的電路板,並進行基本的測試後,就要進行驅動程序和操作系統的移植工作了。首先要進行的Bootloader的編寫和移植工作。Bootloader相當於PC系統的BIOS。對於有些嵌入式操作系統,如uc/OSII沒有bootloader同樣可以開發調試。但是對於WindowsCE和嵌入式linux系統而言Bootloader就是必須的了。本文以Windows CE 為例,做一個簡要的說明。
Windows CE 系統的移植工作主要就是BSP(板級支持包)的開發過程。BSP將具體的硬體差異同操作系統的核心隔離開來,主要由Bootloaer ,OAL(OEMAbstraction Layer)和設備驅動程序三部分組成。WindowsCE系統中Bootloader叫做Eboot。Eboot被寫入系統的引導Flash。系統啟動時運行Eboot,完成通過網卡將調試PC 機中WindowsCE 操作系統映像下載到目標系統的SDRAM中並開始執行的功能。對於一個系統移植人員,首先需要閱讀文檔,了解WindowsCE系統Bootloader和BSP的基本概念和開發過程。(呵,還要做這工作啊,我還沒想到(初學^_^))Windows CE的開發系統Platform Builder提供了詳細的文檔和常式,開發人員需要仔細的閱讀文檔和常式。搞清楚各個函數之間的調用關系。在開發過程中的一個重要的步驟就是打通串口,使得目標板能夠通過PC機串口向調試PC 機發送數據。由於ARM系統的模擬器比較昂貴,而且操作系統的調試往往不使用JTAG調試器進行單步調試。所以能從串口觀察程序的執行過程和結果對於調試就顯得十分重要了。串口打通之後一個比較棘手的問題就是網卡晶元的調試。剛剛接觸嵌入式系統開發的人往往沒有直接在寄存器級上使用網卡晶元的經驗,而網卡晶元的說明一般都較為簡短,這就要求開發者學習一些乙太網的基礎知識,對乙太網的MAC 層有一個基本的認識。另外,各種網路調試(抓包)工具的使用也能大大降低系統調試的難度。系統的OAL需要根據具體硬體的不同做出相應的修改,這個部分可參照文檔進行,在調試過程中根據串口的信息分析出錯的地方。要充分發揮跨文件字元串搜索工具的功能,在浩如煙海的源文件中找到出錯的位置。當然,隨著開發者對系統文件目錄結構的熟悉和了解,錯誤定位的速度會不斷加快。WindowsCE 的驅動程序相對而言是比較好寫的。
4.應用程序的開發
嵌入式系統的應用程序開發同在PC 機上開發應用程序的區別不是很大。對於Windows CE系統而言,Microsoft已經提供了較為完善的開發工具。特別是.NET Compact work的使用,使得基於Windows CE.NETCompactwork的應用程序有了跨平台性。開發人員可以使用Windows 的C# 語言直接在PC 上進行http://CE.NET應用程序的開發和模擬調試,也可將目標系統同PC 機相連,進行聯機調試。現在有很多系統支持J2ME(JAVA的嵌入式系統版本) ,這使得JAVA 在嵌入式系統應用開發中佔有較大的優勢。另外,作為專業的嵌入式系統軟體開發人員,還需要充分了解面向對象技術和設計模式等方面的知識,當然作為初學者可以先不深入研究這方面的內容。
常用嵌入式系統處理器和操作系統
處理器
常用嵌入式系統處理器主要包括ARM 處理器,Power PC 處理器,基於MIPS 內核的嵌入式處理器,軟核處理器(如Altera 的Nios和Xilinx的MicroBlaze等)和DSP(數字信號處理器)等。
ARM 處理器的主要特點是具有較高的性能功耗比。ARM處理器被廣泛的應用在手機,PDA等領域,其中較為著名的有Intel 公司生產的基於ARM 內核的XScale系列處理器。由於所有公司生產的基於ARM內核的處理器具有相同的編程模型,在手持和電池供電的系統中,基於ARM的嵌入式系統處理器往往被首先選用。PowerPC(簡稱PPC)處理器具有較強的運算性能和數據吞吐能力,在網路和數據通信領域基於PPC的嵌入式系統處理器有著廣泛的應用。其中Motorola公司生產的MPC860/MPC8260被大量地應用在嵌入式網路產品中。MIPS 處理器的特點表現在十分強大的處理能力上。作為高性能處理器,MIPS處理器適用於網路、企業及高級消費類電子應用,特別是在機頂盒系統中,MIPS處理器具有較高的市場佔有率。隨著可編程器件的規模不斷擴大,使得人們能夠根據需要定製處理器,並方便的將針對某種特殊應用定製的處理器方便的在可編程器件內部實現。除了處理器外,計算機系統還需要許多其他構成部分,比如在多通道媒體數據處理系統中,經常需要使用可編程器件來實現高速的數據處理功能,使用軟核DSP來實現復雜的數字信號處理演算法,同時還需要處理器進行事務處理,軟核處理器將可編程器件,DSP同處理器結合在一起,為系統級設計提供了極大的靈活性。DSP(數字信號處理器)有別於通用處理器,集中表現在其強大的數字信號處理能力上。在DSP 內部提供了硬體乘累加器,處理器在設計上對於特殊的定址方式做了優化,一些DSP 還支持零耗循環(Zero OverheadLoop)。為了方便嵌入式系統設計,主流DSP 一般也都提供了豐富的外設。特別值得一提的是ADI 公司的Blackfin 系列DSP和TI 公司的DM64X系列DSP,兩種處理器都提供了豐富的片上外設,非常適用嵌入式系統應用。
操作系統
http://WindowCE.NET/5.0
作為Microsoft的產品,WindowCE.NE/5.0提供了功能完備的平台開發工具Platform Builder和應用開發工具Embedded Visual C++/Visual Studio 2003。WindowsCE由於擁有廣大使用者所熟悉的windows界面,系統提供了眾多驅動程序,並且有完備的文檔支持。對於應用開發而言,熟悉Windows系統開發的程序員很容易轉到WindowsCE 應用程序的開發。Windows CE將會是一個非常有前途的嵌入式操作系統。
VxWorks
VxWorks是由Windriver(風河)公司出品的嵌入式實時操作系統,大名鼎鼎的火星登陸車就是使用了VxWorks。Windriver為VxWorks提供了集成開發環境tornado。
υC/OSII
υC/OS是由Jean Labrosse設計編寫的開放源代碼的嵌入式實時操作系統,筆者最早接觸的嵌入式操作系統就是它。閱讀並深入理解υC/OS的源代碼對於理解實時系統是大有裨益的。
ARM Linux
ARM linux是由Russell King和其他開發者開發移植的用於ARM 處理器的linux操作系統。ARM Linux系統在GNU GPL下發布。
υCLinux
υClinux 是適用於沒有MMU 的嵌入式處理的LinuxOS 版本。υ Clinux 同樣在GNU GPL發布。
嵌入式系統開發過程中的常見問題和解決方法
Bootloader如何寫入Flash ?
初學者一般都會遇到如何將程序寫入處理器的問題。對於不同的處理器,可以採用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對於具有JTAG調試工具軟體的處理器,可以使用如下思路:編寫一段程序,這段程序能將位於SDRAM/SRAM 固定地址中的數據寫入Flash中。燒寫時,首先,將這段軟體下載到SDRAM 中,然後通過調試軟體將要寫入Flash的數據下載到SDRAM/SRAM的某個固定地址開始的緩沖區,然後通過調試器開始執行程序,將數據寫入Flash。除此以外,網路上還提供了很多專用的寫Flash的工具,開發者可以根據自己的需要選用。(現在明白了我在學的那個BF533為什麼先下個flashProgramer.dxe先了)
什麼是arm-elf-gcc?
arm-elf-gcc是一個交叉C語言編譯器。我們在PC平台下編譯程序,編譯器運行的處理器同生成的代碼將要運行的處理器相同。但是,在PC
機上編譯ARM程序時,編譯器運行的處理器同生成的代碼運行的處理器不同,這種編譯器叫做交叉編譯器。其中的elf是指編譯器生成的目標文件格式。(其實我們平時用的單片機編譯器如GCC—AVR等已是交叉編譯器了,我到現在才弄清楚什麼是交叉編譯器)
走了哪條編譯路徑?
系統程序和驅動程序往往包含很多的編譯選項,很多選項都是在編譯時通過命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
這樣在編譯的時候就知道,編譯的是哪一條路經了。對於支持#pragma message( 「I am here」)的編譯器也可使用#pragma message預編譯指令。
我怎麼知道那段代碼在那個文件中?
系統編程中經常需要使用在多個文件中搜索字元串,在windows平台下可以使用平台提供的多文件字元串搜索工具。在linux平台下,可以使用grep來搜索字元串。Grep的搜索功能十分強大,支持正則表達式搜索,熟練使用grep對於閱讀系統和驅動程序代碼是很有幫助的。
系統是從那個文件開始運行的?
對於Windows CE系統,一般從WINCE420\PLATFORM\YourPlatform\KERNEL\HAL目錄的某個匯編文件中。對於Linux系統版本不同會存在一定差異,以arm處理器為例,一般會在linux2.4.x\arch\arm\kernel的head-armv.S中。
程序執行到了那裡?
可以在程序中插入如下代碼來實現
printf( 「I am here %s, %d\n」,__FILE__,__LINE__);
代碼將打出printf語句所在的文件名和行號。
推薦書目
Jean J.Labrosse MicroC/OS-II The Real-TimeKernel,Second Edition這本書是筆者接觸嵌入式實時系統的入門書,在國內能夠買到中文版。這本書較為清楚地講述了實時系統的概念,各個組成部分的工作原理,特別是公開了實時系統內核的源代碼,仔細研究定會受益匪淺。有個小的提示,對於初學者,這本書可以先不看第一章,直接從第二章看起。
Abraham Silberschatz, Peter Baer Galvin,GregGagne Operating System Concepts筆者在教學過程中發現,無論是計算機還是電子工程專業都有很多學生對於操作系統的基本概念都沒有搞清,很少有學生有完整的系統編程經驗。Operating System Concepts這本書對操作系統的概念講述只能用經典來形容。對於嵌入式系統有興趣深入研究的同學,首先要把基礎打好,這本書就成了必讀之物了。
Andrew S. Tanenbaum Computer Networks 提起Andrew S. Tanenbaum 學習計算機的同學一定都知道OPERATINGSYSTEMs:Designand
Implementation這本書,筆者對於Tanenbaum這樣的教授由衷佩服。網路協議棧是嵌入式系統中的支柱性組成部分。願意致力於網路深層技術研究的同學,這本書將為你們建立一個堅實的網路基礎。
Karim Yaghmour Building Embedded Linux Systems本書詳盡的介紹了嵌入式linux系統的組成,基本概念和如何去建立各個部分。全書篇幅較小,可謂短小精悍。即可以作為嵌入式linux系統的入門讀物,又是開發過程各個部分的指南。
Advanced RISC Machines Ltd (ARM) ARM7 TDMI DataSheet Advanced RISC Machines Ltd (ARM) ARM920TTechnical Reference Manual學習嵌入式系統不了解當前應用最廣泛的嵌入式處理器怎麼行?ARM7 TDMI 的 data sheet是學習ARM編程模型,指令集的好東西。在嵌入式系統中,MMU(內存管理單元)是很重要的部分,又是較難理解和掌握的部分。ARM920TTechnical Reference Manual 正好可以幫你講解這方面的內容。
Perter Van Der LinDen Expert C Programming嵌入式系統級編程最常用的語言還是C 。很多同學都自認為自己的C語言學的很好,那好,就看看這本書吧,找找自己和Experts差距。
嵌入式開發與桌面開發既有不同,又有非常大的聯系,而且十分注重實際操作能力。搞桌面開發的人在一開始接觸嵌入式的時候,通常轉換不過來,這主要體現在定位上。如文中所說,你是誰,你要做什麼?我對硬體的了解僅限於編程領域,PCB設計一竅不通,但並不能說你不懂硬體就不能從事嵌入式開發。一個系統的開發設計方方面面,在自己感興趣和熟悉的領域做出自己的貢獻才是最主要的。
1。硬體設計: 需要有硬體設計的經驗,對各種嵌入式器件有很好的了解。
2。系統移植:需要匯編經驗,操作系統原理以及底層驅動的了解
3。應用程序:需要桌面編程經驗