嵌入式系統(tǒng)設(shè)計大作業(yè)_第1頁
嵌入式系統(tǒng)設(shè)計大作業(yè)_第2頁
嵌入式系統(tǒng)設(shè)計大作業(yè)_第3頁
嵌入式系統(tǒng)設(shè)計大作業(yè)_第4頁
嵌入式系統(tǒng)設(shè)計大作業(yè)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 11 / 11嵌入式系統(tǒng)設(shè)計大作業(yè)學(xué)號姓名:羅翔1、 敘述JTAG接口在嵌入式開發(fā)中的作用。答:(1)用于燒寫FLASH   燒寫FLASH的軟件有很多種包括jatg.exe fluted flashpgm等等,但是所有這些軟件都是通過jtag接口來燒寫flash的,由于pc機上是沒有jtag接口的,所以利用并口來傳遞信息給目標(biāo)板的jtag接口。所以就需要并口轉(zhuǎn)jtag接口的電路。 (2)用于調(diào)試程序 同時應(yīng)該注意到j(luò)tag接口還可以用來調(diào)試程序。而調(diào)試程序(如ARM開發(fā)組件中的AXD)為了通過jtag接口去調(diào)試目標(biāo)板上的程序

2、,同樣是使用pc的并口轉(zhuǎn)jtag接口來實現(xiàn)與目標(biāo)板的通信。這樣,并口轉(zhuǎn)jtag接口的電路就有了兩種作用。  (3)仿真器 根據(jù)(1)和(2)的總結(jié),并口轉(zhuǎn)jtag接口的電路是兩種應(yīng)用的關(guān)鍵,而這種電路在嵌入式開發(fā)中就叫仿真器。并口轉(zhuǎn)jtag接口的電路有很多種,有簡單有復(fù)雜的,常見的仿真器有Wigger,EasyJTAG,Multi-ICE等。這些所謂的仿真器的內(nèi)部電路都是并口轉(zhuǎn)jtag接口,區(qū)別只是電路不同或使用的技術(shù)不同而已。 2、 敘述嵌入式平臺的搭建過程,以linux為例。答:1) 一:建立宿主機開發(fā)環(huán)境     &#

3、160;  建立交叉編譯的環(huán)境即在宿主機上安裝與開發(fā)板相應(yīng)的編譯器及庫函數(shù),以便能夠在宿主機上應(yīng)用開發(fā)工具編譯在目標(biāo)板上運行的Linux引導(dǎo)程序,內(nèi)核,文件系統(tǒng)和應(yīng)用程序 交叉編譯:在特殊的環(huán)境下,把嵌入式程序代碼編譯成不同的CPU所對應(yīng)的機器代碼。 開發(fā)時使用宿主機上的交叉編譯,匯編及鏈接工具形成可執(zhí)行的二進制代碼(該代碼只能在開發(fā)板上執(zhí)行),然后下載到開發(fā)板上運行 2) 下載和安裝arm-Linux-gcc編譯工具鏈 下載最新的arm-Linux-gcc并解壓至當(dāng)前目錄下 在系統(tǒng)配置文件profile中設(shè)置環(huán)境

4、變量 方法:直接在profile文件中加入搜索路徑  立即使新的環(huán)境變量生效:運行source命令,檢查是否將路徑加入到path,測試是否安裝成功, 編譯程序,測試交叉工具鏈 3) 配置超級終端minicom minicom是宿主機與目標(biāo)板進行通信的終端:在宿主機Linux終端中輸入:minicom-s或輸入minicom然后按ctrl+A+O對超級終端minicom進行配置,再選擇串口并配置串口,最后保存即可 4) 建立數(shù)據(jù)共享服務(wù):NFS服務(wù)是Linux系統(tǒng)中經(jīng)常使用的數(shù)據(jù)文件共享服務(wù) 5)

5、 編譯嵌入式系統(tǒng)內(nèi)核:內(nèi)核配置,建立依存關(guān)系,建立內(nèi)核 6) 制作文件系統(tǒng)3、 給出現(xiàn)今有哪些用于嵌入式開發(fā)的芯片名稱,他們分別是哪些公司的產(chǎn)品?體系結(jié)構(gòu)是什么?S3C2410X基于ARM的Sumsang;XscalePXA255/PXA270基于ARM的Intel;摩托羅拉MC基于68k;Power 601基于Power PC;MIPS32Kc基于MIPS4、 現(xiàn)今較流行的嵌入式操作系統(tǒng)有哪些? 答: (1) VxWorks (2)wince (3)linux (4)android (5)C/OS-5、 PXA270嵌入式開發(fā)板的接口有哪些? 答: 全

