嵌入式系統(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頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2012年上學(xué)期嵌入式系統(tǒng)設(shè)計課程大作業(yè)1、敘述下列相關(guān)名詞的含義ARM、xscale、PXA255、RISC、體系結(jié)構(gòu)答:1)ARM:英國的一家公司;時下流行的一種體系結(jié)構(gòu)。2)XScale:ARM架構(gòu)v5TE指令集的CPU。3)PXA255:XScale的內(nèi)核版本。4)RISC:ReducedInstructionSetComputing,即精簡指令集,一種CPU的設(shè)計概念;與之相對的是CISC,即復(fù)雜指令集5)體系結(jié)構(gòu):嵌入式系統(tǒng)硬件與軟件的銜接;它確定嵌入式系統(tǒng)設(shè)計的部件、部件功能、部件間借口的設(shè)計,并集中于嵌入式系統(tǒng)的核心部分——處理器的運算與內(nèi)存的存取。2、畫出嵌入式硬件系統(tǒng)組成的模塊結(jié)構(gòu)圖3、敘述基于linux的嵌入式平臺的搭建過程答:Linux嵌入式平臺的搭建符合嵌入式平臺搭建的一般過程,但是具體到Linux嵌入式平臺,又有些許不同,其搭建過程如下:1)處理器以及硬件開發(fā)平臺的選擇以處理器為主,結(jié)合考慮硬件平臺的情況。處理器考慮的問題包括應(yīng)用類型及I/O接口、主頻和功耗、對不同類型存儲器的支持、封裝等;硬件平臺的選擇和設(shè)計包括內(nèi)存和外圍存儲器、輸入輸出接口以及設(shè)備等幾項主要內(nèi)容。2)操作系統(tǒng)的選擇由于已經(jīng)選取了Linux操作系統(tǒng),因此此處主要是內(nèi)核版本的選取以及對內(nèi)核功能的裁剪。3)開發(fā)環(huán)境的選取即開發(fā)工具的選取,主要是指開發(fā)軟件的選取,比如常用的minicom。4)開發(fā)實施首先,Bootloader的燒制。目的是對硬件系統(tǒng)基本功能的支持,比如串口通信。其次,內(nèi)核文件的制作。接下來,內(nèi)核文件的拷貝。此時,可以通過串口或者網(wǎng)口實施傳輸,能夠大幅度提高傳輸速度。最后,在主機使用開發(fā)軟件,完成對硬件系統(tǒng)的開發(fā)工作。包括硬件驅(qū)動程序、上層的應(yīng)用程序、系統(tǒng)的集成與調(diào)試等。4、如下為xscale處理器的內(nèi)核框圖:簡述內(nèi)核框圖中每個模塊的名稱及指標。答:1)InstructionCache:指令Cache;大小32KB,32路,支持線性鎖定2)Micro-Processor:微處理器;七級流水3)DataCache:數(shù)據(jù)Cache;最大支持32KB,32路4)DataRam:數(shù)據(jù)Ram;最大支持28KB5)Mini-DataCache:迷你數(shù)據(jù)Cache;大小2KB,2路6)BranchTargetBuffer:分支目標緩存;128入口7)IMMU/DMMU:指令/數(shù)據(jù)存儲管理單元;32路,全相關(guān),支持鎖定8)FillBuffer:填充緩存;4~8入口9)PerformanceMonitoring:功能顯示器10)Debug:硬件中斷斷點記錄11)PowerManagementControl:電源管理控制12)MAC:乘加單元;40位累加/累乘,16位單指令多數(shù)據(jù)流操作,16*32位操作單周期支持量),其中register_chrdev()是內(nèi)核提供的函數(shù),作用是完成注冊新的字符設(shè)備*/ printf("%s%sinitialized.\n",KEYPAD_NAME,KEYPAD_VERSION); led_off_on(); return0;}staticvoid_exitxhyper250_keypad_exit(void)/*向操作系統(tǒng)卸載設(shè)備函數(shù)*/{ unregister_chrdev(LEDnKEY_MAJOR,"lednkey"); led_off_on();}module_init(xhyper250_keypad_init);/*顯式聲明初始化設(shè)備函數(shù)*/module_exit(xhyper250_keypad_exit);/*顯式聲明卸載設(shè)備函數(shù)*//*通過上述兩個聲明內(nèi)核知道驅(qū)動程序的進入點*/測試文件的源代碼如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#defineLED_SHOW10intfd;staticchar*dev_name="/dev/keypad";intmain(intargc,char**argv){ intdata=0,pre_data; fd=open(dev_name,O_RDWR); if(!(fd>=0)) { printf("%sfileopenfailed\n",dev_name); exit(-1); } printf("\nkeypadApp:pressthepushbuttonseeshowled-ExitCtrl-C\n",dev_name); ioctl(fd,LED_SHOW,1); while(1) { do { pre_data=data; read(fd,(char*)&data,sizeof(data)); data=(data&0xff); }while(data==0); if(pre_data==0) { printf("Write%dLED\n",data); write(fd,(constchar*)&data,sizeof((constchar)data)); } } close(fd); return0;}1)數(shù)據(jù)結(jié)構(gòu)structfile_operations{structmodule*owner;loff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char__user*,size_t,loff_t*);ssize_t(*aio_read)(structkiocb*,char__user*,size_t,loff_t);ssize_t(*write)(structfile*,constchar__user*,size_t,loff_t*);ssize_t(*aio_write)(structkiocb*,constchar__user*,size_t,loff_t);int(*readdir)(structfile*,void*,filldir_t);unsignedint(*poll)(structfile*,structpoll_table_struct*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);long(*unlocked_ioctl)(structfile*,unsignedint,unsignedlong);long(*compat_ioctl)(structfile*,unsignedint,unsignedlong);int(*mmap)(structfile*,structvm_area_struct*);int(*open)(structinode*,structfile*);inode_operations。int(*flush)(structfile*);int(*release)(structinode*,structfile*);int(*fsync)(structfile*,structdentry*,intdatasync);int(*aio_fsync)(structkiocb*,intdatasync);int(*fasync)(int,structfile*,int);int(*lock)(structfile*,int,structfile_lock*);ssize_t(*readv)(structfile*,conststructiovec*,unsignedlong,loff_t*);ssize_t(*writev)(structfile*,conststructiovec*,unsignedlong,loff_t*);ssize_t(*sendfile)(structfile*,loff_t*,size_t,read_actor_t,void*);ssize_t(*sendpage)(structfile*,structpage*,int,size_t,loff_t*,int);unsignedlong(*get_unmapped_area)(structfile*,unsignedlong,unsignedlong,unsignedlong,unsignedlong);int(*check_flags)(int);int(*dir_notify)(structfile*filp,unsignedlongarg);int(*flock)(structfile*,int,structfile_lock*);}2)程序注釋#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#defineLED_SHOW10intfd;staticchar*dev_name="/dev/keypad";intmain(intargc,char**argv){ intdata=0,pre_data;//使用函數(shù)open打開設(shè)備keypad fd=open(dev_name,O_RDWR);//打開失敗,顯示出錯信息 if(!(fd>=0)) { printf("%sfileopenfailed\n",dev_name); exit(-1); }//打開成功,提示用戶輸入 printf("\nkeypadApp:pressthepushbuttonseeshowled-ExitCtrl-C\n",dev_name);//循環(huán)顯示LED,看LED是否正常 ioctl(fd,LED_SHOW,1); while(1) { //采用忙等待方式掃描用戶輸入,傳遞給write函數(shù) do { pre_data=data;//使用函數(shù)read從設(shè)備keypad讀取數(shù)據(jù) read(fd,(char*

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論