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

正文內(nèi)容

基于arm的數(shù)據(jù)采集系統(tǒng)——學(xué)位論文-資料下載頁

2024-08-31 18:29本頁面

【導(dǎo)讀】本人呈交的學(xué)位論文,是在導(dǎo)師的指導(dǎo)下,獨立進行研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本學(xué)。位論文的研究成果不包含他人享有著作權(quán)的內(nèi)容。出貢獻的其他個人和集體,均已在文中以明確的方式標明。權(quán)歸屬于培養(yǎng)單位。產(chǎn)和科研實驗中不可或缺的重要組成部分。處理的關(guān)鍵,在軍工和民用中得到了廣泛應(yīng)用。兩者的相互結(jié)合,將是未來自動。控制領(lǐng)域的發(fā)展趨勢。因為將嵌入式技術(shù)引入到數(shù)據(jù)采集系統(tǒng)中,不但大大提高。了系統(tǒng)的實時性和靈活性,而且還能滿足日益提高的自動測量需求。該系統(tǒng)主要由兩個部分組成:系統(tǒng)主控核心板和實?,F(xiàn)各外圍功能的擴展板。核心板由微處理器ARM、擴展內(nèi)存以及直流電源模塊組。存儲、傳送和顯示。軟件設(shè)計上,編寫了Bootloader,完成了基于Xmodem協(xié)議的。實現(xiàn)了搶占式實時操作系統(tǒng)uC/OS-II在該平臺上的運行。行了基于小波變換的數(shù)字信號處理,得到了滿意結(jié)果。

  