6、雙工異步串行口和硬件流控制串行口,10M標(biāo)準(zhǔn)以太網(wǎng)接口10M/100M標(biāo)準(zhǔn) 以太網(wǎng)接口,USB接口,紅外通訊口,音頻接口,存儲卡口,視頻和觸摸屏接口攝像頭接口,RTC時鐘接口,調(diào)試接口,下載接口,電源接口。6、 請寫出Nor Flash和 Nand Flash的區(qū)別。 Nor FlashNand Flash接口時序同SRAM,容易使用地址/數(shù)據(jù)線復(fù)用,數(shù)據(jù)位較窄讀取速度較快讀取速度較慢檫除速度慢,以64-128KB的塊為單位檫除速度快,以8-32KB的塊為單位寫入速度慢寫入速度快隨機存取速度較快,支持XIP(eXecute In Place,芯片內(nèi)執(zhí)行),適用于代碼存儲。在

7、嵌入式系統(tǒng)中,常用于存放引導(dǎo)程序、根文件等順序讀取速度較快,隨機存取速度慢,適用于數(shù)據(jù)存儲(如大容量的多媒體應(yīng)用)。在嵌入式系統(tǒng)中,常用于存放用戶文件系統(tǒng)等單片容量較小為1-32MB 單片容量較大為8-128MB,提高了單元密度最大檫寫次數(shù)為10萬次最大檫寫次數(shù)為100萬次7、 馮。諾依曼架構(gòu)與哈佛架構(gòu)的區(qū)別。 答: 他們的主要區(qū)別是計算機的存儲結(jié)構(gòu)和總線連接形式不同。 在馮·諾依曼的結(jié)構(gòu)中,存儲器內(nèi)部的數(shù)據(jù)存儲空間和程序存儲空間是合在一起的,他們共享存儲器總線,即數(shù)據(jù)和指令在同一條總線上通過時分復(fù)用的方式進行傳輸,這種結(jié)構(gòu)在高速運行時,不能達到同時取指令和取操作

8、數(shù)的目的從而形成傳輸過程的瓶頸。 在哈佛總線體系結(jié)構(gòu)的芯片內(nèi)部,數(shù)據(jù)存儲空間和程序存儲空間是分開的,所以哈佛總線體系在指令執(zhí)行時可以同時存取指令(來自程序空間)和取操作數(shù)(來自數(shù)據(jù)空間),因此具有更高的執(zhí)行效率,修正的哈佛總線結(jié)構(gòu)還可以在程序空間和數(shù)據(jù)空間之間相互傳送數(shù)據(jù)。8、 單周期3級流水的情況下,第10個指令周期時,第幾條指令執(zhí)行結(jié)束? 答: 第七條 9、下面是linux下的一個簡單的設(shè)備驅(qū)動程序,寫出linux設(shè)備驅(qū)動常用的數(shù)據(jù)結(jié)構(gòu),同時閱讀下面代碼,請給出測試程序中的每條語句加以注釋。設(shè)備驅(qū)動程序Keypad.c的源代碼:#include <linux/module.

9、h>/最基本的文件,支持動態(tài)添加和卸載模塊。#include <linux/fs.h>/包含了文件操作相關(guān)struct的定義#include <linux/init.h>/初始化頭文件#include <linux/poll.h>/輪詢文件#include <linux/types.h>#include <linux/fs.h>#include <linux/rtc.h>/可以在芯片上產(chǎn)生周期性的中斷#include <linux/delay.h>/延時頭文件#include <asm/hardwa

10、re.h>/與處理器相關(guān)的硬件#include <asm/delay.h>/延時頭文件#include <asm/uaccess.h>/與處理器相關(guān)的入口#define LEDnKEY_MAJOR 251#define KEYPAD_NAME "X-Hyper250 Keypad"#define KEYPAD_VERSION "Version 0.1"#define EXT_KEY_CS EXT_PORT2/宏定義#define EXT_LED_CS EXT_PORT3/宏定義#define LED_SHOW 10/宏定義/

