嵌入式系統仿真環境—SkyEye
摘 要: 本文全面分析了開放源碼的嵌入式系統仿真集成開發環境SkyEye,并對SkyEye上已經移植成功的操作系統、典型應用進行了介紹,最后講述了SkyEye正在開展的工作和將來的發展方向。
關鍵詞:嵌入式系統;仿真環境;SkyEye;Linux;mClinux;mC/OS-II
SkyEye
SkyEye是一個在Linux和 Windows平臺上實現純軟件仿真的集成開發環境,它基于GPL協議,可在SkyEye上運行Linux、mClinux以及mC/OS-II 等多種嵌入式操作系統和各種系統軟件(如TCP/IP、圖形子系統、文件子系統等),并可對它們進行源碼級的分析和測試。
SkyEye作為指令級仿真器,可以仿真多種嵌入式開發板,支持多種CPU指令集,在SkyEye上運行的操作系統意識不到它是在一個虛擬環境中運行,而且開發人員可以通過SkyEye調試操作系統和系統軟件。由于SkyEye的目標不是驗證硬件邏輯,而是協助開發、調試和學習系統軟件,所以在實現上SkyEye與真實的硬件環境相比有一定差別。在時鐘節拍的時序上,SkyEye不保證與硬件完全相同,并簡化了對軟件透明的一些硬件仿真,這樣可以提高SkyEye的執行效率。
在32位嵌入式CPU領域中,ARM系列CPU所占比重相當大,因此SkyEye首先選擇了ARM CPU核作為仿真目標CPU核。SkyEye可用于學習、分析、開發Linux、mClinux、mC/OS-II操作系統內核和TCP/IP實現,了解ARM嵌入式CPU編程,而這一切都可在一個集成環境中完成。如果能夠改進SkyEye本身,則大家對ARM、8019 ethernet網絡芯片等硬件的了解也會更深入。由于SkyEye與GDB可以無縫結合,開發者可以方便地使用GDB提供的各種調試手段對SkyEye仿真系統上的軟件進行源碼級調試,還可以進行各種分析,如執行熱點分析、程序執行覆蓋度分析等。
SkyEye技術分析
SkyEye實現的硬件仿真
* CPU和開發板系列
目前SkyEye可以仿真的CPU主要是基于ARM內核的CPU,包括ARM7TDMI、StrongARM、ARM720T、ARM9TDMI、ARM9xx、ARM10xx、Xscale、Ateml91x40、EP7312等。
各硬件開發公司可以根據它們的需求在上述CPU核上加上特定的擴展,形成基于各種ARM基本核心的特定CPU,如Atmel91X40和 EP7312,則分別擴展了ARM7TDMI和ARM720T的內存控制和各種I/O控制器,簡化了開發板的邏輯設計,增強了開發板的功能。
目前SkyEye仿真的開發板包括基于Atmel91x40、EP7312和StrongARM的adsbitsy開發板,以及基于XScale PXA250的lubbock開發板。主要仿真了對應各個開發板的串口、時鐘、RAM、ROM等硬件外設。
* 存儲器管理單元和緩存單元
MMU即存儲器管理單元,是用來管理虛擬內存系統的硬件。MMU的兩個主要功能是:將虛擬地址轉換成物理地址;控制存儲器的存取權限。MMU關掉時,虛擬地址直接輸出到物理地址總線。MMU本身有少量存儲空間存放從虛擬地址到物理地址的匹配表,此表稱作TLB。為了支持仿真多種類型CPU的MMU/Cache,SkyEye包含了一個通用的MMU/Cache仿真實現。通過對一些參數的調整可以支持仿真多種類型的MMU/cache物理結構和邏輯行為。
* 網絡芯片
目前SkyEye仿真了8019as網絡芯片,其特點是:NE2000兼容,內建 16K RAM緩沖區,10MB傳輸速率。開發板上可以加入網絡芯片8019as,再加上不同操作系統上的8019as驅動程序,可以完成各種網絡應用設計開發。目前已經在在基于Atmel91x40的開發板上實現了網絡芯片8019as擴展,并增加了mC/OS-II和mClinux的網絡驅動程序,支持大量的網絡應用程序,如lwip、nfs server/clinet、http server/client、telnet server/client、ftp server/client等。
SkyEye總體結構
SkyEye基于GDB /armulator,可以仿真完整的嵌入式計算機系統,目前包括CPU、內存、I/O寄存器、時鐘、UART、網絡芯片,將來還會有MMU、Cache、LCD、USB等各種硬件。
SkyEye從總體上分為以下四個層次。
用戶接口模塊:處理用戶的輸入命令,并把相關調試數據輸出給用戶。
符號處理模塊:主要處理執行文件的頭信息,解釋執行文件中內嵌的debuger調試信息,以及對符號表的管理和對源代碼表達式的解析,并定位源代碼中的語句位置和機器碼的位置關系等。
目標控制模塊:主要完成執行控制(如中斷執行,中斷條件的設置等)、程序棧結構分析,以及對具體目標硬件的控制(如本地調試、遠程調試和仿真調試的控制)。
目標仿真模塊:仿真主要硬件的執行,對執行文件的機器指令進行解釋,并仿真執行每一條機器指令,產生相應的硬件響應。
SkyEye上運行的應用
由于已經實現多種軟件的移植,目前在SkyEye的仿真硬件上可以運行多種操作系統、驅動程序、網絡協議棧和各種應用軟件。
ARM Linux
Linux原本被設計為桌面系統,現在廣泛應用于服務器領域,而更大的影響在于它正逐漸應用于嵌入式設備。由于SkyEye仿真的CPU基本上基于ARM核,所以目前可以支持面向ARM核的Linux操作系統-ARM Linux。
mClinux
mClinux主要針對沒有MMU的處理器,而標準的Linux只支持帶MMU的CPU。為了減少OS的尺寸,mClinux采用了如下做法:刪除不需要的內核功能,重新配置內核;mClinux的根(root)文件系統采用romfs文件系統;mClinux的應用程序庫為精簡的uClibc,而不是龐大的glibc。
mC/OS-II
無論是通過學習 mC/OS-II 來了解實時操作系統的構造,或者是直接使用它來針對具體應用進行開發,都是非常方便和可行的。目前在SkyEye上可以運行mC/OS-II 2.51版。
更多的 OS 移植
基于 SkyEye,開發者可以驗證自行開發的OS,也可將更多的OS,如MINIX等,移植到SkyEye上。
mClinux上的TCP/IP
mClinux上面有完整的TCP/IP協議棧,但缺少對SkyEye網絡仿真芯片的驅動程序。SkyEye實現了簡化的8019as驅動程序,它主要包括了初始化、中斷處理、接收數據包和發送數據包的處理等工作。
基于mC/OS-II的LwIP
通過把開放源代碼的LwIP移植到mC/OS-II上來,可獲得了一套免費的嵌入式網絡軟件平臺。系統示意圖如圖1所示。
LwIP是瑞士計算機科學院Adam Dunkels等開發的一套用于嵌入式系統的開放源代碼TCP/IP協議棧,其含義是Light Weight(輕型)IP協議。LwIP可以移植到操作系統上,也可以在無操作系統的情況下獨立運行,目前使用的是LwIP最新穩定版V0.5.3。除了LwIP之外,還有很多開源的嵌入式TCP/IP協議棧,其中的代表有tinyTCP、mcIP、mIP等。
Lwip上的echo服務器
在Lwip上實現了一個TCP echo服務器,監聽7號端口,實現了RFC中最簡單的echo協議:收到什么,就往回發同樣的內容。編譯運行后,用ping ip地址 命令可以得到ICMP reply響應。用telnet ip地址 7(登錄7號端口) 命令可以看到echo服務器的回顯效果。說明ARP、ICMP、IP、TCP協議都已正確運行。
mC/OS-II下的人機界面
實現人機界面(shell)的本質思想是:Shell作為一個mC/OS-II下的任務,工作于內核之外,占用一個任務號。它接收用戶輸入的字符,存儲到緩沖區,并回顯在屏幕上,以回車鍵為用戶輸入的結束信號,隨后解析用戶輸入的命令名稱、參數,調用相應的命令函數。一直到這個命令函數運行返回,才繼續Shell的人機交互界面,本文稱之為Genie Shell。其流程圖如圖2所示。
Genie Shell實現了最基本的命令輸入、解析參數、調用命令函數功能,以及兩條示例性的命令,其特色是采用了面向對象的思路來實現Shell的各種命令。
mClinux和ARM Linux上的應用
目前已經在mClinux上成功地執行了shell、ping、ifconfig、telnet server/client、ftp client/server、nfs server等大量應用程序。絕大多數mClinux或ARM Linux應用級程序完全不用修改源碼就可以在SkyEye上運行。
SkyEye發展
在大學的嵌入式課程試驗和嵌入式項目研究中,已把SkyEye作為一個重要的嵌入式系統開發的實踐工具,在清華大學、國防科技大學等院校得到了應用。今后,skyEye將支持仿真更多的CPU、開發板和各種外設,并提供詳細的設計文檔。除了對SkyEye進一步完善以外,本課題組正在進行以下方面的工作。
LCD仿真
作為單片機系統重要的輸出設備,LCD應用非常廣泛。Skyeye中將加入LCD控制器設備仿真,并使用GTK+圖形函數庫在Xwindow中仿真出一個LCD屏幕。Skyeye的LCD仿真實現的示意圖如圖3所示。
IDE 集成開發環境
IDE集成開發環境是SkyEye的一個重要組成部分。所有支持GDB的IDE集成開發環境都可以很容易地移植為SkyEye的IDE集成開發環境。將來可能會采用功能強大、可擴展性強的Eclipse集成開發環境作為SkyEye的IDE集成開發環境。■
參考文獻
1. SkyEye Web Site:http://hpclab.cs.tsinghua.edu.cn/~SkyEye/
2. ARM System-on-Chip Architecture,second edition,Steve Furber,Pearson Education Published
3. ARM Architecture Reference Manual,ARM Ltd
tcp/ip相關文章:tcp/ip是什么
評論