版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)講義 SkyEye硬件模擬平臺及嵌入式開發(fā),主要內容,SkyEye簡介 SkyEye的安裝和使用 課程實驗,SkyEye簡介,SkyEye是一個開源軟件項目,中文名字是“天目”。 SkyEye的起源和發(fā)展 陳渝:做一個用軟件實現(xiàn)的嵌入式開發(fā)硬件模擬器,可以在模擬器上運行各種操作系統(tǒng),這樣就可以在沒有開發(fā)板的情況下學習和研究操作系統(tǒng),適用對象及場合,(1)經(jīng)常苦于經(jīng)費不足,缺少足夠的硬件開發(fā)板和完善的軟件開發(fā)環(huán)境,相關的書籍對一些最新軟件的分析還不夠全面,無法深入研究和開發(fā)嵌入式軟件。 (2)高層次的軟件設計和開發(fā)一般不用太考慮底層硬件的實現(xiàn)細節(jié),如果直接處于一個具體的硬件環(huán)境下,在開
2、發(fā)和研究中可能會陷入硬件的具體細節(jié)中不能自拔,而不能把精力放到高層次的軟件設計和開發(fā)上。 (3)如果硬件開發(fā)環(huán)境不太穩(wěn)定(這種情況經(jīng)常見到),且對具體的硬件不是很了解,則可能在排除問題上花費大量的不必要的時間。 (4)如果你想自己嘗試設計一個操作系統(tǒng),則先在一個提供源碼級調試的軟件仿真器上進行開發(fā),可能會大大提高你的開發(fā)進度。,SkyEye的目標:在通用的Linux和Windows平臺上實現(xiàn)一個純軟件集成開發(fā)環(huán)境,模擬多種主流的嵌入式計算機系統(tǒng)。 目前可在SkyEye上運行的系統(tǒng)有: 1)多種嵌入式操作系統(tǒng),如ARM Linux、Clinux、C/OS-II、elastos2)各種系統(tǒng)軟件,如
3、嵌入 式TCP/IP協(xié)議棧lwIP,圖形子系統(tǒng)MiniGUI等 可對上述軟件系統(tǒng)進行源碼級的分析、調試和測試。,SkyEye模擬硬件介紹,目前,SkyEye模擬了大量的硬件,包括CPU內核、存儲器、存儲器管理單元、緩存單元、串口、網(wǎng)絡芯片、時鐘等 CPU和開發(fā)板系列: 目前SkyEye可以模擬的CPU主要是基于ARM內核的CPU,包括ARM7TDMI,ARM720T, ARM9TDMI,ARM9xx,ARM10 xx,StrongARM,XScale等,目前SkyEye模擬的開發(fā)板包括 基于Atmel 91X40/AT91RM92 CPU的開發(fā)板,基于Crirus Logic ep7312的開
4、發(fā)板、基于StrongARM CPU的ADSBITSY開發(fā)板,基于XScale PXA250 CPU的LUBBOCK開發(fā)板、基于SAMSUNG S3C4510B/S3C44B0 CPU的開發(fā)板、基于SHARP LH7A400 CPU的開發(fā)板、基于Philip LPC22xx CPU的開發(fā)板等。 主要模擬了對應各個開發(fā)板的串口、時鐘、RAM、ROM、LCD、網(wǎng)絡芯片等硬件外設。,存儲器管理單元和緩存單元 MMUMemory Management Unit,存儲器管理單元,是用來管理虛擬內存系統(tǒng)的硬件。 MMU的兩個主要功能是:1)將虛地址轉換成物理地址;2)控制存儲器的存取權限。 MMU關掉時,
5、虛地址直接輸出到物理地址總線,TLB,Translation Lookaside Buffers在MMU中,存放從虛擬地址到物理地址的匹配表 保存的內容包括:虛址及其對應的物理地址,權限,域和映射類型。 當CPU對一虛擬地址進行存取時,首先搜索TLB表以查找對應的物理 地址等信息,如果沒有查到,則進行查找translation table,稱為Translation Table Walk(簡稱TTW)。經(jīng)過TTW過程后,將查到的信息保存到TLB。然后根據(jù)TLB表項的物理地址進行讀寫。,CACHE,緩存單元主要用于緩存內存 中的數(shù)據(jù),其讀寫速度遠快于內存的讀寫速度,所以可以提高CPU的內存數(shù)據(jù)的
6、訪問效率。 write/read buffer硬件單元write/read buffer硬件單元的作用與CACHE的作用類似。,MMU、CACHE、write/read buffer一般是高性能CPU的重要組成部分,且不同類型CPU的MMU、CACHE、write/read buffer的邏輯行為也有一定的差異。為了支持模擬多種類型CPU的MMU/CACHE,SkyEye包含了一個通用的MMU/CACHE模擬實現(xiàn)。通 過對一些參數(shù)的調整可以支持模擬多種類型的MMU/CACHE物理結構和邏輯行為。,網(wǎng)絡芯片 目前SkyEye模擬了網(wǎng)絡芯片8019AS, 其特點是:NE2000兼容,內建 16KR
7、AM緩沖區(qū),10MB傳輸速率。 雖然目前模擬的開發(fā)板上不一定有網(wǎng)絡芯片8019AS,但可以在模擬的開發(fā)板上加上網(wǎng)絡芯片8019AS 的模擬。,目前已經(jīng)在在基于Atmel91X40 CPU的開發(fā)板上實現(xiàn)了網(wǎng)絡芯片8019AS擴展,并增加了C/OS-II和Clinux的網(wǎng)絡驅動程序,已經(jīng)支持大量的網(wǎng)絡應用程序,如LwIP (一個TCP/IP協(xié)議棧實現(xiàn))、nfs server/clinet、http server/client、telnet server/client、ftp server/client等。,SkyEye的設計原則,SkyEye軟件的核心在目標模擬模塊。為了提高模擬效率,且能夠模擬更
8、多的CPU、開發(fā)板和各種外設,方便開發(fā)人員進行開發(fā)和學習,SkyEye遵循如下的設計原則: 用C語言編程,采用面向對象的方式定義各種要模擬的硬件; 定義抽象模擬硬件對象,最大化重用代碼; 定義硬件配置腳本,使得不用改動SkyEye代碼就可以靈活地調整各種硬件配置; 保持與GDB上層接口的一致性,這樣可充分利用GDB強大的源代碼級調試功能。,SkyEye的總體結構,SkyEye基于GDB/ARMulator(目前由David McCullough 維護),并進行了全面的改變和擴展。SkyEye建立在GNU GDB的底層,可以模仿多種完整的嵌入式計算機系統(tǒng),目前模擬的硬件包括CPU、內存、I/O寄
9、存器、時鐘、UART、網(wǎng)絡芯片、MMU、CACHE,將來還會模擬 LCD、USB等各種硬件。 在SkyEye上運行的操作系統(tǒng)和各種系統(tǒng)軟件意識不到它們是在一個虛擬的計算機系統(tǒng)上運行。,SkyEye的結構層次,用戶接口模塊:包括命令行用戶界面和圖形用戶界面,完成處理用戶的輸入命令,并把相關調試數(shù)據(jù)輸出給用戶的任務。這一部分基本上直接利用了GDB的用戶接口模塊,并在此基礎上有一定的擴充。 符號處理模塊:主要處理執(zhí)行文件的頭信息,解釋執(zhí)行文件中內嵌的debuger調試信息,對符號表的管理,對源代碼表達式的解析,定位源代碼中的語句位置和機器碼的位置關系等。這一部分也是直接利用了GDB的符號處理模塊,也
10、正是有了這個模塊的支持,SkyEye可以支持源碼級調試。 目標控制模塊:主要完成執(zhí)行控制(如中斷程序的執(zhí)行,設置中斷條件等),程序棧結構分析,對具體目標硬件的控制(如本地調試、遠程調試和模擬調試的控制)。這一部分完成對SkyEye上運行的軟件的控制,提供了多種調試手段。 目標模擬模塊:這一部分是SkyEye的核心。它的功能是模仿計算機系統(tǒng)中的主要硬件(包括CPU、內存和各種硬件外設等)的執(zhí)行,對執(zhí)行文件的機器指令進行解釋,并模擬執(zhí)行每一條機器指令,產(chǎn)生相應的硬件響應等。,SkyEye的安裝,Linux操作系統(tǒng) Windows+MingW或cygwin,查看使用的Linux的版本 uname命令
11、用于打印系統(tǒng)信息使用uname -help可以看到uname命令的使用說明,在Kubuntu上安裝SkyEye,有兩種安裝方法 下載源代碼,編譯并安裝 直接安裝二進制代碼,在Kubuntu上直接安裝二進制代碼,下載編譯好的SkyEye的二進制包 到上找到最合適的版本 例如 在合適的目錄下解壓縮 /usr/local/或者/opt/ bz2格式使用“tar -xjvf 壓縮文件名”,在Kubuntu上直接安裝二進制代碼,skyeye在解壓縮得到的目錄中的bin子目錄下 將skyeye的路徑添加到PATH 修改/.bashrc文件:添加 export PATH=$PAT
12、H:所選目錄/skyeye-insight/bin(如下圖),為使修改后的.bashrc有效,必須先退出控制臺,然后重新啟動控制臺 判斷是否設置成功 命令:echo $PATH 對sky使用tab鍵功能 OK? 運行skyeye,得到進入skyeye的畫面,如圖:,SkyEye的使用,為cLinux安裝交叉編譯環(huán)境,并配置cLinux 編譯生成cLinux和包含應用程序的文件系統(tǒng) 用skyeye運行和調試cLinux內核,安裝交叉編譯環(huán)境,為uclinux的開發(fā)提供相應的交叉編譯工具 如:arm-elf-tools-20030314.sh 安裝 在root權限下運
13、行 sh ./arm-elf-tools-20030314.sh 檢查一下 對 arm-elf運用shell的tab功能可以看到一系列arm-elf打頭的程序,如 binutils系列、gcc、gdb等等 也可以使用命令:arm-elf-gcc -v,測試arm-elf-gcc,源代碼,測試arm-elf-gcc,編譯 arm-elf-gcc -Wl,-elf2flt -o hello hello.c 得到的輸出文件 hello和hello.gdb 檢查hello的格式 file hello 如何運行hello?,BFLT格式:binary FLAT,-Wl,-elf2flt選項讓鏈接器將el
14、f格式轉換為flt格式,運行hello,hello必須在target環(huán)境上,無法在host上 如何準備target的運行環(huán)境 skyeye=模擬器 cLinux=操作系統(tǒng)? 文件系統(tǒng)? ?,獲得cLinux操作系統(tǒng),兩種方案 使用skyeye提供的二進制包 自己動手編譯配置cLinux,編譯配置cLinux,到cLinux網(wǎng)站的發(fā)行頁上下載uClinux-dist-20051110 使用”tar -xzvf”解壓縮,得到uClinux-dist目錄 在uClinux-dist目錄下 第一步:配置cLinux 命令:make config在vendor/product選項中選擇GDB/ARMul
15、atorKernel版本選擇2.4.x其他選項不變(使用缺省選項),第二步:編譯生成cLinux和文件系統(tǒng)命令:make dep; make 編譯成功?,用skyeye運行cLinux,第一步,制作skyeye的硬件配置文件 vi skyeye.conf 第二步,提供上面所需的boot.rom 命令:ln -s images/romfs.img boot.rom,第三步,在skyeye下運行cLinux 命令:sudo skyeye linux-2.4.x/linux 進入skyeye后, 命令1:target sim 命令2:load 命令3:run 進入cLinux,sudo arm-el
16、f-skyeye e linux-2.4.x/linux,進入畫面,直接使用cLinux的二進制包,下載skyeye的二進制包 skyeye-binary-testutils-1.2.0 使用“tar -xjvf” 解壓縮,使用cLinux作為運行操作系統(tǒng) 使用skyeye運行cLinux skyeye linux target sim load run,接下來,將hello拷貝到cLinux的文件系統(tǒng)中,將boot.rom中的內容在host中解開,方法如下: mkdir romfs mkdir /mnt/tmp mount -o loop boot.rom /mnt/tmp cp -r /m
17、nt/tmp/* romfs 將hello拷貝到romfs中的bin目錄下 重新生成boot.rom映像 genromfs -f boot.rom d romfs/,建立/mnt/tmp目錄,解開并拷貝到romfs目錄下,拷貝hello到/bin目錄下,重新制作boot.rom,運行hello,在模擬器上運行 啟動模擬器、裝載操作系統(tǒng)、裝載文件系統(tǒng) skyeye file linux target sim load run 運行hello,在cLinux界面下,可以得到:,課程實驗,實驗目的: 基于Skyeye硬件模擬平臺,熟悉嵌入式開發(fā)的基本流程。 實驗內容: 1.建立交叉編譯環(huán)境。 可以自
18、己手工編譯,也可下載編譯好的二進制包直接安裝。 推薦用已編譯好的二進制包(如,arm-elf-tools-20030314.sh,可從下載),2.編譯u-boot,在skyeye下進行bootloader測試 可以自己手工編譯u-boot,也可利用編譯好的bootloader(skyeye-binary-testutils)。 推薦手工編譯u-boot 。 3.編譯uClinux,在skyeye下進行內核測試 可以自己手工配置編譯uClinux,也可利用編譯好的內核(skyeye-binary-testutils)。 推薦手工配置編譯uClinux。,4.在交叉編譯環(huán)境下對hello1.c(如下所示)進行編譯,生成ELF格式可執(zhí)行文件hello1,#include int main(void)int i; for(i = 0; i 6; i+) printf(i = %d ,i); printf(Hello, e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第四章 電磁振蕩與電磁波 訓練題(含答案)
- 2026年西安電子科技大學實驗室與設備處(電子封裝與檢測實驗平臺)外聘人員一般崗位招聘備考題庫及一套參考答案詳解
- 2026年杭州市學軍小學教育集團誠聘語文、科學教師(非事業(yè))備考題庫完整參考答案詳解
- 2026年長沙市城市建設檔案館公開招聘普通雇員備考題庫及完整答案詳解一套
- 2026年濱州醫(yī)學院煙臺附屬醫(yī)院高級專業(yè)技術崗位公開招聘人員備考題庫參考答案詳解
- 2026年黑龍江省金融控股集團有限公司及權屬企業(yè)招聘備考題庫及完整答案詳解一套
- 2026年珠江水產(chǎn)研究所觀賞漁業(yè)研究室項目崗招聘備考題庫及完整答案詳解一套
- 住宿員工安全管理制度
- 唐山高速公路集團有限公司為所屬子公司2025年公開招聘專業(yè)人才備考題庫及完整答案詳解一套
- 養(yǎng)老院醫(yī)療保健服務管理制度
- 材料樣品確認單
- 彝族文化和幼兒園課程結合的研究獲獎科研報告
- 空調安裝免責協(xié)議
- 《傳感器與檢測技術》試題及答案
- 湖北省襄樊市樊城區(qū)2023-2024學年數(shù)學四年級第一學期期末質量檢測試題含答案
- 初中班會主題課件科學的復習事半功倍(共23張PPT)
- PCB封裝設計規(guī)范
- 新北師大版八年級數(shù)學下冊導學案(全冊)
- GB/T 9349-2002聚氯乙烯、相關含氯均聚物和共聚物及其共混物熱穩(wěn)定性的測定變色法
- GB/T 32473-2016凝結水精處理用離子交換樹脂
- 《水利水電工程等級劃分及洪水標準》 SL252-2000
評論
0/150
提交評論