版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2015嵌入式大作業(yè) 一、敘述JTAG接口在嵌入式開發(fā)中的作用。JTAG是一種國際標準測試協(xié)議主要用于芯片內(nèi)部測試,JTAG接口的主要作用如下所述:u 它最初用來對電路和芯片進行邊界掃描測定,它的基本原理是在器件內(nèi)部定義一個測試是訪問口(Test Access Port),通過JTAG專用的測試工具對器件內(nèi)部節(jié)點進行測試。通過電路的邊界掃描測試技術(shù),用具有邊界掃描功能的芯片構(gòu)成的印制板電路,可通過相應的測試設(shè)備檢測芯片功能,檢測電路連接的正確性同時檢測它是否有預定的邏輯功能,從而對這塊印制電路進行故障檢測和故障定位。u JTAG接口可以對目標板進行測試,還可以對目標板系統(tǒng)的存儲單元編程,經(jīng)常通
2、過JTAG接口直接燒寫嵌入式系統(tǒng)Flash存儲器。u JTAG的引腳定義1. TCK為TAP提供一個獨立基本的時鐘信號,TAP的所有操作都是通過這個時鐘信號來驅(qū)動的。2. TMS用來控制TAP狀態(tài)機的轉(zhuǎn)換,通過TMS新號可以控制TAP在不同的狀態(tài)間轉(zhuǎn)換,TMS信號在TCK信號的上升沿有效。3. TDI是數(shù)據(jù)輸入的接口,所有輸入到特定寄存器的數(shù)據(jù)都要通過TDI一位一位串行輸出。4. TDO數(shù)據(jù)輸出的接口所有從特定寄存器輸出的數(shù)據(jù)都要通過TDO一位一位串行輸出。5. TRST可以用來對TAP Controller進行復位,該信號線可選,TMS也可以對其進行復位。6. VTREF接口信號電平參考電壓
3、一般直接接V(supply),這個可以用來確定ARM的JTAG的接口邏輯電平。7. RTCK可選項,由目標端反饋給仿真器的時鐘信號,用來同步TCK信號的產(chǎn)生,不使用時直接接地。8. System Reset可選項,與目標板上的系統(tǒng)復位信號相連,可以直接對目標系統(tǒng)復位,同時可以檢測目標系統(tǒng)的復位情況,為了防止誤觸發(fā)應在目標端加上適當?shù)纳衔浑娮琛?. USERIN用戶自定義輸入,可以接到一個口上,用來接收上位機的控制。10. USER OUT 用戶自定義輸出,可以接到一個口上,用來向上位機反饋一個狀態(tài)。二、敘述嵌入式平臺的搭建過程,以linux為例。1) 一:建立宿主機開發(fā)環(huán)境 建立交叉編譯的環(huán)境
4、即在宿主機上安裝與開發(fā)板相應的編譯器及庫函數(shù),以便能夠在宿主機上應用開發(fā)工具編譯在目標板上運行的Linux引導程序,內(nèi)核,文件系統(tǒng)和應用程序交叉編譯:在特殊的環(huán)境下,把嵌入式程序代碼編譯成不同的CPU所對應的機器代碼。開發(fā)時使用宿主機上的交叉編譯,匯編及鏈接工具形成可執(zhí)行的二進制代碼(該代碼只能在開發(fā)板上執(zhí)行),然后下載到開發(fā)板上運行2) 下載和安裝arm-Linux-gcc編譯工具鏈下載最新的arm-Linux-gcc并解壓至當前目錄下在系統(tǒng)配置文件profile中設(shè)置環(huán)境變量 方法:直接在profile文件中加入搜索路徑 立即使新的環(huán)境變量生效:運行source命令,檢查是否將路徑加入到p
5、ath,測試是否安裝成功,編譯程序,測試交叉工具鏈3) 配置超級終端minicom minicom是宿主機與目標板進行通信的終端:在宿主機Linux終端中輸入:minicom-s或輸入minicom然后按ctrl+A+O對超級終端minicom進行配置,再選擇串口并配置串口,最后保存即可4) 建立數(shù)據(jù)共享服務:NFS服務是Linux系統(tǒng)中經(jīng)常使用的數(shù)據(jù)文件共享服務5) 編譯嵌入式系統(tǒng)內(nèi)核:內(nèi)核配置,建立依存關(guān)系,建立內(nèi)核6) 制作文件系統(tǒng)三、給出現(xiàn)今有哪些用于嵌入式開發(fā)的芯片名稱,他們分是哪些公司的產(chǎn)品?體系結(jié)構(gòu)是什么?1) 基于32位RISC微處理器芯片的ARM7系列,ARM9系列,ARM9
6、E系列,ARM10E系列都是ARM公司的產(chǎn)品,arm9以上的體系結(jié)構(gòu)是哈佛總線體系結(jié)構(gòu)以下的是馮。諾依曼體系。2) TI公司的DSP處理器內(nèi)核是哈佛總線體系結(jié)構(gòu)。3) PowerPC公司的芯片,基于RISC結(jié)構(gòu),是哈佛總線體系結(jié)構(gòu)。 4) MIPS公司的芯片,基于RISC結(jié)構(gòu),是哈佛總線體系結(jié)構(gòu)。 四、現(xiàn)今較流行的嵌入式操作系統(tǒng)有哪些?1 VxWork2 Linux3 C/OS-4 windows CE5 Android五、PXA270嵌入式開發(fā)板的接口有哪些?全雙工異步串行口和硬件流控制串行口,10M標準以太網(wǎng)接口10M/100M標準以太網(wǎng)接口,USB接口,紅外通訊口,音頻接口,存儲卡口,視
7、頻和觸摸屏接口攝像頭接口,RTC時鐘接口,調(diào)試接口,下載接口,電源接口。六、請寫出Nor Flash和 Nand Flash的區(qū)別。Flash是一種非易失閃存,它具有和ROM一樣的掉電后數(shù)據(jù)不會丟失的特性。它主要分為Nor Flash和 Nand Flash。他們的主要區(qū)別如下所示: Nor Flash Nand Flash接口時序同SRAM,容易使用地址/數(shù)據(jù)線復用,數(shù)據(jù)位較窄讀取速度較快讀取速度較慢檫除速度慢,以64-128KB的塊為單位檫除速度快,以8-32KB的塊為單位寫入速度慢(因為一般要檫除)寫入速度快隨機存取速度較快,支持XIP(eXecute In Place,芯片內(nèi)執(zhí)行),適
8、用于代碼存儲。在嵌入式系統(tǒng)中,常用于存放引導程序、根文件等順序讀取速度較快,隨機存取速度慢,適用于數(shù)據(jù)存儲(如大容量的多媒體應用)。在嵌入式系統(tǒng)中,常用于存放用戶文件系統(tǒng)等單片容量較小為1-32MB單片容量較大為8-128MB,提高了單元密度最大檫寫次數(shù)為10萬次最大檫寫次數(shù)為100萬次七、馮。諾依曼架構(gòu)與哈佛架構(gòu)的區(qū)別。他們的主要區(qū)別是計算機的存儲結(jié)構(gòu)和總線連接形式不同。在馮·諾依曼的結(jié)構(gòu)中,存儲器內(nèi)部的數(shù)據(jù)存儲空間和程序存儲空間是合在一起的,他們共享存儲器總線,即數(shù)據(jù)和指令在同一條總線上通過時分復用的方式進行傳輸,這種結(jié)構(gòu)在高速運行時,不能達到同時取指令和取操作數(shù)的目的從而形成傳
9、輸過程的瓶頸。在哈佛總線體系結(jié)構(gòu)的芯片內(nèi)部,數(shù)據(jù)存儲空間和程序存儲空間是分開的,所以哈佛總線體系在指令執(zhí)行時可以同時存取指令(來自程序空間)和取操作數(shù)(來自數(shù)據(jù)空間),因此具有更高的執(zhí)行效率,修正的哈佛總線結(jié)構(gòu)還可以在程序空間和數(shù)據(jù)空間之間相互傳送數(shù)據(jù)。(目前大多數(shù)DSP和ARM9以上的嵌入式系統(tǒng)微處理器內(nèi)核都采用哈佛總線體系結(jié)構(gòu)而ARM7采用的則是馮·諾依曼結(jié)構(gòu)) 8、 單周期3級流水的情況下,第10個指令周期時,第幾條指令執(zhí)行結(jié)束?三級流水讀取指令過程: 取指從存儲器裝載一條指令 譯碼識別將要被執(zhí)行的指令 執(zhí)行處理指令并將結(jié)果寫會寄存器故ARM正在執(zhí)行第1條指令的同時對第2條指令
10、進行譯碼,并將第3條指令從存儲器中取出。所以,ARM7流水線只有在取第10條指令時,第7條指令才算完成執(zhí)行。九、下面是linux下的一個簡單的設(shè)備驅(qū)動程序,寫出linux設(shè)備驅(qū)動常用的數(shù)據(jù)結(jié)構(gòu),同時閱讀下面代碼,請給出測試程序中的每條語句加以注釋。設(shè)備驅(qū)動程序Keypad.c的源代碼:#include <linux/module.h>/最基本的文件,支持動態(tài)添加和卸載模塊。Hello World驅(qū)動要這一個文件就可以了#include <linux/fs.h> /包含了文件操作相關(guān)struct的定義,例如大名鼎鼎的struct file_operations#inclu
11、de <linux/init.h> /初始化頭文件#include <linux/poll.h>/輪詢文件#include <linux/types.h>/對一些特殊類型的定義,例如dev_t, off_t, pid_t.其實這些類型大部分都是unsigned int型通過一連串的typedef變過來的,只是為了方便閱讀。#include <linux/rtc.h>/可以在芯片上產(chǎn)生周期性的中斷#include <linux/delay.h>/延時頭文件#include <asm/hardware.h>/與處理器相關(guān)的硬件
12、#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/宏定義/*EXT_KEY_CS 為向外部L
13、ED進行數(shù)值設(shè)定,它定義在其它頭文件里*/void led_off_on() int i;EXT_LED_CS = 0xff;for(i =0 ; i<8;+i)EXT_LED_CS = (1 << i) & 0xff);/*點亮相應LED燈*/udelay(30000);/調(diào)用udelay函數(shù)來延遲EXT_LED_CS = 0xff;/*應用程序用open來打開設(shè)備文件,實際上調(diào)用驅(qū)動的lednkey_open()函數(shù)*/ int lednkey_open(struct inode *inode, struct file *filp)/打開設(shè)備文件MOD_INC_U
14、SE_COUNT;/模塊自身通過 MOD_INC_USE_COUNT,宏來管理自己被使用的計數(shù)。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
15、; unsigned char Bottontmp = 0;int i;BottonStatus = ( EXT_KEY_CS & 0xff ); /*按鍵狀態(tài)*/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ù)*/
16、return length;ssize_t 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);/點亮相應LED燈return
17、 (0);int lednkey_ioctl(struct 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ù)是與用戶的應用程序里對設(shè)備文件操作的函數(shù)相對應的*/struct file_operations lednkey_fops = open: lednkey_open,read: le
18、dnkey_read,write: lednkey_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)注
19、冊一個主號為251,設(shè)備名為"lednkey",并傳遞設(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, "
20、;lednkey" ); 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_S
21、HOW 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è)備keypad if( !(fd >=0) )printf("%s file open failedn", dev_name );exit(-1);/打開失敗,顯示出錯信息printf("nkeypad App : press the push
22、 button see show led - Exit Ctrl-C n",dev_name);/打開成功,提示用戶輸入 ioctl(fd,LED_SHOW,1);/循環(huán)顯示LED,看LED是否正常while(1)dopre_data = data;read( fd, (char * )&data, sizeof(data) );data = (data & 0xff);while(data = 0);if( pre_data = 0)printf("Write %d LEDn",data);write( fd, (const char *)&am
23、p;data, sizeof(const char )data) ); /采用忙等待方式掃描用戶輸入,傳遞給write函數(shù) close( fd );/使用函數(shù)close關(guān)閉設(shè)備keypadreturn 0;常用數(shù)據(jù)結(jié)構(gòu):(1)file_operations 結(jié)構(gòu):struct file_operations struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char _user *, size_t, loff_t *); ssize_t (*w
24、rite) (struct file *, const char _user *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll)
25、(struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_s
26、truct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*aio_fsync) (struct kiocb *, int datasync); int (*fasync) (int, struct file *, int); i
27、nt (*lock) (struct file *, int, struct file_lock *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年通信設(shè)備采購與維護合同2篇
- 電梯安裝工程2025年度技術(shù)咨詢合同6篇
- 二零二五年度論壇活動策劃服務合同模板6篇
- 二零二五版搬家服務及家居清潔維護合同3篇
- 二零二五年度廢鋼市場供應與環(huán)保處理服務合同3篇
- 二零二五版房屋買賣及鄰里關(guān)系協(xié)調(diào)服務合同3篇
- 二零二五年度股東干股合作企業(yè)社會責任履行合同3篇
- 幼兒園2025年度食品供應合同2篇
- 二零二五版租賃房屋改造裝修合同3篇
- 二零二五年酒店股權(quán)分割與資產(chǎn)重組咨詢合同3篇
- 2023社會責任報告培訓講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對聯(lián)大全新春對聯(lián)集錦
- 表B. 0 .11工程款支付報審表
- 警務航空無人機考試題庫及答案
- 空氣自動站儀器運營維護項目操作說明以及簡單故障處理
- 新生兒窒息復蘇正壓通氣課件
- 法律顧問投標書
- 班主任培訓簡報4篇(一)
- 成都市數(shù)學八年級上冊期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復重建的專家共識
評論
0/150
提交評論