【正文】 圖 74HC245 連接電路 數(shù)模轉(zhuǎn)換電路 數(shù)模轉(zhuǎn)換電路主要完成數(shù)字量到模擬量的轉(zhuǎn)換,本設(shè)計通過界面輸入相應(yīng)數(shù)值,然后將該數(shù)字量轉(zhuǎn)換成高壓電源模塊的控制輸入信號,完成對高壓模塊的控制。本系統(tǒng)的 DAC 轉(zhuǎn) 換芯片采用 TI公司的 DAC7731 芯片,可通過軟件配置完成單極性或雙極性電壓輸出,其可配置輸出電壓為: 10? V, 5? V 和+ 10V。 DAC7731的電路連接如圖 所示。 圖 DAC 轉(zhuǎn)換電路 運算放大器 OPA132 主要是降低輸出阻抗,增強電路抗干擾能力。 DA_SDI為串行輸入的數(shù)字量, A16OUT 為轉(zhuǎn)換后的輸出模擬量。 基于 ARM 的嵌入式數(shù)據(jù)采集與顯示系統(tǒng)研制 數(shù)字 I/O 口電路 數(shù)字 I/O 口的輸出用來控制氣路系 統(tǒng)中電磁閥。該輸出起到數(shù)字開關(guān)量的作用,在實際應(yīng)用中需外部提供 24V電壓。由于要驅(qū)動外部繼電器,其本身的驅(qū)動電流很小,所以末端連接一塊 ULN2803 繼電器驅(qū)動芯片,該芯片最大能提供 的驅(qū)動電流,足以滿足外部繼電器的需要。具體連接方式見圖 所示: 圖 數(shù)字 I/O 口電路 本章小結(jié) 本章詳細介紹了基于 ARM 的嵌入式數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計。將硬件的設(shè)計過程中分為核心板設(shè)計和擴展板設(shè)計。核心板是包括主控制器在內(nèi)的嵌入式系統(tǒng),擴展了 RAM 和 ROM,對外預(yù)留了擴展接口。擴展板則主要包括了 FPGA, A/D轉(zhuǎn)換, D/A 轉(zhuǎn)換,串口 UART 和 LCD 接口等外圍設(shè)備。在整個系統(tǒng)中硬件設(shè)計起到至關(guān)重要的作用,穩(wěn)定的硬件是系統(tǒng)可靠運行的保障。因此對涉及到的電路都進行了細致分析和說明,并給出了詳細的電路設(shè)計原理圖。 第四章 系統(tǒng)軟件設(shè)計 第四章 系統(tǒng)軟件設(shè)計 ARM 引導(dǎo)程序設(shè)計 對于 ARM 處理器,引導(dǎo)代碼是必不可少的,它是系統(tǒng)加電后運行的第一段代碼,完成 ARM 控制器的配置和硬件初始化等功能。引導(dǎo)代碼中的配置和硬件初始化如果不正確,系統(tǒng)將不能正常運行或不能運行。 引導(dǎo)代碼保存在 ROM 中,由于系統(tǒng)復(fù)位以后,處理器從 0x0000_0000 處開始執(zhí)行指令,所以引導(dǎo)代碼也應(yīng)從該地址開始。根據(jù) S3C44B0X 的存儲器結(jié)構(gòu), ROM的硬件設(shè)計見本文第三章,下面將基于此設(shè)計介紹引導(dǎo)代碼的主要功能。 Bootloader 程序設(shè)計 從操作系統(tǒng)的角度看, Bootloader 就是在操作系統(tǒng)內(nèi)核運行之前運行的一段程序。由于嵌入式系統(tǒng)中,通常沒有像 BIOS 那樣的固件程序,因此需要 Bootloader獨自完成對系統(tǒng)主板上的主要部件如 CPU、 SDRAM、 FLASH、 串口 UART 等進行初始化并承擔(dān)整個系統(tǒng)的加載啟動任務(wù) [8]。 雖然 Bootloader 的實現(xiàn)依賴于 CPU的體系結(jié)構(gòu),但大多數(shù) Bootloader 要實現(xiàn)的主要工作有以下幾個部分: ? 系統(tǒng)硬件自檢; ? 配置其它 Bank、 端口和外設(shè)等工作模式; ? 處理系統(tǒng)中斷:在不支持 remap 的處理器中,中斷必然要經(jīng)過 BootRom空間, BootRom 需要處理的任務(wù)就是把固定的中斷向量映射到一個可編程的中斷處理子程序的地址; ? 引導(dǎo)操作系統(tǒng):系統(tǒng)配置完成以后, Bootloader 需要把操作系統(tǒng)或其他程序裝載到 SDRAM,然后把 PC 指針指向程序的 RAM 空間,使操作系統(tǒng)啟動完成引導(dǎo)。 ? Flash(BootRom)編程: 引導(dǎo) flash 編程,通過串口或以太網(wǎng)口下載編譯成功的操作系統(tǒng)或者應(yīng)用程序,甚至 BootRom 本身。要想實現(xiàn) BootRom 的升級,必須讓 Boot 程序在 RAM 中運行。 基于 ARM 的嵌入式數(shù)據(jù)采集與顯示系統(tǒng)研制 對于 Bootloader 完成的上述工作,主要分為兩個部分。一部分是依賴于 CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常用匯編語言來實現(xiàn);另外一部分不依賴于硬件的部分,通常用 C 語言實現(xiàn),這樣可實現(xiàn)復(fù)雜功能。 在此 S3C44B0X 的嵌入式系統(tǒng)中,為了保證上電或復(fù)位時正常運行,Bootloader 必須存放在 FLASH 中的 0x0000_0000 地址處,因此在硬件設(shè)計上把FLASH 接在 ARM 的 nGCS0 處。系統(tǒng)上電后將完成上面描述的兩個階段:首先完成存儲器 、 堆棧 、 寄存器 、 全局變量和基本硬件模塊的初始化,這由匯編代碼完成,然后將操作系統(tǒng)的內(nèi)核與文件系統(tǒng)調(diào)入 SDRAM(0x0c00,0000 0x0e00,0000)中,并將 PC 指針指向操作系統(tǒng)內(nèi)核的入口處,為操作系統(tǒng)的運行做好準備,這部分由C 語言代碼完成。根據(jù)該目標系統(tǒng), Bootloader 的設(shè)計流程包括: (1)設(shè)置異常向量表; (2)初始化存儲器系統(tǒng); (3)堆棧初始化; (4)C 例程 全局變量初始化; (5)呼叫主程序;接下來的章節(jié)將對上述流程進行詳細的介紹。 1. 異常向量表 當(dāng)系統(tǒng)產(chǎn)生異常時,會觸發(fā)中斷控制器。中斷控制器收到這個信號后檢查該中斷是否被允許或被屏蔽。如果被允許就給它分配一個處理優(yōu)先級,當(dāng)該中斷執(zhí)行時,觸發(fā) ARM 的中斷信號通知 ARM 內(nèi)核。然后 ARM 內(nèi)核在 FLASH 中訪問中斷向量表。 ARM 處理器的中斷向量表從地址 0x0000_0000 處開始存放,連續(xù)有 8 4 字節(jié)的空間。當(dāng)一個中斷發(fā)生后,處理器會自動跳轉(zhuǎn)到 0x0000_0000 地址開始的異常中斷向量表中的某個位置(由中斷類型 確定)讀取指令后運行。可以通過表 來描述中斷向量表的地址分配。 地 址 異 常 進入模式 0x0000_0000 復(fù)位 管理模式 0x0000_0004 未定義指令 未定義模式 0x0000_0008 軟件中斷 管理模式 0x0000_000C 中止 (預(yù)取指令 ) 中止模式 0x0000_0010 中止 (數(shù)據(jù) ) 中止模式 0x0000_0014 保留 保留 0x0000_0018 IRQ IRQ 模式 0x0000_001C FIQ FIQ 模式 表 異常向量地址分配表 每當(dāng)有中斷 或者異常發(fā)生時, ARM 處理器便強制把 PC 指針指向向量表中對第四章 系統(tǒng)軟件設(shè)計 應(yīng)中斷類型的地址值。例如非向量中斷處理,當(dāng)中斷 EINT0 產(chǎn)生后, CPU從向量表中的地址 0x0000_0018( IRQ)處開始執(zhí)行,該處的指令為: b HandlerIRQ。 該指令使程序跳轉(zhuǎn)至 HandleIRQ 處運行。在引導(dǎo)程序初始化的時候,標號為HandleIRQ 的變量被賦值,被賦予的值就是 IsrIRQ。所以當(dāng)非向量中斷發(fā)生時,CPU跳轉(zhuǎn)到 IsrIRQ 處執(zhí)行 IsrIRQ 后面的代碼,執(zhí)行的結(jié)果就得到了當(dāng)前中斷服務(wù)程序的起始地址。 S3C44B0X 的 I_ISPR 寄存器記錄了當(dāng)前的中斷,所以引導(dǎo)程序在 IsrIRQ的代碼中借用 I_ISPR 寄存器和引導(dǎo)程序中數(shù)據(jù)段的定義獲得中斷服務(wù)程序的地址。 在引導(dǎo)程序的數(shù)據(jù)段中定義了所有中斷服務(wù)程序的地址,這些地址都是以變量 _ISR_STARTADDRESS 的 值 為 起 點 , 其 中 EINT0 的 地 址 為_ISR_STARTADDRESS+33 4。 _ISR_STARTADDRESS 的值包含在 文件中,它的值為 0xc7fff00,即在 RAM 的高端開辟一塊空間用于中斷服務(wù)程序的地址,這個值也可以修改為其他值。這樣就可以得到中斷 服務(wù)程序的地址了。 非向量中斷通過執(zhí)行 IsrIRQ 判斷中斷源,并計算出相應(yīng)中斷服務(wù)程序的起始地址 HandleEINT0,然后將此地址加載到 PC。只要將中斷服務(wù)程序的起始地址賦予 HandleEINT0 的空間,在中斷發(fā)生時就可以執(zhí)行相應(yīng)的中斷服務(wù)程序。 2. 初始化存儲器系統(tǒng) 存儲器系統(tǒng)的初始化是指對 FLASH 和 RAM 存儲器的地址范圍,數(shù)據(jù)總線寬度以及 SDRAM 的刷新等進行軟件設(shè)置。這主要通過設(shè)置 13 個從 0x01c8_0000 開始的特殊寄存器來實現(xiàn)的,通過閱讀所使用的 RAM 芯片的數(shù)據(jù)手冊,分析其中的讀 /寫時間等 參數(shù),合理的設(shè)置 RAM 控制器里的相關(guān)參數(shù),可以提高 RAM 的讀 /寫速度,相反則會降低速度。 3. 堆棧初始化 S3C44B0X 有 7 種工作模式,每種模式都有獨立的堆棧指針寄存器 (SP),并定義相應(yīng)地址。改變狀態(tài)寄存器 (CPSR)的狀態(tài)位,可以使處理器切換到不同模式,然后給 SP 賦值,就實現(xiàn)了堆棧的初始化。需要注意的是:不要切換到用戶模式進行本模式的堆棧設(shè)置,因為進入用戶模式后就不能通過修改 CPSR 寄存器回到別的工作模式。初始化堆棧的代碼如下所示 (以 IRQ 模式和 FIQ 模式為例 ): 基于 ARM 的嵌入式數(shù)據(jù)采集與顯示系統(tǒng)研制 mrs r0, cpsr ;將 CPSR 的值存放在寄存器 R0 中 bic r0, r0, (MODEMASK|NOINT) ;屏蔽模式位和中斷 orr r1, r0, IRQMODE|NOINT msr cpsr_cxsf, r1 ;轉(zhuǎn)到 IRQ 模式 ldr sp, =IRQStack ;設(shè)置 SP_irq orr r1, r0, FIQMODE|NOINT msr cpsr_cxsf, r1 ;轉(zhuǎn)到 FIQ 模式 ldr sp, =FIQStack orr r1, r0, SVCMODE|NOINT msr cpsr_cxsf,r1 ;轉(zhuǎn)到 SVC 模式 ldr sp, =SVCStack 注:未初始化用戶模式棧 ,程序使用 SVC 模式 4. C 例程全局變量初始化 全局變量的初始化主要是完成從 ROM 到 RAM 的數(shù)據(jù)傳輸和內(nèi)容清零??蓤?zhí)行的映像結(jié)構(gòu)由 RO 段 、 RW 段 和 ZI 段三部分組成,分別為只讀數(shù)據(jù)段 、 可讀寫數(shù)據(jù)段和堆棧段。其中 RO 段在 ROM 和 RAM 里都可運行,而 RW 和 ZI 段必須在 RAM 中運行。 圖 為映像文件的加載域和運行域,加載域就是最原始的可執(zhí)行文件,即燒寫在 FLASH 中的文件,可以看出 RW 段緊跟在 RO 段之 后。在加載域 RO 的地址是正確的,而 RW 的地址和 rw_base(數(shù)據(jù)段起始地址)的地址定位不一致,在程序運行時,當(dāng)需要 RW 中的數(shù)據(jù)時程序就會出錯。解決的方法是在使用 RW 段之前將 RW 段“搬移”到正確的地址處。 RO sectionRW sectionRO sectionRW sectionZI sectionLoad view Execution viewRAMROMro_baserw_base 圖 映像文件加載域和運行域 第四章 系統(tǒng)軟件設(shè)計 上述只是簡單介紹了從 ROM 到 RAM 的數(shù)據(jù)傳輸和內(nèi)容清零的大致流程,下面對具體實現(xiàn)細節(jié)進行討論。在 ARM 開發(fā)系統(tǒng) 的鏈接器中提供了一定的機制來幫助完成這部分的工作,其中 |Image$$ZI$$Base|, |Image$$ZI$$Limit|,|Image$$RW$$Base|, |Image$$RO$$Limit|都是由鏈接器定義輸出的,主要是輸出段的起始和終止定為信息,具體程序如下: startram : LDR a1, =|Image$$ZI$$Base| 。 ZI 段在 RAM 中的起始地址 MOV a3, 0 。 寄存器清 0 LDR a2,= |Image$$ZI$$Limit| 。 ZI 段在 RAM 中的結(jié)束地址 CMP a1, a2 BEQ move_data Clear_loop : STR a3,[a1], 4 。 清 0, a1+=4 CMP a1, a2 BNE clear_loop move_data LDR a1, =|Image$$RW$$Base| 。 RW 段在 RAM 中的起始地址 LDR a2, =|Image$$RO$$ Limit | 。 RW 段在 ROM 中的起始地址 LDR a3, =|Image$$ZI$$Base| 。 RW 段在 RAM 中的結(jié)束地址 CMP a1, a3 BEQ goto_main move_loop : LDR a4,[a2], 4 STR a4,[a1], 4 。 拷貝一個字, a1+=4, a2+=4 CMP a1,a3 BNE move_loop goto_main : BL Main 5. 呼叫主程序 當(dāng)系統(tǒng)初始化完成后,就要轉(zhuǎn)入主程序,此功能由跳轉(zhuǎn)指令來完成。這部分代碼為 C 語言程序,在 main( )函數(shù)中開始系統(tǒng)軟件的初始化。 上述部分詳細介紹了在 S3C44B0X 系統(tǒng)中 Bootloader 的主要功能以及設(shè)計的流程,系統(tǒng)上電后首先執(zhí)行該啟動代碼,在運行 10 秒鐘之內(nèi)如果沒有輸入命 令,系統(tǒng)則自動將應(yīng)用程序加載到 SDRAM中,如圖 為 Bootloader 啟動后的界面圖。 基于 ARM 的嵌入式數(shù)據(jù)采集與顯示系統(tǒng)研制 圖 Bootloader 啟動界面 Xmodem 傳輸協(xié)議實現(xiàn) Bootloader 另外一個主要功能就是通過串口對應(yīng)用程序代碼的下載,此種下載方式的協(xié)議是基于 Xm
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1