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

正文內(nèi)容

基于arm7半自動生化分析儀的研究與設(shè)計碩士學(xué)位畢業(yè)論文-資料下載頁

2025-06-22 04:31本頁面
  

【正文】 1. CodeWarrior IDE簡介ADS IDE集成開發(fā)環(huán)境,并集成了ARM匯編器、ARM的C/C++編譯器、Thumb的C/C++編譯器、ARM連接器,包含工程管理器、代碼生成接口、語法敏感(對關(guān)鍵字以不同顏色顯示)編輯器、源文件和類瀏覽器等等。CodeWarrior 所示。 CodeWarrior開發(fā)環(huán)境2. AXD 調(diào)試器簡介AXD調(diào)試器為ARM擴展調(diào)試器(即ARM eXtended Debugger),包括ADW/ADU 的所有特性,支持硬件仿真和軟件仿真(ARMulator)。AXD能夠裝載映像文件到目標(biāo)內(nèi)存,具有單步、全速和斷點等調(diào)試功能,可以觀察變量、寄存器和內(nèi)存的數(shù)據(jù)等等。 所示。 HJTAG 仿真器的介紹和應(yīng)用1. HJTAG 仿真器的介紹 HJTAG[37]是一款簡單易用的調(diào)試代理軟件,功能和流行的MULTIICE 類。HJTAG 包括兩個工具軟件:HJTAG SERVER和HFLASHER。其中,HJTAG SERVER實現(xiàn)調(diào)試代理的功能,而HFLASHER則實現(xiàn)了FLASH燒寫的功能。 HJTAG支持所有基于ARM7和ARM9的芯片的調(diào)試,并且支持大多數(shù)主流的ARM調(diào)試軟件,如ADS、RVDS、IAR和KEIL。通過靈活的接口配置,HJTAG可以支 AXD 調(diào)試器持WIGGLER,SDTJTAG和用戶自定義的各種JTAG調(diào)試小板。同時,附帶的HFLASHER 燒寫軟件還支持常用片內(nèi)片外FLASH 的燒寫。使用HJTAG,用戶能夠方便的搭建一個簡單易用的ARM調(diào)試開發(fā)平臺。HJTAG的功能和特定總結(jié)如下:1. 支持RDI ;2. 支持所有ARM7以及ARM9芯片;3. 支持THUMB以及ARM指令;4. 支持LITTLEENDIAN以及BIGENDIAN;5. 支持SEMIHOSTING;6. 支持WIGGLER,SDTJTAG和用戶自定義JTAG調(diào)試板;7. 支持WINDOWS ;8.支持常用FLASH芯片的編程燒寫;9. 支持LPC2000和AT91SAM片內(nèi)FLASH的自動下載;2. HJTAG仿真器的應(yīng)用HJTAG支持ARM公司的RDI接口。通過RDI接口,HJTAG能夠支持大多數(shù)主流的ARM 調(diào)試軟件。 所示。調(diào)試軟件(AXD/RVDS/IAR/KEIL)通過RDI接口與HJTAG SERVER進行交互。HJTAG SERVER通過與并口相連的JTAG調(diào)試板控制目標(biāo)調(diào)試板。HJTAG提供了靈活的JTAG接口設(shè)置。通過設(shè)置,HJTAG可以支持不同類型的JTAG調(diào)試板,例如流行的WIGGLER,SDTJTAG,用戶也可以根據(jù)自己的需要使用自定義的JTAG 調(diào)試板。 HJTAG調(diào)試結(jié)構(gòu)圖除了調(diào)試,用戶還可以通過HFLASHER 將程序和數(shù)據(jù)燒寫/下載到FLASH 芯片中去。目前,HFLASHER 支持的常見的片內(nèi)和片外FLASH 芯片。隨著軟件的更新和升級,HFLASHER支持的芯片類型也會不斷的增加。在執(zhí)行FLASH 燒寫時,HFLASHER與HJTAG : 圖4-4 HJTAG調(diào)試結(jié)構(gòu)圖燒寫FLASH時,HFLASHER與HJTAG的連接交互和調(diào)試的時候十分類似。HFLASHER通過RDI接口與HJTAG SERVER進行交互,以訪問和控制目標(biāo)開發(fā)板。根據(jù)用戶提供的配置文件,HFLASHER最終完成FLASH燒寫工作。 HFLASHER工作流程 生化分析儀的軟件結(jié)構(gòu)系統(tǒng)程序包括上電時啟動程序設(shè)計和應(yīng)用程序設(shè)計。啟動程序指LPC2124在上電復(fù)位或手動復(fù)位后進入C語言main()函數(shù)之前執(zhí)行的一段匯編程序,這段程序主要是為C語言程序提供基本的運行環(huán)境,包括異常向量表的設(shè)置,堆棧配置等。這段程序設(shè)置的系統(tǒng)參數(shù)直接影響后續(xù)程序的運行,是整個系統(tǒng)軟件運行的基礎(chǔ)和前提。系統(tǒng)應(yīng)用程序由主程序、中斷服務(wù)程序和其他子程序組成。在設(shè)計中采用模塊設(shè)計技術(shù),根據(jù)系統(tǒng)的功能,將軟件分成若干個功能相對獨立的模塊,包括鍵盤處理模塊、實時時鐘模塊、顯示模塊和數(shù)據(jù)處理模塊。各個程序模塊分別進行設(shè)計、編程和調(diào)試,最后將各個調(diào)試好的程序模塊練成一個完整的程序[38]。_main(),它初始化庫并最終引導(dǎo)CPU進入main()函數(shù)。主程序主要完成數(shù)據(jù)的采集、生化過程檢測控制、數(shù)值顯示等功能。開機首先執(zhí)行初始化子程序,進入檢測初始化頁面,然后根據(jù)按鍵處理或頁面跳轉(zhuǎn)條件進入不同的操作流程,執(zhí)行相應(yīng)的流程。在主循環(huán)中,系統(tǒng)查詢各個功能塊的執(zhí)行標(biāo)志判斷是否到了功能塊的執(zhí)行時間。當(dāng)功能塊的執(zhí)行標(biāo)志被置1時,系統(tǒng)可以執(zhí)行功能塊程序,執(zhí)行結(jié)束后,將該標(biāo)志清零,接著查詢下一個功能塊的執(zhí)行標(biāo)志;相反執(zhí)行標(biāo)志為零時,說明功能塊訪問間隔時間未到,不進入該功能塊,直接查詢下一功能塊。這種處理模式避免了一般順序處理程序刻板遵循處理順序的毛病,當(dāng)主程序順序執(zhí)行到功能塊時,不會因為該功能塊未準(zhǔn)備好而出現(xiàn)長時間在原地等待直至該功能塊準(zhǔn)備完畢的問題與由于各個功能塊的準(zhǔn)備時間不盡相同,等待時間不易控制,最終導(dǎo)致程序不穩(wěn)定的問題。生化分析儀的程序?qū)⒃谖⒖刂破魃想姷臅r候開始運行,并在斷電的時候停止運行,因此系統(tǒng)設(shè)計以超級循環(huán)為框架,將各任務(wù)模塊嵌入到該框架中,循環(huán)不間斷運行。 軟件設(shè)計的整體框圖這種超級循環(huán)系統(tǒng)的主要優(yōu)點是:① 簡單,編寫、調(diào)試、試驗和維護相對容易;② 效率很高,很少有硬件資源問題;③ 非常容易移植。但這也意味著每一次循環(huán)所有的模塊都會被訪問到,這會使系統(tǒng)或者系統(tǒng)某些模塊始終工作在“滿負(fù)荷”(正常運行方式)下,這不符合資源的經(jīng)濟利用和代碼效率的提高。以溫度測量為例,一般溫度的變化是一個緩慢的過程,它以秒或分為單位變化,而在一個良好的、反應(yīng)迅速的系統(tǒng)中,一個循環(huán)會控制在幾個毫秒內(nèi)。這樣只需要在多個循環(huán)后訪問一次溫度測量模塊即可,而不需要一次循環(huán)就進行一次溫度的讀取,避免造成資源浪費;另一方面這種簡單的嵌入也會造成系統(tǒng)運行錯誤,因為某些任務(wù)兩次運行之間需要精確的時間間隔(例如開啟A/D轉(zhuǎn)換),而超級循環(huán)無法為系統(tǒng)提供這種精度和靈活性。因此必須改進這種超級循環(huán)系統(tǒng),使模塊不再被簡單的順序訪問,而是按照一定的規(guī)則在需要執(zhí)行的情況下被調(diào)用。如何將這些任務(wù)合理的組織安排,使系統(tǒng)正常運行就需要借助調(diào)度器這個概念。我們從兩個角度來解釋調(diào)度器:u 一方面,調(diào)度器可以看作一個簡單的操作系統(tǒng),允許以周期性或單次方式來調(diào)用任務(wù)。u 另一方面,從底層的角度來看,調(diào)度器可以看作是一個由許多不同任務(wù)共享的喚醒時鐘。初始化一個定時器后,以這個定時器為基本時間單位,根據(jù)任務(wù)的執(zhí)行時間間隔設(shè)置不同的計數(shù)器,使任務(wù)在特定的時刻被調(diào)度運行(以周期性或單次方式)。這樣不同時間間隔的任務(wù),可以使用同一個定時器,由調(diào)度器根據(jù)計數(shù)器值判斷是否添加到等待執(zhí)行隊列中去。這種調(diào)度器提供了一種單任務(wù)的系統(tǒng)結(jié)構(gòu),一次只為一個任務(wù)分配存儲器。它不但簡單可靠而且可預(yù)測,因為在任一時刻只有一個任務(wù)實活動的。 生化分析儀的程序設(shè)計 啟動代碼程序設(shè)計基于ARM的芯片多數(shù)為復(fù)雜的片上系統(tǒng),這種復(fù)雜系統(tǒng)里的多數(shù)硬件模塊都是可配置的,需要由軟件來設(shè)置其需要的工作狀態(tài)。因此在用戶的應(yīng)用程序之前,需要由專門的一段代碼來完成對系統(tǒng)的初始化。由于這類代碼直接面對處理器內(nèi)核和硬件控制器進行編程,一般都是用匯編語言。一般通用的內(nèi)容包括:中斷向量表、初始化存儲器系統(tǒng)、初始化堆棧、初始化有特殊要求的斷口,設(shè)備、初始化用戶程序執(zhí)行環(huán)境、改變處理器模式和呼叫主應(yīng)用程序。1. 中斷向量表ARM要求中斷向量表必須放置在從0地址開始,連續(xù)84字節(jié)的空間內(nèi)。每當(dāng)一個中斷發(fā)生以后,ARM處理器便強制把PC指針置為向量表中對應(yīng)中斷類型的地址值。因為每個中斷只占據(jù)向量表中1個字的存儲空間,只能放置一條ARM指令,使程序跳轉(zhuǎn)到存儲器的其他地方,再執(zhí)行中斷處理。中斷向量表的程序?qū)崿F(xiàn)通常如下表示:AREA vectors,CODE,READONLY ENTRYLDR PC, ResetAddrLDR PC, UndefinedAddrLDR PC, SWI_AddrLDR PC, PrefetchAddrLDR PC, DataAbortAddr DCD 0xb9205f80LDR PC, [PC, 0xff0]LDR PC, FIQ_Addr其中關(guān)鍵字ENTRY是指定編譯器保留這段代碼,因為編譯器可能會認(rèn)為這是一段冗余代碼而加以優(yōu)化。鏈接的時候要確保這段代碼被鏈接在0地址處,并且作為整個程序的入口。 2. 初始化存儲器系統(tǒng)(1)存儲器類型和時序配置通常Flash和SRAM同屬于靜態(tài)存儲器類型,可以合用同一個存儲器端口;而DRAM因為有動態(tài)刷新和地址線復(fù)用等特性,通常配有專用的存儲器端口。存儲器端口的接口時序優(yōu)化是非常重要的,這會影響到整個系統(tǒng)的性能。因為一般系統(tǒng)運行的速度瓶頸都存在于存儲器訪問,所以存儲器訪問時序應(yīng)盡可能的快;而同時又要考慮到由此帶來的穩(wěn)定性問題。(2)存儲器地址分布一種典型的情況是啟動ROM的地址重映射。3. 初始化堆棧因為ARM有7種執(zhí)行狀態(tài),每一種狀態(tài)的堆棧指針寄存器(SP)都是獨立的。因此,對程序中需要用到的每一種模式都要給SP定義一個堆棧地址。方法是改變狀態(tài)寄存器內(nèi)的狀態(tài)位,使處理器切換到不同的狀態(tài),讓后給SP賦值。注意:不要切換到User模式進行User模式的堆棧設(shè)置,因為進入User模式后就不能再操作CPSR回到別的模式了,可能會對接下去的程序執(zhí)行造成影響。這是一段堆棧初始化的代碼示例,其中只定義了三種模式的SP指針:MRS R0,CPSRBIC R0,R0,MODEMASK ;安全起見,屏蔽模式位以外的其他位ORR R1,R0,IRQMODEMSR CPSR_cxfs,R1LDR SP,=UndefStackORR R1,R0,FIQMODEMSR CPSR_cxsf,R1LDR SP,=FIQStackORR R1,R0,SVCMODEMSR CPSR_cxsf,R1LDR SP,=SVCStack4. 初始化有特殊要求的端口,設(shè)備5. 初始化應(yīng)用程序執(zhí)行環(huán)境映像一開始總是存儲在ROM/Flash里面的,其RO部分即可以在ROM/Flash里面執(zhí)行,也可以轉(zhuǎn)移到速度更快的RAM中執(zhí)行;而RW和ZI這兩部分是必須轉(zhuǎn)移到可寫的RAM里去。所謂應(yīng)用程序執(zhí)行環(huán)境的初始化,就是完成必要的從ROM到RAM的數(shù)據(jù)傳輸和內(nèi)容清零。下面是在ADS下,一種常用存儲器模型的直接實現(xiàn):LDR r0,=|Image$$RO$$Limit| ;得到RW數(shù)據(jù)源的起始地址LDR r1,=|Image$$RW$$Base| ;RW區(qū)在RAM里的執(zhí)行區(qū)起始地址LDR r2,=|Image$$ZI$$Base| ;ZI區(qū)在RAM里面的起始地址CMP r0,r1 ;比較它們是否相等 BEQ %F10 CMP r1,r3 LDRCC r2,[r0],4 STRCC r2,[r1],4 BCC %B01 LDR r1,=|Image$$ZI$$Limit| MOV r2,02 CMP r3,r1 STRCC r2,[r3],4 BCC %B2程序?qū)崿F(xiàn)了RW數(shù)據(jù)的拷貝和ZI區(qū)域的清零功能。其中引用到的4個符號是由鏈接器第一輸出的。|Image$$RO$$Limit|:表示RO區(qū)末地址后面的地址,即RW數(shù)據(jù)源的起始地址|Image$$RW$$Base|:RW區(qū)在RAM里的執(zhí)行區(qū)起始地址,也就是編譯器選項RW_Base指定的地址|Image$$ZI$$Base|:ZI區(qū)在RAM里面的起始地址|Image$$ZI$$Limit|:ZI區(qū)在RAM里面的結(jié)束地址后面的一個地址程序先把ROM里|Image$$RO$$Limt|開始的RW初始數(shù)據(jù)拷貝到RAM里面|Image$$RW$$Base|開始的地址,當(dāng)RAM這邊的目標(biāo)地址到達(dá)|Image$$ZI$$Base|后就表示RW區(qū)的結(jié)束和ZI區(qū)的開始,接下去就對這片ZI區(qū)進行清零操作,直到遇到結(jié)束地址|Image$$ZI$$Limit|。6. 改變處理器模式因為在初始化過程中,許多操作需要在特權(quán)模式下才能進行(比如對CPSR的修改),所以要特別注意不能過早的進入用戶模式。內(nèi)核級的中斷使能也可以考慮在這一步進行。如果系統(tǒng)中另外存在一個專門的中斷控制器,這么做總是安全的。7. 呼叫主應(yīng)用程序當(dāng)所有的系統(tǒng)初始化工作完成之后,就需要把程序流程轉(zhuǎn)入主應(yīng)用程序。最簡單的一種情況是:IMPORT mainB main直接從啟動代碼跳轉(zhuǎn)到應(yīng)用程序的主函數(shù)入口,當(dāng)然主函數(shù)名字可以由用戶隨便定義。在ARM ADS環(huán)境中,還另外提供了一套系統(tǒng)級的呼叫機制。IMPORT __mainB __main__main()是編譯系統(tǒng)提供的一個函數(shù),負(fù)責(zé)完成庫函數(shù)的初始化和初始化應(yīng)用程序執(zhí)行環(huán)境,最后自動跳轉(zhuǎn)到main()函數(shù)。 鍵盤處理程序 鍵盤在單片機中應(yīng)用系統(tǒng)中實現(xiàn)向單片機輸入數(shù)據(jù),傳送命令等。本系統(tǒng)根據(jù)情況需要,需要自制一個16按鍵的28矩陣鍵盤。矩陣式鍵盤的按鍵觸點接于由行、列母線構(gòu)成的矩陣電路交叉處,每當(dāng)一個按鍵按下時通過該鍵將相應(yīng)的行、列母線相同。若在行、列母線中把行母線逐行 鍵盤控制程序流程圖置0(一種掃描方式),那么
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1