freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)工程課程設(shè)計(jì)報(bào)告(編輯修改稿)

2025-08-30 12:17 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 。 使中斷位處于使能態(tài)STMFD sp!, {r4} 。 保存任務(wù)當(dāng)前 PSRMRS r4, SPSRSTMFD sp!, {r4} 。 SPSR。 OSPrioCur = OSPrioHighRdy // 改變當(dāng)前程序LDR r4, addr_OSPrioCur嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書128LDR r5, addr_OSPrioHighRdyLDRB r6, [r5]STRB r6, [r4]。 得到被占先的任務(wù)TCBLDR r4, addr_OSTCBCurLDR r5, [r4]STR sp, [r5] 。 保存sp 在被占先的任務(wù)的 TCB。 得到新任務(wù) TCB 地址LDR r6, addr_OSTCBHighRdyLDR r6, [r6]LDR sp, [r6] 。 得到新任務(wù)堆棧指針。 OSTCBCur = OSTCBHighRdySTR r6, [r4] 。 設(shè)置新的當(dāng)前任務(wù)的TCB 地址LDMFD sp!, {r4}MSR SPSR, r4LDMFD sp!, {r4}BIC r4, r4, 0xC0 。 必須退出新任務(wù)通過允許中斷MSR CPSR, r4LDMFD sp!, {r0r12, lr, pc}4)OSTickISR();時(shí)鐘節(jié)拍中斷多任務(wù)操作系統(tǒng)的任務(wù)調(diào)度是基于時(shí)鐘節(jié)拍中斷的,uCOSII 也需要處理器提供一個(gè)定時(shí)器中斷來產(chǎn)生節(jié)拍,借以實(shí)現(xiàn)時(shí)間的延時(shí)和期滿功能。但在本系統(tǒng)移植uCOSII 時(shí),時(shí)鐘節(jié)拍中斷的服務(wù)函數(shù)并非uCOSII 文獻(xiàn)中提到的OSTickISR(),而直接是C 語(yǔ)言編寫的OSTimeTick()。請(qǐng)參考“定時(shí)器中斷實(shí)驗(yàn)”的內(nèi)容,時(shí)鐘節(jié)拍中斷的產(chǎn)生與該實(shí)驗(yàn)中所述內(nèi)容類似。本系統(tǒng)uCOSII 移植時(shí)占用的時(shí)鐘資源是TIMER1。在平臺(tái)初始化函數(shù)ARMTargetInit()中,調(diào)用uHALr_InitTimers()函數(shù)初始化TIMER1相關(guān)寄存器;調(diào)用uHALr_InterruptRequestInit()函數(shù)初始化中斷請(qǐng)求,其中通過語(yǔ)句SetISR_Interrupt(INT_TIMER1_OFFSET, OSTimeTick, NULL)將OSTimeTick()函數(shù)設(shè)置為TIMER1 的中斷服務(wù)函數(shù)。 中。程序中必須在開始多任務(wù)調(diào)度之后再允許時(shí)鐘節(jié)拍中斷,即在OSStart()調(diào)用過后,uCOSII 運(yùn)行的第一個(gè)任務(wù)中啟動(dòng)節(jié)拍中斷。如果在調(diào)用OSStart()啟動(dòng)多任務(wù)調(diào)度之前就啟動(dòng)時(shí)鐘節(jié)拍中斷,uCOSII 運(yùn)行狀態(tài)可能不確定而導(dǎo)致崩潰,請(qǐng)參考uCOSII 文獻(xiàn)移植一節(jié)。本系統(tǒng)是在系統(tǒng)任務(wù)SYS_Task 中調(diào)用uHALr_InstallSystemTimer()函數(shù)打開IRQ 和TIMER1 中斷的,從而啟動(dòng)時(shí)鐘節(jié)拍。本實(shí)驗(yàn)A 部分的SYS_Task 見下文第5 步所述。在系統(tǒng)提供的完整uCOSII 庫(kù)中,SYS_Task() 中定義,用戶不必創(chuàng)建,請(qǐng)參考本實(shí)驗(yàn)B 部分“完善的uCOSII 開發(fā)框架”。完成了上述工作以后,uCOSII 就可以運(yùn)行在ARM 處理器上了。編寫一個(gè)簡(jiǎn)單的多任務(wù)程序來測(cè)試一下移植是否成功。為了使uCOSII 可以正常運(yùn)行,除了上述必須的移植工作外,硬件初始化和配置文件也嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書129是必須的。STARTUP 目錄下的文件還包括中斷處理,時(shí)鐘,串口通信等基本功能函數(shù)。 中給出了應(yīng)用程序的基本框架,包括初始化和多任務(wù)的創(chuàng)建,啟動(dòng)等。任務(wù)創(chuàng)建方法如下:1)在程序開頭定義任務(wù)堆棧,任務(wù)函數(shù)聲明和任務(wù)優(yōu)先級(jí):OS_STK TaskName_Stack[STACKSIZE]={0, }。 //任務(wù)堆棧void TaskName(void *Id)。 //任務(wù)函數(shù)define TaskName_Prio N //任務(wù)優(yōu)先級(jí)2)在main()函數(shù)中調(diào)用OSStart()函數(shù)之前用下列語(yǔ)句創(chuàng)建任務(wù):OSTaskCreate(TaskName,(void*)0,(OS_STK*)amp。TaskName_Stack[STACKSIZE1],TaskName_Prio)。OSTaskCreate()函數(shù)的原型是:INT8U OSTaskCreate (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio)。需要將任務(wù)函數(shù)TaskName,任務(wù)堆棧TaskName_Stack,任務(wù)優(yōu)先級(jí)TaskName_Prio 三個(gè)參數(shù)傳給OSTaskCreate()函數(shù)。根據(jù)任務(wù)函數(shù)的內(nèi)容決定堆棧大小,宏STACKSIZE 定義為4KB,可以在此基數(shù)上乘倍。任務(wù)優(yōu)先級(jí)越高,TaskName_Prio 值越?。籾COSII 可以管理64個(gè)任務(wù),由OSInit()創(chuàng)建的空閑任務(wù)的優(yōu)先級(jí)最低為63;uCOSII 保留4 個(gè)最高和4 個(gè)最低優(yōu)先級(jí),用戶任務(wù)可以使用其余56 個(gè)優(yōu)先級(jí)值。3)編寫任務(wù)函數(shù)內(nèi)容:void TaskName(void *Id){//添入任務(wù)初始化語(yǔ)句for(。){ //添入任務(wù)循環(huán)內(nèi)容OSTimeDly(SusPendTime)。//掛起一定時(shí)間,以使其他任務(wù)可以占用CPU}}uCOSII 至少要有一個(gè)任務(wù),這里首先創(chuàng)建一個(gè)系統(tǒng)任務(wù)SYS_Task,其中由語(yǔ)句OSRunning=TRUE。 //使能uCOSII 運(yùn)行uHALr_InstallSystemTimer()。啟動(dòng)系統(tǒng)時(shí)鐘和多任務(wù)切換。為了驗(yàn)證uCOSII 多任務(wù)切換的進(jìn)行,再編寫兩個(gè)簡(jiǎn)單的任務(wù),分別在超級(jí)終端上輸出run task1 和run task2。 的結(jié)構(gòu)創(chuàng)建多個(gè)不同功能的任務(wù),觀察個(gè)任務(wù)的切換。1. 編譯并下載移植后的uCOSII所有的源代碼都準(zhǔn)備好后就可以進(jìn)行編譯了。在ADS 環(huán)境下需要設(shè)置工程的訪問路徑。嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書130從菜單Edit | Debug Settings 進(jìn)入設(shè)置對(duì)話框,在Target | Access Paths 中選擇User Paths并選上Always search user paths。然后點(diǎn)Add 按鈕添加路徑ucosii 和arch。這主要是設(shè)置編譯器處理文件包含時(shí)的搜索范圍。按照實(shí)驗(yàn)一的方法可以對(duì)編譯后的代碼進(jìn)行調(diào)試或下載到平臺(tái)的電子硬盤中。這個(gè)實(shí)驗(yàn)從結(jié)構(gòu)上看和其他的實(shí)驗(yàn)沒有多大區(qū)別??梢栽谄脚_(tái)BIOS中激活電子硬盤, 拷貝進(jìn)去,重啟平臺(tái),然后在超級(jí)終端上觀察結(jié)果。七、思考題1.UCOSII 是如何利用定時(shí)器中斷來實(shí)現(xiàn)多任務(wù)之間的調(diào)度的?__(3)音頻實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握S3C44B0X 自帶的IIS 音頻接口的使用方法。2.掌握DMA 數(shù)據(jù)傳輸方式。二、實(shí)驗(yàn)內(nèi)容學(xué)習(xí)S3C44B0X 自帶的IIS 音頻接口的使用,通過DMA 數(shù)據(jù)傳輸方式編程實(shí)現(xiàn)對(duì)WAV 聲音文件(不超過10 秒)的循環(huán)播放。三、預(yù)備知識(shí)用ARM SDT 集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過程?;趗COSII 操作系統(tǒng)的應(yīng)用程序的框架結(jié)構(gòu)。會(huì)使用Source Insight 3 編輯C 語(yǔ)言源程序。學(xué)習(xí)IIS 音頻總線協(xié)議。學(xué)習(xí)DMA 數(shù)據(jù)傳輸方式四、實(shí)驗(yàn)設(shè)備及工具硬件:ARM 嵌入式開發(fā)平臺(tái),用于ARM7TDMI 的JTAG 仿真器、PC 機(jī)Pentium100 以上、耳麥。軟件:PC 機(jī)操作系統(tǒng)win98 以上、ARM SDT 集成開發(fā)環(huán)境、仿真器驅(qū)動(dòng)程序、Source Insight 。嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書134五、實(shí)驗(yàn)原理及說明1.WAV 音樂格式在Windwos 環(huán)境下,大部分的多媒體文件都依循著一種結(jié)構(gòu)來存放信息,這種結(jié)構(gòu)稱為“資源互換文件格式”( resources interchange file format , 簡(jiǎn)稱RIFF)。例如聲音的WAV 文件、視頻的AVI 文件等等均是由此結(jié)構(gòu)衍生出來的。RIFF 可以看作是一種樹狀結(jié)構(gòu),其基本構(gòu)成單位為chunk ,猶如樹狀結(jié)構(gòu)中的節(jié)點(diǎn),每個(gè)chunk 由“辨別碼”、“數(shù)據(jù)大小”及“數(shù)據(jù)”所組成。辨別碼由4 個(gè)ASCII 碼所構(gòu)成,數(shù)據(jù)大小則標(biāo)示出緊跟其后數(shù)據(jù)的長(zhǎng)度(單位為Byte),而數(shù)據(jù)大小本身也用掉4 個(gè)Byte,所以事實(shí)上一個(gè)chunk 的長(zhǎng)度為數(shù)據(jù)大小加8。一般而言,chunk 本身并不允許內(nèi)部再包含chunk,但有兩種例外,分別為以“RIFF”及“LIST”為辨別碼的chunk 。而針對(duì)這兩種chunk,RIFF 又從原先的“數(shù)據(jù)”中切出4個(gè)Byte。這4 個(gè)Byte 稱為“格式辨別碼”,然而RIFF 又規(guī)定文件中僅能有一個(gè)以“RIFF”為辨別碼的chunk。只要是依循這一結(jié)構(gòu)的文件, 我們均稱之為RIFF 文檔。這種結(jié)構(gòu)提供了一種系統(tǒng)化的分類。如果和MSDOS 文件系統(tǒng)作比較,“RIFF”chunk 就好比是一臺(tái)硬盤的根目錄,其格式辨別碼便是此硬盤的邏輯代碼(C:或D:),而“LIST”chunk 即為其下的子目錄,其他的chunk 則為一般的文件。至于在RIFF 文件的處理方面,微軟提供了相關(guān)的函數(shù)。視窗下的各種多媒體文件格式就如同在磁盤上規(guī)定僅能放怎樣的目錄,而在該目錄下僅能放何種數(shù)據(jù)。WAV 為waveform(波形)的縮寫。聲音文件的結(jié)構(gòu)如表41 所示,“RIFF”的格式辨別碼為“WAVE”。整個(gè)文件由兩個(gè)chunk 所組成:辨別碼“fmt ”(注意,最后一個(gè)是空白字符?。┘啊癲ata”。在“fmt”的chunk 下包含了一個(gè)PCMWAVEFORMAT 數(shù)據(jù)結(jié)構(gòu),其定義如下:typedef struct pcmwaveformattag{WAVEFORMAT wf。WORD wBitsPerSample。}PCMWAVEFORMAT。typedef struct waveformattag{嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書135WORD wFormat Tag 。WORD nChannels。DWORD nSamplesPerSec。DWORD nAvgBytesperSec。WORD nBlockAlign。}WAVEFORMAT。其意義分別為:wFormat Tag:記錄著此聲音的格式代號(hào),例如WAVE FORMAT PCM,WAVE FORAM ADPCM等等。nChannels:記錄聲音的通道數(shù)。nSamplesPerSec:記錄每秒取樣數(shù)。nAvgBytesPerSec:記錄每秒的數(shù)據(jù)量。nBlockAlign:記錄區(qū)塊的對(duì)齊單位。wBitsPerSample:記錄每個(gè)取樣所需的位數(shù)?!癲ata”Chunk 包含著真正的聲音數(shù)據(jù)。Windows 目前僅提供WAVE FORMAT PCM 一種數(shù)據(jù)格式,所代表的意義是脈沖編碼調(diào)制(pulse code modulation)。針對(duì)這種格式,Windows定義了在“data”的chunk 中數(shù)據(jù)的存放情形,圖41 中列出了四種不同通道數(shù)及取樣所需的位元數(shù)以及位元位置的安排。圖41 PCM 文件中位元安排方式第一排表示單聲道8 位元,第二排表示雙聲道8 位元,第三排表示單聲道16 位元,第四排表示雙聲道16 位元。8 位元代表音量大小由8 個(gè)位元所表示,16 位元?jiǎng)t代表音量大小由16 個(gè)位元所表示。理論上8 位元可以表示0~255,16 位元可表示0~65535,不過Windows規(guī)定16 位元其值的范圍為32168~32167。此外尚有一點(diǎn)要注意的是,0 并不一定代表無聲,而是由中間的數(shù)值來決定,也就是在8 位元時(shí)為128,16 位元時(shí)為0 才是無聲。所以,若程序設(shè)計(jì)時(shí)需放入無聲的數(shù)據(jù),需特別注意聲音格式是16 或是8 位元,以放入適當(dāng)?shù)闹怠?.IIS 音頻接口IIS 音頻接口總線共有四根線:串行數(shù)據(jù)輸入(IISDI)、串行數(shù)據(jù)輸出(IISDO)、左右嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)——實(shí)驗(yàn)指導(dǎo)書136聲道選擇(IISLRCK)和串行位時(shí)鐘(IISCLK)。由主控設(shè)備提供IISLRCK 和IISCLK。1) IISCON 寄存器IISCON 寄存器的設(shè)置和位描述如表42 和表43 所示。表42 IISCON 寄存器的設(shè)置寄存器 地址 R/W 描述 復(fù)位值IISCON0x01D18000(Li/HW, Li/W, Bi/W)0x01D18002(Bi/HW)R/W IIS控制寄存器 0x100表43 IISCON 寄存器的位描述IISCON 位 描述 初始化狀態(tài)左/右聲道指示(只讀) [8] 0 =左聲道 1 =右聲道 1發(fā)送FIFO準(zhǔn)備好標(biāo)志(只讀)[7]0=FIFO沒準(zhǔn)備好(空) 1=FIFO 準(zhǔn)備好(非空)0接收FIFO準(zhǔn)備好標(biāo)志(只讀)[6]0=FIFO沒準(zhǔn)備好(滿) 1=FIFO 準(zhǔn)備好(非滿)0發(fā)送DMA服務(wù)請(qǐng)求使能 [5] 0=請(qǐng)求禁止 1=請(qǐng)求使能 0接收DMA服務(wù)請(qǐng)求使能 [4] 0=請(qǐng)求禁止 1=請(qǐng)求使能 0發(fā)送聲道空閑信號(hào) [3]在閑置狀態(tài)IISLRCK是停止的(暫停Tx)。只有在IIS是主控時(shí)這一位才有效。0=產(chǎn)生IISLRCK 1=不產(chǎn)生IISLRCK0接收聲道空閑信號(hào) [2]在閑置狀態(tài)IISLRCK是停止的(暫停Rx),只有在IIS是主________x?控時(shí)這一位才有效。0=產(chǎn)生IISLRCK 1=不產(chǎn)生IISLRCK0IIS 比率使能 [1] 0 = 比
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1