11、*EXT_KEY_CS 為向外部LED進行數(shù)值設(shè)定,它定義在其它頭文件里*/void led_off_on() /*/int i;EXT_LED_CS = 0xff;for(i =0 ; i<8;+i)EXT_LED_CS = (1 << i) & 0xff);/點亮相應(yīng)LED燈udelay(30000);/調(diào)用udelay函數(shù)來延遲EXT_LED_CS = 0xff;/*應(yīng)用程序用open來打開設(shè)備文件,實際上調(diào)用驅(qū)動的lednkey_open()函數(shù)*/int lednkey_open(struct inode *inode, struct file *filp)

12、/打開設(shè)備文件MOD_INC_USE_COUNT;/模塊自身通過return (0); /* success */ int lednkey_release(struct inode *inode, struct file *filp)/釋放設(shè)備文件led_off_on();MOD_DEC_USE_COUNT;return (0);ssize_t lednkey_read(struct file *filp, char *Putbuf, size_t length, loff_t *f_pos)/*按鍵讀取函數(shù)*/unsigned short BottonStatus;/按鍵狀態(tài) unsigne

13、d char Bottontmp = 0;int i;BottonStatus = ( EXT_KEY_CS & 0xff );for(i = 0 ; i < 8; +i)if( (BottonStatus >> i) & 1) = 0 ) /判斷哪個按鍵按下Bottontmp = (i+1);copy_to_user( Putbuf, &Bottontmp, length);/*將數(shù)據(jù)從內(nèi)核態(tài)拷貝到用戶態(tài),這是由定義在<asm/uaccess.h>里的特殊函數(shù)實現(xiàn)在不同的空間傳輸任意字節(jié)的數(shù)據(jù)*/return length;ssize_t

14、 lednkey_write(struct file *filp, const char *Getbuf, size_t length, loff_t *f_pos)int num;unsigned char UsrWantLed; copy_from_user( &UsrWantLed, Getbuf, length);/將數(shù)據(jù)從用戶態(tài)拷貝到核心態(tài)num = ( (UsrWantLed) & 0xff );/確定哪一位要進行設(shè)定EXT_LED_CS = (1 << (num-1);/點亮相應(yīng)LED燈return (0);int lednkey_ioctl(stru

15、ct inode *inode, struct file *filp, unsigned int cmd,unsigned long arg)/lednkey_ioctl 接口函數(shù),主要用于獲取或者改變正在運行的設(shè)備參數(shù)switch(cmd)case LED_SHOW: if(arg)led_off_on(); break;return 0;/以下這些驅(qū)動函數(shù)是與用戶的應(yīng)用程序里對設(shè)備文件操作的函數(shù)相對應(yīng)的struct file_operations lednkey_fops = open: lednkey_open,read: lednkey_read,write: lednkey

16、_write,ioctl: lednkey_ioctl,release: lednkey_release,;static int _init xhyper250_keypad_init(void)/*初始化設(shè)備函數(shù),在函數(shù)名之前加上這個屬性之后,系統(tǒng)會在初始化完成之后丟棄初始化函數(shù),收回它所占用的內(nèi)存,以減小內(nèi)核所占用的內(nèi)存空間,它只對內(nèi)建的驅(qū)動起作用*/int result;result = register_chrdev(LEDnKEY_MAJOR, "lednkey", &lednkey_fops);/*向操作系統(tǒng)注冊一個主號為251,設(shè)備名為"le

17、dnkey",并傳遞設(shè)備驅(qū)動程序的指針為lednkey_fops(全局變量) ,其中register_chrdev ( )是內(nèi)核提供的函數(shù),作用是完成注冊新的字符設(shè)備*/printf("%s %s initialized.n",KEYPAD_NAME, KEYPAD_VERSION);led_off_on();return 0;static void _exit xhyper250_keypad_exit(void)/向操作系統(tǒng)卸載設(shè)備函數(shù) unregister_chrdev( LEDnKEY_MAJOR, "lednkey

18、" ); led_off_on();module_init(xhyper250_keypad_init); /顯式聲明初始化設(shè)備函數(shù)module_exit(xhyper250_keypad_exit);  /顯式聲明卸載設(shè)備函數(shù)測試文件的源代碼如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#define LED_SHOW 10/宏定義int fd;static char *dev_name = "/dev/keypad"int main(int argc, char *argv)int data = 0, pre_data;fd = open( dev_name , O_RDWR );/使用函數(shù)open打開設(shè)備keypadif( !(fd >=0) )printf("

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論