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

正文內容

基于arm的數據采集系統(tǒng)學位論文(參考版)

2025-06-25 03:34本頁面
  

【正文】 //當t所有位都為0。如果we使能且非滿:進行寫操作,t+1。其Verilog的偽代碼如下:module adc_fifo ( //定義模塊信號量rclk, weclk, rst,dat_i, dat_o, we, rd, clr, full, empty,t )。數據在寫使能有效的情況下按照寫時鐘向FIFO里存儲,在讀使能的情況下,數據按照讀時鐘從FIFO到ARM的存儲器。寫地址模塊的作用是寫信號使能后,每當采集完一次數據寫地址加一,在下一個單元保存新數據,雙端口RAM的作用是存儲數據,使讀和寫兩個過程互不影響。當讀寫指針的地址位和狀態(tài)位完全相同時,表明讀寫指針經歷了相同次數的循環(huán),即FIFO處于空狀態(tài);如果當讀寫指針的地址位相同而狀態(tài)位相反,表明寫指針比讀指針多循環(huán)一次,即FIFO處于滿狀態(tài)。 空/滿標志的產生是FIFO的核心部分,正確設計與否,將直接影響FIFO的性能。RAM中的各存儲單元可以被隨機讀寫,而FIFO只能按著先進先出的原則讀寫。l 初始化SCR和SSR:SCR=100,SCR=000,SSR=1100;l 啟動采集程序:開始SCR=001;l 等待中斷,進入中斷以后檢查SSR:如果SSR==0001,那么讀取2048個字節(jié)數據;如果SSR==01x0,那么CPU內部循環(huán)計數器加1,然后寫入SSR=0100;如果SSR==1xxx,初始化的AMC數值過小,應該重新計算AMC值;l 如果上次中斷以后40ms還沒有進入新的中斷,此時可能是故障或者整個采樣過程結束,如果采樣結束,需要讀取FIFOC,然后讀取FIFOC中數值個FIFOD的數據,就是把FIFO的數據都讀出來;178。3. 控制的具體實現(xiàn)178。下面將對如何控制各寄存器的功能進行細致的介紹:1. SCR系統(tǒng)控制寄存器15141312111098ReservedReservedReservedReservedReservedReservedReservedReservedR-0R-0R-0R-0R-0R-0R-0R-076543210ReservedReservedReservedReservedReservedFCLRMODERUNR-0R-0R-0R-0WR-0WR-0WR-0WR-0Note:R = Read access, W = Write access, S = Set only, 0 = value after reset SCR系統(tǒng)控制寄存器 ,第3-15位為保留位;第2位FCLR標志FIFO是否清空:0-不清空FIFO,1-清空FIFO;第1位MODE為模式標志位:0-被動模式,1-主動模式;第0位RUN為運行標志位:0-停止運行,1-正在運行。ARM對FPGA的控制是通過相關寄存器來實現(xiàn),寄存器的執(zhí)行方式則在FPGA內部通過硬件描述語言Verilog來定義。} FPGA控制ADC的程序設計 本系統(tǒng)的數據采集由ARM發(fā)出控制信號,F(xiàn)PGA響應控制信號后通過ADC來采集數據。Stack3[STACKSIZE_L1],59)。Stack2[STACKSIZE_L1], 12)。Stack1[STACKSIZE_L1], 9)。Stack0[STACKSIZE_L1], 1)。每個任務堆棧的大小都統(tǒng)一設為1024字節(jié),初始化代碼如下:void Main(void){OSInit()。5. 基于uC/OSII的應用程序設計綜合應用程序的實時性和各個功能模塊的協(xié)調性,把應用程序劃為了四個任務:“系統(tǒng)”任務,“觸摸屏”任務,“應用程序”任務和“LCD刷新”任務,讓uC/OSII內核去管理和調度它們。當第60 ms來臨時,任務1,任務2和任務3同時處于就緒態(tài),但由于任務1優(yōu)先級別高于任務2,任務2優(yōu)先級別高于任務3,所以此時首先輸出AAAAAAA1111111,接著是BBBBBBB3333333,最后是任務3的CCCCCCC6666666。 測試任務的輸出信息界面 ,第一個10ms任務1輸出AAAAAAA1111111,第二個10ms任務1再次輸出AAAAAAA1111111,此時另外兩個任務被掛起。函數OSTimeDly()為系統(tǒng)的延時函數,用于延時一定數量的時鐘節(jié)拍,本系統(tǒng)中設定的時鐘節(jié)拍為1毫秒。OSTimeDly(60)。OSTimeDly(30)。OSTimeDly(10)。下面開始測試操作系統(tǒng)代碼移植的正確性,建立3個簡單的任務通過串口輸出測試信息。 store sp in preempted tasks39。 save register file and ret address MRS r4, CPSR STMFD sp!, {r4} 。 save pc STMFD sp!, {lr} 。因為多任務的切換是移植的重點,此處僅以OSCtxSw()為例說明實現(xiàn)的具體過程。 /* cpsr IRQ, FIQ disable */ return ((void *)stk)。 /* r1 */ *stk = (unsigned int) pdata。 /* r3 */ *stk = 0。 /* r5 */ *stk = 0。 /* r7 */ *stk = 0。 /* r9 */ *stk = 0。 /* r11 */ *stk = 0。 /* lr */ *stk = 0。 *stk = (unsigned int) task。opt = opt。 ARM系統(tǒng)堆棧結構,ARM的堆棧結構是由上往下增長的。uC/OSII的移植工作主要包括以下內容:l ;l ;l ;l OS_CPU_A. ASM中需要改寫4個匯編語言函數;l ; uC/OSII的體系結構3. 移植uC/OSII到S3C44B0X系統(tǒng)將uC/OSII移植到S3C44B0X處理器上,需要修改三個與ARM體系結構相關的文件(,)和一個配置文件(),以下分別介紹四個文件的移植工作。如果理解了處理器和C編譯器的技術細節(jié),移植uC/OSII的工作實際上并不復雜。1. 移植條件操作系統(tǒng)的移植目的是使操作系統(tǒng)能在硬件平臺上穩(wěn)定運行,因此要移植uC/OSII目標處理器必須滿足以下要求:l 處理器的C編譯器能產生可重入代碼,并且用C語言就可以直接開中斷和關中斷;l 處理器支持中斷,并可以產生定時中斷;l 處理器能提供足夠的RAM(至少幾十K字節(jié))空間,作為多任務環(huán)境下的任務堆棧;l 處理器有能完成將堆棧指針和其他寄存器讀出,并存儲到堆?;騼却嬷械南到y(tǒng)指令; 對于目標處理器的上述要求,本系統(tǒng)中采用的S3C44B0X處理器都能滿足要求,因此在該硬件平臺上移植uC/OSII操作系統(tǒng)是切實可行的。uC/OSII版本以上的內核都具有可搶占的實時多任務調度功能,另外它還提供了許多系統(tǒng)服務,例如信號量、消息隊列、郵箱、內存管理和時間函數等。目前,它支持X8ARM、XSCALE等眾多體系結構,已有上百個商業(yè)應用實例,并通過了美國航空航天局的認可。最后,需要對整個應用程序進行總體設計,使各個模塊之間穩(wěn)定運行。利用上位機Windows系統(tǒng)自帶的超級終端作為發(fā)送方,與系統(tǒng)進行通信下載。Xmodem傳輸協(xié)議中對超時處理也做了詳細的規(guī)定,在此不作詳細的介紹,這里需要注意當所有的超時以及錯誤事件重試10次后放棄傳輸。Xmodem協(xié)議的數據傳輸是以數據幀為單位,每一數據幀長度為132字節(jié),其中文件數據占128字節(jié),其余四個字節(jié)分別為:開始標志、塊序號、塊序號補碼和校驗字節(jié)。這里需要說明的是數據塊的大小并不總是128個字節(jié),Xmodem協(xié)議的最基本版本傳輸數據包為128字節(jié),在其上還有Xmodem-1K的擴展,其數據包加大到了1024個字節(jié)(1K),因此其傳輸速度也大大提高。協(xié)議代碼主要分為三層:l 物理層:用于控制UART器件;l 鏈路層:處理Xmodem協(xié)議;l 協(xié)議應用層:負責將收到的單個128字節(jié)數據塊組合成一個完整的數據塊,并寫入程序存儲器緩沖區(qū);根據協(xié)議規(guī)定文件發(fā)送方將文件分解成若干個數據塊,每個數據塊為128字節(jié),每發(fā)送一個數據塊,等待對方應答后才發(fā)送下一個數據塊。上述部分詳細介紹了在S3C44B0X系統(tǒng)中Bootloader的主要功能以及設計的流程,系統(tǒng)上電后首先執(zhí)行該啟動代碼,在運行10秒鐘之內如果沒有輸入命令,系統(tǒng)則自動將應用程序加載到SDRAM中。 拷貝一個字,a1+=4, a2+=4 CMP a1,a3 BNE move_loop goto_main : BL Main5. 呼叫主程序當系統(tǒng)初始化完成后,就要轉入主程序,此功能由跳轉指令來完成。 RW段在ROM中的起始地址 LDR a3, =|Image$$ZI$$Base| 。 清0,a1+=4 CMP a1, a2 BNE clear_loop move_data LDR a1, =|Image$$RW$$Base| 。 寄存器清0 LDR a2,= |Image$$ZI$$Limit| 。其中|Image$$ZI$$Base|,|Image$$ZI$$Limit|,|Image$$RW$$Base|,|Image$$RO$$Limit|都是由鏈接器定義輸出的,主要是輸出段的起始和終止定為信息,具體程序如下: startram : LDR a1, =|Image$$ZI$$Base| 。解決的方法是在使用RW段之前將RW段“搬移”到正確的地址處。 ,加載域就是最原始的可執(zhí)行文件,即燒寫在FLASH中的文件,可以看出RW段緊跟在RO段之后??蓤?zhí)行的映像結構由RO段、RW段和ZI段三部分組成,分別為只讀數據段、可讀寫數據段和堆棧段。需要注意的是:不要切換到用戶模式進行本模式的堆棧設置,因為進入用戶模式后就不能通過修改CPSR寄存器回到別的工作模式。3. 堆棧初始化S3C44B0X有7種工作模式,每種模式都有獨立的堆棧指針寄存器(SP),并定義相應地址。2. 初始化存儲器系統(tǒng)存儲器系統(tǒng)的初始化是指對FLASH和RAM存儲器的地址范圍,數據總線寬度以及SDRAM的刷新等進行軟件設置。非向量中斷通過執(zhí)行IsrIRQ判斷中斷源,并計算出相應中斷服務程序的起始地址HandleEINT0,然后將此地址加載到PC。它的值為0xc7fff00,即在RAM的高端開辟一塊空間用于中斷服務程序的地址,這個值也可以修改為其他值。S3C44B0X的I_ISPR寄存器記錄了當前的中斷,所以引導程序在IsrIRQ的代碼中借用I_ISPR寄存器和引導程序中數據段的定義獲得中斷服務程序的地址。在引導程序初始化的時候,標號為HandleIRQ的變量被賦值,被賦予的值就是IsrIRQ。例如非向量中斷處理,當中斷EINT0產生后,CPU從向量表中的地址0x0000_0018(IRQ)處開始執(zhí)行,該處的指令為:b HandlerIRQ。當一個中斷發(fā)生后,處理器會自動跳轉到0x0000_0000地址開始的異常中斷向量表中的某個位置(由中斷類型確定)讀取指令后運行。然后ARM內核在FLASH中訪問中斷向量表。中斷控制器收到這個信號后檢查該中斷是否被允許或被屏蔽。根據該目標系統(tǒng),Bootloader的設計流程包括:(1)設置異常向量表;(2)初始化存儲器系統(tǒng);(3)堆棧初始化;(4)C例程全局變量初始化;(5)呼叫主程序;接下來的章節(jié)將對上述流程進行詳細的介紹。 在此S3C44B0X的嵌入式系統(tǒng)中,為了保證上電或復位時正常運行,Bootloader必須存放在FLASH中的0x0000_0000地址處,因此在硬件設計上把FLASH接在ARM的nGCS0處。 對于Bootloader完成的上述工作,主要分為兩個部分。l Flash(BootRom)編程:引導flash編程,通過串口或以太網口下載編譯成功的操作系統(tǒng)或者應用程序,甚至BootRom本身。由于嵌入式系統(tǒng)中,通常沒有像BIOS那樣的固件程序,因此需要Bootloader獨自完成對系統(tǒng)主板上的主要部件如CPU、SDRAM、FLASH、串口UART等進行初始化并承擔整個系統(tǒng)的加載啟動任務[8]。根據S3C44B0X的存儲器結構,ROM的硬件設計見本文第三章,下面將基于此設計介紹引導代碼的主要功能。引導代碼中的配置和硬件初始化如果不正確,系統(tǒng)將不能正常運行或不能運行。因此對涉及到的電路都進行了細致分析和說明,并給出了詳細的電路設計原理圖。擴展板則主要包括了FPGA,A/D轉換,D/A轉換,串口UART和LCD接口等外圍設備。將硬件的設計過程中分為核心板設計和擴展板設計。由于要驅動外部繼電器,其本身的驅動電流很小,所以末端連接一塊ULN2803繼電器驅動芯片,足以滿足外部繼電器的需要。 數字I/O口的輸出用來控制氣路系統(tǒng)中電磁閥。 DAC轉換電路 運算放大器OPA132主要是降低輸出阻抗,增強電路抗干擾能力。 74HC245連接電路 數模轉換電路主要完成數字量到模擬量的轉換,本設計通過界面輸入相應數值,然后將該數字量轉換成高壓電源模塊的控制輸入信號,完成對高壓模塊的控制。
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1