ARM嵌入式
ARM嵌入式
ARM(Advanced RISC Machines),既可認為是一個公司的名字,也可認為是對一類微處理器的統稱。
ARM是微處理器行業的一家知名企業,設計了大量高性能、廉價、耗能低的RISC處理器、相關技術及軟體。技術具有性能高、成本低和能耗省的特點。適用於多種領域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應用等。
1991 年 ARM 公司成立於英國劍橋,主要出售晶元設計技術的授權。採用 ARM技術知識產權( IP )核微處理器,即我們通常所說的 ARM 微處理器,已遍及工業控制、消費類電子產品、通信系統、網路系統、無線系統等各類產品市場,基於 ARM 技術的微處理器應用約佔據了 32 位 RISC 微處理器 75 %以上的市場份額, ARM 技術正在逐步滲入到我們生活的各個方面。
ARM 公司是專門從事基於 RISC 技術晶元設計開發的公司,作為知識產權供應商,本身不直接從事晶元生產,靠轉讓設計許可由合作公司生產各具特色的晶元,世界各大半導體生產商從ARM公司購買其設計的 ARM微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的 ARM 微處理器晶元。目前,全世界有幾十家大的半導體公司都使用 ARM 公司的授權,因此既使得 ARM 技術獲得更多的第三方工具、製造、軟體的支持,又使整個系統成本降低,使產品更容易進入市場被消費者所接受,更具有競爭力。
ARM處理器的三大特點是:耗電少功能強、16位/32位雙指令集和眾多合作夥伴。
根據IEEE(國際電機工程師協會)的定義,嵌入式系統是“控制、監視或者輔助裝置、機器和設備運行的裝置”(原文為devices used to control, monitor, or assist the operation of equipment, machinery or plants)。這主要是從應用上加以定義的,從中可以看出嵌入式系統是軟體和硬體的綜合體,還可以涵蓋機械等附屬裝置。嵌入式系統的核心是嵌入式微處理器。
今天嵌入式系統帶來的工業年產值已超過了1萬億美元,1997年來自美國嵌入式系統大會(Embedded System Conference)的報告指出,未來5年僅基於嵌入式計算機系統的全數字電視產品,就將在美國產生一個每年1500億美元的新市場。美國汽車大王福特公司的高級經理也曾宣稱,“福特出售的‘計算能力’已超過了IBM”,由此可以想見嵌入式計算機工業的規模和廣度。1998年11月在美國加州舉行的嵌入式系統大會上,基於RTOS的Embedded Internet成為一個技術新熱點。在國內,“維納斯計劃”和“女媧計劃”一度鬧得沸沸揚揚,機頂盒、信息家電這兩年更成了IT熱點,而實際上這些都是嵌入式系統在特定環境下的一個特定應用。據調查,目前國際上已有兩百多種嵌入式操作系統,而各種各樣的開發工具、應用於嵌入式開發的儀器設備更是不可勝數。在國內,雖然嵌入式應用、開發很廣,但該領域卻幾乎還是空白,只有三兩家公司和極少數人員在從事這方面工作。由此可見,嵌入式系統技術發展的空間真是無比廣大。
用ARM處理器做的嵌入式系統更是前途廣闊,接下來就簡介開發工具、操作系統等研發設計及製造的公司或組織。
ARM應用軟體的開發工具根據功能的不同,分別有編譯軟體、彙編軟體、鏈接軟體、調試軟體、嵌入式實時操作系統、函數庫、評估板、JTAG模擬器、在線模擬器等,目前世界上約有四十多家公司提供以上不同類別的產品。
用戶選用ARM處理器開發嵌入式系統時,選擇合適的開發工具可以加快開發進度,節省開發成本。因此一套含有編輯軟體、編譯軟體、彙編軟體、鏈接軟體、調試軟體、工程管理及函數庫的集成開發環境(IDE)一般來說是必不可少的,至於嵌入式實時操作系統、評估板等其他開發工具則可以根據應用軟體規模和開發計劃選用。
使用集成開發環境開發基於ARM的應用軟體,包括編輯、編譯、彙編、鏈接等工作全部在PC機上即可完成,調試工作則需要配合其他的模塊或產品方可完成
ARM SDT
ARM SDT的英文全稱是ARM Software Development Kit ,是ARM公司(為方便用戶在ARM晶元上進行應用軟體開發而推出的一整套集成開發工具。ARM SDT經過ARM公司逐年的維護和更新,目前的最新版本是2.5.2,但從版本2.5.1開始,ARM公司宣布推出一套新的集成開發工具ARM ADS 1.0,取ARM SDT而代之,今後將不會再看到ARM SDT的新版本。
ARM SDT(以下關於ARM SDT的描述均是以版本 2.50為對象)可在Windows95、98、NT以及Solaris 2.5/2.6、HP-UX 10上運行,支持最高到ARM9(含ARM9)的所有ARM處理器晶元的開發,包括StrongARM。
ARM SDT包括一套完整的應用軟體開發工具:
*armcc ARM的C編譯器,具有優化功能,兼容於ANSI C。
*tcc THUMB的C編譯器,同樣具有優化功能,兼容於ANSI C。
*armasm 支持ARM和THUMB的彙編器。
*armsd ARM和THUMB的符號調試器。
以上工具為命令行開發工具,均被集成在SDT的兩個Windows開發工具ADW和APM中,用戶無需直接使用命令行工具。
*APM Application Project Manageer,ARM工程管理器,完全圖形界面,負責管理源文件,完成編輯、編譯、鏈接並最終生成可執行映像文件等功能。
ADS
ADS(ARM Developer Suite),是在1993年由Metrowerks公司開發是ARM處理器下最主要的開發工具。ADS 是全套的實時開發軟體工具,包編譯器生成的代碼密度和執行速度優異。可快速低價地創建ARM 結構應用。ADS包括三種調試器ARMeXtended Debugger, AXD 向下兼容的ARMDebugger for Windows/ARM Debugger forUNIX 和ARM 符號調試器。其中AXD 不僅擁有低版本ARM調試器的所有功能,還新添了圖形用戶界面,更方便的視窗管理數據顯示,格式化和編輯以及全套的命令行界面。該產品還包括RealMonitor™(可以在前台調試的同時斷點續存並且在不中斷應用的情況下讀寫內存跟蹤調試工具)。
ADS對彙編、C/C++、java支持的均很好,是目前最成熟的ARM開發工具。很多ARM開發軟體(例如Keil)也是借用的ADS的編譯器。ADS在2006年版本已經發布到2.2。但國內大部分開發者使用的均是1.2版本。
RealView MDK開發工具源自德國Keil公司,被全球超過10萬的嵌入式開發工程師驗證和使用,是ARM公司目前最新推出的針對各種嵌入式處理器的軟體開發工具。RealView MDK集成了業內最領先的技術,包括µVision3集成開發環境與 RealView編譯器。支持ARM7、ARM9和最新的Cortex-M3核處理器,自動配置啟動代碼,集成Flash燒寫模塊,強大的Simulation設備模擬,性能分析等功能,與ARM之前的工具包ADS等相比,RealView編譯器的最新版本可將性能改善超過20%
RealView MDK的突出特性:
啟動代碼和系統硬體結合緊密,必須用彙編語言編寫,因而成為許多工程師難以跨越多門檻。RealView MDK的µVision3工具可以幫您自動生成完善的啟動代碼,並提供圖形化的窗口,隨您輕鬆修改。無論對於初學者還是有經驗的開發工程師,都能大大節省時間,提高開發效率。。
高手的無劍勝有劍 —— 軟體模擬器,完全脫離硬體的軟體開發過程
RealView MDK的設備模擬器可以模擬整個目標硬體,包括快速指令集模擬、外部信號和I/O模擬、中斷過程模擬、片內所有外圍設備模擬等。開發工程師在無硬體的情況下即可開始軟體開發和調試,使軟硬體開發同步進行,大大縮短開發周期。而一般的ARM開發工具僅提供指令集模擬器,只能支持ARM內核模擬調試。
專家的哈雷望遠鏡 —— 性能分析器,看得更遠、看得更細、看得更清
RealView MDK的性能分析器好比哈雷望遠鏡,讓您看得更遠和更准,它輔助您查看代碼覆蓋情況,程序運行時間,函數調用次數等高端控制功能,指導您輕鬆的進行代碼優化,成為嵌入式開發高手。通常這些功能只有價值數千美元的昂貴的Trace工具才能提供。
業界最優秀的編譯器——RealView 編譯器,代碼更小,性能更高
代碼密度:比ADS 1.2編譯的代碼尺寸小10%;
代碼性能:比ADS 1.2編譯的代碼性能高20%。
配備ULINK2模擬器+ Flash編程模塊,輕鬆實現Flash燒寫
RealView MDK無需尋求第三方編程軟體與硬體支持,通過配套的ULINK2模擬器與Flash編程工具,輕鬆實現CPU片內FLASH、外擴FLASH燒寫,並支持用戶自行添加FLASH編程演演算法;而且能支持FLASH整片刪除、扇區刪除、編程前自動刪除以及編程后自動校驗等功能,輕鬆方便。
絕對的高性價比——國際品質,本土價格
RealView MDK中國版保留了RealView MDK國際版的所有卓越性能,而產品價格和國內普通開發工具的價格差不多;另外我們還根據不同需求,專門定製了4個版本,以滿足工程師們不同的需要。這絕對是您選擇開發工具的首選。
更貼身的服務——專業的本地化的技術支持和服務
RealView MDK中國版用戶將享受到專業的本地化的技術支持和服務,包括電話、Email、論壇、中文技術文檔等,這將為國內工程師們開發出更有競爭力的產品提供更多的助力
GNU
GNU是“GNU‘s Not Unix”的遞歸縮寫。Stallman宣布GNU應當發音為Guh-NOO以避免與new這個單詞混淆(註:Gnu在英文中原意為非洲牛羚,發音與new相同)。UNIX是一種廣泛使用的商業操作系統的名稱。由於GNU將要實現UNIX系統的介面標準,因此GNU計劃可以分別開發不同的操作系統部件。GNU計劃採用了部分當時已經可自由使用的軟體,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟體。
1985年Richard Stallman又創立了自由軟體基金會(Free Software Foundation)來為GNU計劃提供技術、法律以及財政支持。儘管GNU計劃大部分時候是由個人自願無償貢獻,但FSF有時還是會聘請程序員幫助編寫。當GNU計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被Red Hat兼并的Cygnus Solutions
到了1990年,GNU計劃已經開發出的軟體包括了一個功能強大的文字編輯器Emacs,C語言編譯器GCC,以及大部分UNIX系統的程序庫和工具。唯一依然沒有完成的重要組件就是操作系統的內核(稱為HURD)。
1991年Linus Torvalds編寫出了與UNIX兼容的Linux操作系統內核並在GPL條款下發布。Linux之後在網上廣泛流傳,許多程序員參與了開發與修改。1992年Linux與其他GNU軟體結合,完全自由的操作系統正式誕生。該操作系統往往被稱為“GNU/Linux”或簡稱Linux。(儘管如此GNU計劃自己的內核Hurd依然在開發中,目前已經發布Beta版本。)
許多UNIX系統上也安裝了GNU軟體,因為GNU軟體的質量比之前UNIX的軟體還要好。GNU工具還被廣泛地移植到Windows和Mac OS上。
ARM REALVIEW DEVELOPER SUITE
RealView Developer Suite工具是ARM公司是推出的新一代ARM集成開發工具。支持所有ARM 系列核,並與眾多第三方實時操作系統及工具商合作簡化開發流程。開發工具包含以下組件:
· 完全優化的ISO C/C++編譯器
· C++標準模板庫
· 強大的宏編譯器
· 支持代碼和數據複雜存儲器布局的連接器
· 可選 GUI調試器
· 基於命令行的符號調試器(armsd)
·指令集模擬器
· 庫創建工具
· 內容豐富的在線文檔
IAR EWARM
Embedded Workbench for ARM 是IAR Systems 公司為ARM微處理器開發的一個集成開發環境(下面簡稱IAR EWARM)。比較其他的ARM 開發環境,IAR EWARM 具有入門容易、使用方便和代碼緊湊等特點。
IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.30。這裡提供的是32k 代碼限制、但沒有時間限制的Kickstart版。
EWARM 中包含一個全軟體的模擬程序(simulator)。用戶不需要任何硬體支持就可以模擬各種ARM內核、外部設備甚至中斷的軟體運行環境。從中可以了解和評估IAR EWARM 的功能和使用方法。
IAR EWARM 的主要特點如下:
1、高度優化的IAR ARM C/C++ Compiler
2、IAR ARM Assembler
3、一個通用的IAR XLINK Linker
4、IAR XAR 和XLIB 建庫程序和IAR DLIB C/C++運行庫
5、功能強大的編輯器
6、項目管理器
7、命令行實用程序
8、IAR C-SPY 調試器(先進的高級語言調試器
KEIL ARM-MDKARM
Keil uVision調試器可以幫助用戶準確地調試ARM器件的片內外圍功能(I2C、 CAN、UART、SPI、中斷、I/O口、A/D轉換器、D/A轉換器和PWM模塊等功能)。ULINK USB-JTAG轉換器將PC機的USB埠與用戶的目標硬體相連(通過JTAG或OCD),使用戶可在目標硬體上調試代碼。通過使用Keil uVision IDE/調試器和ULINK USB-JTAG轉換器,用戶可以很方便地編輯、下載和在實際的目標硬體上測試嵌入的程序。
高效工程管理的uVision3集成開發環境
* Project/Target/Group/File的重疊管理模式,並可逐級設置;
* 高度智能彩色語法顯示;
* 支持編輯狀態的斷點設置,並在模擬狀態下有效。
高速ARM指令/外設模擬器
* 高效模擬演演算法縮短大型軟體的模擬時間;
* 軟體模擬進程中允許建立外部輸入信號;
* 獨特的工具窗口,可快速查看寄存器和方便配置外設;
* 支持C調試描述語言,可建立與實際硬體高度吻合的模擬平台;
* 支持簡單/條件/邏輯表達式/存儲區讀寫/地址範圍等斷點。
多種流行編譯工具選擇
* Keil高效率C編譯器;
* ARM公司的ADS/RealView 編譯器;
* GNU GCC編譯器;
* 後續廠商的編譯器。
MULTI 2000
Multi 2000是美國Green Hills軟體公司開發的集成開發環境,支持C/C++/Embedded C++ /Ada 95/Fortran編程語言的開發和調試,可運行於Windows平台和Unix平台,並支持各類設備的遠程調試。
Multi 2000支持Green Hills公司的各類編譯器以及其它遵循EABI標準的編譯器,同時Multi 2000支持眾多流行的16位、32位和64位處理器和DSP,如PowerPC、ARM、MIPS、x86、Sparc、TriCore、SH-DSP等,並支持多處理器調試。
Multi 2000包含完成一個軟體工程所需要的所有工具,這些工具可以單獨使用,也可集成第三方系統工具。
Embest IDE
Embest IDE英文全稱是Embest Integrated Development Environment,是深圳市英蓓特信息技術有限公司推出的一套應用於嵌入式軟體開發的新一代集成開發環境。
Embest IDE是一個高度集成的圖形界面操作環境,包含編輯器、編譯器、彙編器、鏈接器、調試器等工具,其界面同Microsoft Visual Studio類似。 Embest IDE支持ARM、Motorola等多家公司不同系列的處理器,對於ARM系列處理器,目前支持到ARM9系列,包括ARM7、ARM5等低系列晶元。
由Hitool International Inc出品,是一種較新的ARM嵌入式應用軟體開發系統,主要包括Hitool ARM Debugger、GNU Compiler(內建)、JTAG cable、評估板以及嵌入式實時操作系統ThreadX等。其中編譯器模塊可以替換成ARM ADS Compiler或ARM SDT Compiler。
其主要特點如下:
1) 近似MS Visual Studio的調試界面風格,可以在Win98/ME/NT等多種Win32環境下運行;
3) 支持彙編、C以及C++源碼級調試,不僅可以通過串口和並口進行本地調試,也可以通過TCP/IP進行遠端調試;
4) 集成了S-Record、Binary和Disassembly格式的內存上下載工具,Flash編程工具;
5) 支持多種常用的Jtag Cable,具備通過宏和腳本實現的自動化調試功能。
JEENI模擬器
JEENI模擬器支持ARM/THUMB指令,支持彙編/高級語言調試。用戶應用程序通過JEENI模擬器下載到目標RAM中。通過JEENI模擬器,用戶可以觀察/修改ARM7的寄存器和存儲器的內容,用戶可以在所下載的程序上設置斷點,用戶可以以彙編/高級語言單步執行程序,也可以全速運行程序,用戶可以觀察高級語言變數的數據結構及內容並對變數的內容在線修改。
JEENI 內部使用了一片帶有高速緩存的 ARM 處理器,支持對調試操作的快速響應,比如:單步、讀寫存儲器、讀寫寄存器和下載應用程序到目標板。JEENI 的這種結構,允許乙太網介面在處理器執行JTAG指令的同時訪問存儲器。這種設計極大的提高了下載速度。
JEENI模擬器能夠很好地與SDT2.5工具連接,用戶可使用SDT的編譯器和調試界面。JEENI 對那些正在使用ARM BlackICE/EmbeddedICEJTAG介面的用戶來說是即插即用的替代品。JEENI 可用於ARM SDT 2.11a 或 SDT 2.5,另外大多數第三方的調試器也都支持 JEENI
ULINK2 模擬器
ULINK2是ARM公司最新推出的配套RealView MDK使用的模擬器,是ULink模擬器的升級版本。ULINK2不僅具有ULINK模擬器的所有功能,還增加了串列調試(SWD)支持,返回時鐘支持和實時代理等功能。開發工程師通過結合使用RealView MDK的調試器和ULINK2,可以方便的在目標硬體上進行片上調試(使用on-chip JTAG, SWD和 OCDS)、Flash編程…
ULINK2新特點:
標準Windows USB驅動支持ULINK2即插即用
支持基於 ARM Cortex-M3的串列調試
支持程序運行期間的存儲器讀寫、終端模擬和串列調試輸出
支持10-pin 連接線 (也支持20-pin 連接線)
ULINK2主要功能:
USB通訊介面高速下載用戶代碼
存儲區域/寄存器查看
快速單步程序運行
多種程序斷點
片內Flash編程
Multi-ICE
Multi-ICE是ARM公司自己的JTAG在線模擬器,目前的最新版本是2.1版。
Multi-ICE的JTAG鏈時鐘可以設置為5 kHz到10 MHz,實現JTAG操作的一些簡單邏輯由FPGA實現,使得并行口的通信量最小,以提高系統的性能。Multi-ICE硬體支持低至1V的電壓。Multi-ICE 2.1還可以外部供電,不需要消耗目標系統的電源,這對調試類似手機等攜帶型、電池供電設備是很重要的。
Multi-ICE 2.x支持該公司的實時調試工具MultiTrace,MultiTrace包含一個處理器,因此可以跟蹤觸發點前後的軌跡,並且可以在不終止後台任務的同時對前台任務進行調試,在微處理器運行時改變存儲器的內容,所有這些特性使延時降到最低。
Multi-ICE 2.x支持ARM7、ARM9、ARM9E、ARM 10和Intel Xscale微結構系列。它通過TAP控制器串聯,提供多個ARM處理器以及混合結構晶元的片上調試。它還支持低頻或變頻設計以及超低壓核的調試,並且支持實時調試。
Multi-ICE提供支持Windows NT4.0、Windows95/ 98/2000/Me、HPUX 10.20 和 Solaris V2.6/7.0的驅動程序。
Multi-ICE主要優點:
快速的下載和單步速度。
用戶控制的輸入/輸出位。
可編程的JTAG位傳送速率。
開放的介面,允許調試非ARM的核或DSP。
網路連接到多個調試器。
目標板供電,或外接電源
μC/OS-II是一種基於優先順序的搶佔式多任務實時操作系統,包含了實時內核、任務管理、時間管理、任務間通信同步(信號量,郵箱,消息、隊列)和內存管理等功能。它可以使各個任務獨立工作,互不干涉,很容易實現準時而且無誤執行,使實時應用程序的設計和擴展變得容易,使應用程序的設計過程大為減化。
VxWorks 是美國 Wind River System 公司(以下簡稱風河公司,即WRS公司)推出的一個實時操作系統。Tornado 是WRS公司推出的一套實時操作系統開發環境,類似Microsoft Visual C,但是提供了更豐富的調試、防真環境和工具。
VxWorks操作系統有以下部件組成:
內核(wind):
多任務調度(採用基於優先順序搶佔方式,同時支持同優先順序任務間的分時間片調度)
任務間的同步
進程間通信機制
中斷處理
定時器和內存管理機制
I/O 系統
VxWorks 提供了一個快速靈活的與 ANSI C 兼容的 I/O 系統,包括 UNIX 標準的Basic I/O(creat(), remove(), open(),close(), read(), write(), and ioctl().),Buffer I/O (fopen(), fclose(), fread(), fwrite(), getc(), putc()) 以及POSIX 標準的非同步 I/O。VxWorks 包括以下驅動程序:網路驅動、管道驅動、RAM盤驅動、SCSI驅動、鍵盤驅動、顯示驅動、磁碟驅動、並口驅動等。
VxWorks 提供了一個實用常式的擴展集,包括中斷處理、看門狗定時器、消息登錄、內存分配、字元掃描、線緩衝和環緩衝管理、鏈表管理和 ANSIC標準。
嵌入式Vxworks系統的主要應用領域主要有以下幾方面:
3.醫療設備:如:放射理療設備
4.消費電子:如:個人數字助理等
5.交通運輸:如:導航系統、高速火車控制系統等
6.工業:如:機器人
7.航空航天:如:衛星跟蹤系統
8.多媒體:如:電視會議設備
9.計算機外圍設備:如:X終端、I/O 系統等
總之,VxWorks的系統結構是一個相當小的微內核的層次結構。內核僅提供多任務環境、進程間通信和同步功能。這些功能模塊足夠支持VxWorks在較高層次所提供的豐富的性能的要求。
VxWorks6.0版本新增功能:
風河通用平台VxWorks版(GPP)是所有設備軟體應用程序的首要基礎平台。此通用平台基於全球應用最廣泛的運行時操作系統--VxWorks而構建。最新版本(VxWorks 6.1)中的各運行時組件可向後兼容VxWorks的早期版本。此最新版本包含了增強的內存保護、容錯管理,並支持最新的網路和安全協議以及設備與企業間的連通性。
通用平台組合了最為嚴格和確定性的實時操作系統,其產品完全集成了現有的產品開發解決方案,從而能夠滿足貴企業的各種苛刻需求。它無縫集成了業界標準的RTOS(VxWorks 6.1)、功能強大的開發套件(Workbench 2.3)、網路和安全協議、用於工程人員快速啟動項目的培訓以及迅速擴展您開發團隊綜合技能的各種專業服務。
pSOSystem是美國系統集成公司(Integrated Systems, Inc. 簡稱ISI公司,現已與美國WindRiver系統公司合併)根據幾十年從事嵌入式實時系統理論研究與實踐活動而設計開發的實時嵌入式操作系統。pSOSystem 集成了一整套嵌入式軟體模塊、工具和服務。作為嵌入式系統微內核設計的先驅者之一,ISI公司將pSOSystem構造成適於嵌入式應用系統開發、在嵌入式實時領域具有領導地位的實時操作系統。pSOSystem從ISI 公司和許多第三廠家得到大量的支持。
pSOSystem 是一個專門為嵌入式微處理器設計和開發的模塊化、高效率的實時操作系統。它提供了基於標準化開放系統的完整的多任務環境,例如:對網路文件系統的支持。
pSOSystem 的設計宗旨是為了實現高效、可靠、易於使用的嵌入式實時軟體,以支持用戶自己設計的或商品化的硬體系統。
pSOSystem 的每一部分都是完全“自包含”的,這種機制允許開發者根據每個應用的特殊要求對操作系統的功能和內存進行裁剪和配製。pSOSystem 的這種設計,使得開發人員對簡單的獨立設備及複雜的可容錯多處理機系統都可以靈活配置。
pSOSystem提供了一套集成化的交叉開發工具以支持應用系統的開發。該集成環境可在PC機或工作站上運行。這些工具可通過多種連接機制與目標機通訊。
Palm OS是Palm公司開發的專用於PDA上的一種操作系統,這是PDA上的霸主,一度普佔據了90%的PDA市場的份額。雖然其並不專門針對於手機設計,但是Palm OS的優秀性和對移動設備的支持同樣使其能夠成為一個優秀的手機操作系統。其最新的版本為Palm OS 5.2。目前具有手機功能的Palm PDA如Palm公司的Tungsten W。而Handspring公司(目前已被Palm公司收購)的Treo系列則是專門使用Palm OS的手機,如Treo 270以及最新的倍受矚目的Treo 650
Palm OS是一種32位的嵌入式操作系統,用於掌上電腦。此系統是3Com公司的Palm Computing 部開發的。(Palm Computing目前已經獨立成一家公司。) Palm OS與同步軟體HotSync結合可以使掌上電腦與PC機上的信息實現同步,把台式機的 功能擴展到了手掌上。目前,基於Palm OS的掌上電腦主要是3Com的系列產品,如Palm IIIx,Palm V,Palm VII, IBM WorkPad c3用的也是Palm OS。Sony等公司也獲得了Palm Computing的許可,將開發 基於Palm OS的掌上電腦。Palm OS與Windows CE間的搏鬥正在展開。
QNX是由一家位於加拿大的 QNX軟體系統有限公司開發的實時操作系統。 QNX是一個分散式、嵌入式、可規模擴展的實時操作系統。它遵循POSIX.1 (程序介面)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(實時擴展)。它最早開發於1980年,到現在已相當成熟。QNX是一個微內核實時操作系統,其核心僅提供4種服務:進程調度、進程間通信、底層網路通信和中斷處理,其進程在獨立的地址空間運行。所有其它OS服務,都實現為協作的用戶進程,因此QNX核心非常小巧(QNX4.x大約為12Kb)而且運行速度極快。
WindowsCE是微軟公司嵌入式、移動計算平台的基礎,它是一個開放的、可升級的32位嵌入式操作系統,是基於掌上型電腦類的電子設備操作系統,它是精簡的Windows 95,Windows CE的圖形用戶界面相當出色。
WindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0 和6.0
簡單地說,Linux是一套免費使用和自由傳播的類Unix操作系統,它主要用於基於Intel x86系列CPU的計算機上。這個系統是由世界各地的成千上萬的程序員設計和實現的。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix兼容產品。
Linux的出現,最早開始於一位名叫Linus Torvalds的計算機業餘愛好者,當時他是芬蘭赫爾辛基大學的學生。他的目的是想設計一個代替Minix(是由一位名叫Andrew Tannebaum的計算機教授編寫的一個操作系統示教程序)的操作系統,這個操作系統可用於386、486或奔騰處理器的個人計算機上,並且具有Unix操作系統的全部功能,因而開始了Linux雛形的設計。
絕大多數基於Linux內核的的操作系統使用了大量的GNU軟體,包括了shell程序、工具、程序庫、編譯器及工具,還有許多其他程序,例如Emacs。正因為如此,GNU計劃的開創者理查德·馬修·斯托曼博士提議將Linux操作系統改名為GNU/Linux。但有些人只把操作系統叫做"Linux"。
Linux 的歷史是和GNU緊密聯繫在一起的。
1983年,理察·馬修·斯托曼(Richard Stallman)創立了G NU計劃(GNU Project)。這個計劃有一個目標是為了發展一個完全免費自由的Unix-like操作系統。自1990年代發起這個計劃以來,GNU 開始大量的產生或收集各種系統所必備的元件,像是——函式庫(libraries)、編譯器(compilers)、偵錯工具(debuggers)、文字編輯器(text editors)、網頁伺服器(web server),以及一個Unix的使用者介面(Unixshell)——除了執行核心(kernel)仍然付闕外。1990年,GNU計劃開始在馬赫微核(Mach microkernel)的架構之上開發系統核心,也就是所謂的GNU Hurd,但是這個基於Mach的設計異常複雜,發展進度則相對緩慢。
從1983年開始的GNU計劃致力於開發一個自由並且完整的類Unix操作系統,包括軟體開發工具和各種應用程序。到1991年 Linux內核發布的時候,GNU已經幾乎完成了除了系統內核之外的各種必備軟體的開發。在Linus Torvalds和其他開發人員的努力下,GNU組件可以運行於Linux內核之上。整個內核是基於GNU通用公共許可,也就是GPL(GNU General Public License,GNU通用公共許可證)的,但是Linux內核並不是GNU 計劃的一部分。1994年3月,Linux1.0版正式發布,Marc Ewing成立了 Red Hat 軟體公司,成為最著名的Linux分銷商之一。
第一,學習基本的裸機編程。
對於學硬體的人而言,必須先對硬體的基本使用方法有感性的認識,更必須深刻認識該硬體的控制方式,如果一開始就學linux系統、學移植那麼只會馬上就陷入一個很深的漩渦。我在剛剛開始學ARM的時候是選擇ARM7(主要是當時ARM9還很貴),學ARM7的時候還是保持著學51單片機的思維,使用ADS 去編程,第一個實驗就是控制 led。學過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多複雜的系統最終都會落實到這些最底層的硬體控制,因此對這些硬體的控制有了感性的認識就好很多了
學習裸機的編程的同時要好好理解這個硬體的構架、控制原理,這些我稱他為理解硬體。所謂的理解硬體就是說,理解這個硬體是怎麼組織這麼多資源的,這些資源又是怎麼由cpu、由編程進行控制的。比如說,s3c2410中有AD轉換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那麼這些地址是什麼意思?又怎麼通過寄存器來控制這些外圍設備的運轉?還有,norflash內部的每一個單元在這個晶元的內存中都有一個相應的地址單元,那麼這些地址與剛剛說的寄存器地址又有什麼關係?他們是一樣的嗎?而與 norflash相對應的nandflash內部的儲存單元並不是線性排放的,那麼s3c2410怎麼將nandflash的地址映射在內存空間上進行使用?或者簡單地說應該怎麼用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到一個初始化的彙編文件,這個文件究竟有什麼用?他裡面的代碼是什麼意思?不要這個可以嗎?諸如此類都是對硬體的理解,理解了這些東西就對硬體有很深的理解了,這對以後更深一步的學習將有很大的幫助,如果跳過這一步,我相信越往後學越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。
不過先聲明一下,本人並沒有使用ADS對ARM9進行編程,我是學完ARM7后直接就使用ARM9學linux系統的,因此涉及使用ADS對ARM9進行編程的問題我很難回答^_^,自己去研究研究吧。
對於這部分不久將提供一份教程,這個教程中的常式並不是我為我們所代理的板子寫的,是我在我們學院實驗室拿的,英培特為他們自己 的實驗箱寫的,不過很有借鑒意義,可以作為一份有價值的參考。
第二,使用linux系統進行一些基本的實驗。
在買一套板子的時候一般會提供一些linux的試驗常式,好好做一段時間這個吧,這個過程也是很有意義的,也是為進一步的學習積累感性認識,你能想象一個從沒有使用過linux系統的人能學好linux的編程嗎?好好按照手冊上的常式做一做裡面的實驗,雖然有點娃娃學走路,有點弱智,但是我想很多高手都會經歷這個過程。
在這方面我們深藍科技目前沒有計劃提供相應的常式,主要是開發板的提供商會提供很豐富的常式,我們不做重複工作,只提供他們沒有的、最有價值的東西給大家。
第三,研究完整的linux系統的的運行過程。
所謂完整的linux系統包括哪些部分呢?
那麼這3部分是怎麼相互協作來構成這個系統的呢?各自有什麼用呢?三者有什麼聯繫?怎麼聯繫?系統的執行流程又是怎麼樣的呢?搞清楚這個問題你對整個系統的運行就很清楚了,對於下一步製作這個linux系統就打下了另一個重要的根基。介紹這方面的資料網上可以挖掘到幾噸,自己好好研究吧。
第四,開始做系統移植。
上面說到完整的linux有3部分,而且你也知道了他們之間的關係和作用,那麼現在你要做的便是自己動手學會製作這些東西。
當然我不可能叫你編寫這些代碼,這不實現。事實上這個3者都能在網下載到相應的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進行移植的過程中你要學的東西很多,要懂的相關知識也很多,等你完成了這個過程你會發現你已經算是一個初出茅廬的高手了。
在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你怎麼閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這裡我推薦一本好書倪繼利的《linux內核的分析與編程》,這是一本針對linux-2.6.11內核的書,說得很深,建議先提高自己的C語言編程水平再去看。
至於每個部分的移植網上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經驗的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會告訴你怎麼解決,這時就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過我相信能給你一點建議,也許有助你解決問題。
這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標準的源代碼包,然後進行修改,最終運行在板子上。
盜用阿基米德的一句話:“給我一根網線,我能將linux搞定”。
第五,研究linux驅動程序的編寫。
移植系統並不是最終的目的,最終的目的是開發產品,做項目,這些都要進行驅動程序的開發。Linux的驅動程序可以說是五花八門,linux2.4和 linux2.6的編寫有相當大的區別,就是同為linux2.6但是不同版本間的驅動程序也有區別,因此編寫linux的驅動程序變都不是那麼容易的事情,對於最新版本的驅動程序的編寫甚至還沒有足夠的參考資料。那麼我的建議就是使用、移植一個不算很新的版本內核,這樣到時學驅動的編程就有足夠的資料了。
這部分的推薦書籍可以參考另一篇文章《推薦幾本學習嵌入式linux的書籍》。
第六,研究應用程序的編寫。
做作品做項目除了編寫驅動程序,最後還要編寫應用程序。現在的趨勢是圖形應用程序的開發,而圖形應用程序中用得最多的還是qt/e函數庫。我一直就使用這個函數庫來開發自己的應用程序,不過我希望你能使用國產的MiniGUI函數庫。盜用周杰倫的廣告詞就是“支持國產,支持MiniGUI”。 MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應該說是相當不錯的,我曾使用過來開發ARM7的程序。不過MiniGUI 最大的不好就是沒有像qtopia這樣的圖形操作平台,這大大限制了他的推廣,我曾經幻想過與北京飛漫公司(就是MiniGUI的版權擁有者)合作使用 MiniGUI函數庫開發像qtopia這樣的圖形操作平台,不過由於水平有限這隻能是幻想了,呵呵。
完成這一步你基本就學完了嵌入式linux的全部內容了。
還有一個小小的經驗想和大家分享。我在學習嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同學師兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自己研究解決問題。這樣做有個好處,就是可以提高自己解決問題的能力,因為做這些東西總有很多問題你難以理解,別人也沒有這方面的經驗,也不是所有問題都有人給你答案,這時必須要自己解決問題,這樣,個人的解決問題能力就顯得非常關鍵了。因此我的建議就是一般的問題到網上搜索一下,確實找不到答案了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你解決問題。
記住,問題是學習的最好機會。