国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

單片機測試系統的數據存儲和管理

發布時間:2010-9-20 12:34    發布者:eetech
自動化測試領域里,單片機測試系統憑借其成熟的應用體系,簡單的系統結構以及優良的性價比得到了越來越廣泛的應用。近年來,隨著新的測試對象不斷出現,以及測試手段的不斷發展,測試系統的功能越來越完善,各種應用場合對測試系統的要求也日益提高。現在的大多數測試系統不僅要完成工業現場的實時測控任務,同時還要進一步實現對測試數據的實時處理和保存。以往在一般的單片機測試系統中,信息的存儲量并不大,系統只須用較少的資源就能實現數據的存儲。但是隨著存儲芯片技術的不斷發展,適用于單片機系統的存儲芯片已經可以在掉電保護的情況下保存上百KB甚至幾MB的數據;同樣,目前的單片機測試系統也面臨動輒處理并保存上千條乃至近萬條測試數據的問題。這對一般的缺少操作系統支持的單片機測試系統來說,是一項相當復雜的工作,因而目前的測試系統往往只能針對具體數值對象進行處理,對大量采集數據采取簡單的順序存儲方式。顯然,這種方法缺少靈活性,不利于單片機測試系統處理大量測試數據,限制了測試系統在這方面的發展。

本文主要針對處理測試數據量較大的一類測試系統,討論測試數據的存儲和管理問題。這類測試系統往往由抗干擾能力較強的單片機和大容量、掉電保護的存儲芯片組成,同時配有高精度數字式傳感器;造價便宜,性能穩定,適合工作在工業現場,保存和處理大量測試數據,有的甚至能夠與上位機組成測控網絡完成更為復雜的測試任務。本文將介紹一種應用于單片機測試系統的鏈式存儲方式,能夠在工業現場進行實時測控的同時,實現對大量測試數據的保存和管理,在實際應用中取得了良好的效果。

大容量單片機測試系統中的存儲結構

在大多數自動測試系統中,測試數據的邏輯結構一般都會遵循線性邏輯關系,即數據元素在時間或者空間順序上只分先后次序而不存在上下層次。因此在設計存儲結構時往往采用順序存儲結構,其優點在于處理線性數據結構時速度快,而且結構簡單。

但是上述情況在前文所述的大容量測試系統中并不是普遍適用的。大容量測試系統雖然同樣是線性邏輯結構,但其測試數據變化多樣,構成數據元素的內部結構也非常復雜,而且系統又要執行數據保存和數據查詢等多項指令操作,如果再應用順序存儲結構就會面臨許多問題。

首先,測試系統經常會面臨一些較為特殊的測試對象。其測試信息較為復雜且數據長度不固定,顯然不利于采用順序存儲結構。假設系統按照時間或空間上的邏輯順序來進行順序存儲,那么對存儲空間的分配將成為難題。若分配空間過大,則影響存儲效率;反之,又會出現數據溢出的情況。類似地,假設系統能夠安排好數據的存放空間,在進行數據查詢、數據刪除等操作時系統也會顯得力不從心。

其次,采用順序存儲結構不能很好地處理抽象數據類型。系統在進行數據保存、數據查詢以及數據刪除等操作時都要考慮數據元素的長度和內容,不能做到靈活、有效。當系統需要修改或升級時,對數據元素內部結構的修改又會影響到系統的整體操作,從而降低了系統的可靠性和高效性,同時使得系統進行維護和升級的難度大大增加。

綜上所述,順序存儲結構并不能解決大容量測試系統在存儲和管理數據時面臨的所有問題,因此在實際操作中必須考慮非順序存儲結構的應用。長久以來,在單片機系統中較少采用諸如鏈式存儲結構等非順序存儲結構,原因在于鏈式存儲結構必須有一套專門的存儲管理系統來支持。在通用計算機中,這一功能由操作系統或高級語言的編譯系統來實現,但在普通單片機系統中沒有成熟的應用案例,因而使程序設計的難度較高。下面介紹一種應用于大容量單片機系統的存儲管理系統,能夠支持大容量單片機測試系統的應用鏈式存儲方式。

大容量測試系統的存儲管理系統

對于采用鏈式存儲結構的大容量測試系統,鏈表中各結點的物理地址是不固定的。為避免在保存數據時可能出現的存儲空間沖突問題,需要建立專門的存儲管理系統來管理存儲空間的開辟和釋放。其中,數據引導表是存儲管理系統的基礎,負責記錄存儲空間中各個數據元素的存儲信息。利用數據引導表,同時配合實現開辟空間、釋放空間等操作的函數,測試系統能夠實現對大量存儲空間的有效管理。

數據引導表

建立數據引導表,就是建立一種鏈表中各結點與其相應物理地址之間的聯系,規范每個結點對存儲空間的使用。在測試系統中,引導表只是占用存儲空間內劃分的一段固定區域,其記錄對象是一段已被分配占用的連續地址空間的首地址和末地址,標志著保存在存儲空間上的某個結點所分配占用的空間大小,稱為一個“記錄”。各個記錄在引導表中的物理地址是連續的,并且按照每個記錄首地址的大小依次排列。數據引導表工作原理如圖1所示。



圖1 數據引導表工作原理示意圖

在初始狀態時,內存引導表只有2個記錄,表明整個存儲空間的首地址和末地址,此時整個頁面空間沒有存儲任何測試數據。一旦有新的結點需要在這一空間上保存,CPU將為該結點開辟一段連續的存儲區間供其使用,并將該段空間的首地址和末地址作為一個記錄寫入內存引導表中。同樣的當系統需要在某一頁面上刪除一個鏈表中的結點時,CPU將其對應的記錄在內存引導表中刪除,以此來釋放此段地址空間。值得說明的是,對于在引導表中被釋放的存儲空間部分,其保存的內容并沒有真正刪除;在新的數據覆蓋該地址之前,CPU還是可以通過直接訪問該地址來讀取其中的存儲數據。


管理存儲空間的函數

一般來講,在通用計算機中往往利用C語言中的標準庫函數malloc()、realloc()和free()來實現對存儲空間的分配和管理,但這種方式對于一般的大容量測試系統并不合適。

假設在前文所述的大容量測試系統中,系統采用16位地址的單片機,利用分頁存儲模式對512KB掉電保護存儲器進行訪問。將存儲器分為16個頁面(00H~0FH),每個頁面地址為0000H~7FFFFH,共計32KB。此時系統利用malloc()可以在未被使用的空間中開辟一段存儲空間,但是該函數返回的地址指針是隨機的,有可能將空間分配在系統無法識別的區間(如7FFFH~FFFFH),因此不能滿足需要。另外,由于系統中存儲器具有掉電保護功能,CPU在重新上電后將無法識別已保存測試數據的存儲空間,從而使malloc()函數失去意義。因此,還是以數據引導表為基礎來建立存儲空間的管理函數。其具體功能的實現都依賴于函數對數據引導表中各個記錄的操作,程序如下:

void *m_alloc(uintsize,ucharpage)//開辟存儲空間的函數

void *m_free(voidxdata*p_free,ucharpage)//釋放已開辟存儲空間的函數

void *re_alloc(voidxdata*p_re,uintsize,ucharpage)//重新開辟存儲空間的函數

以m_alloc()函數為例,其程序流程圖如圖2所示。



圖2 開辟存儲空間函數m_alloc()的程序流程

當系統需要為某一結點開辟存儲空間時,首先給出指定的存儲空間頁面page和需要開辟空間的長度size,然后通過m_alloc()函數在相應頁面的引導表內查詢是否有合適的存儲空間。由于引導表中每個記錄都代表一段已被分配的連續的地址區間,因此m_alloc()函數會從第一個記錄開始判斷每兩個相鄰記錄之間未被分配空間的長度是否滿足系統的需要。當有一對記錄滿足條件時,m_alloc()函數會返回該段未被分配存儲空間的首地址(即前一個記錄的末地址)指針,同時在這兩個記錄中間插入此次開辟空間段的新記錄。如果該頁面引導表的所有記錄都不滿足條件,則m_alloc()函數返回空指針。re_alloc()函數和m_free()函數分別完成重新分配指定首地址的一段存儲空間和刪除指定首地址的一段存儲空間的操作。其功能和用法與m_alloc()類似,不再贅述。

鏈式存儲結構和存儲管理系統在實際操作中的應用

利用上文所述的存儲管理系統可以實現在大容量測試系統中應用鏈式存儲結構,這樣做的好處在于能夠有效地簡化系統存儲數據的過程,有利于執行多項指令操作,提高系統存儲空間的利用率。

SF6密度繼電器校驗系統

如圖3所示,SF6密度繼電器校驗系統由51系列單片機、512KB掉電保護存儲器、打印機、時鐘系統和LCD組成,配有高精度的數字式壓力傳感器溫度傳感器,可以通過485總線與上位機通信。該系統能夠對不同類型的密度繼電器進行校驗,滿足各種額定參數和接點數目的需要,在校驗過程中實現實時顯示、打印數據等多項功能;對同一繼電器能夠保存多組校驗數據,最多可保存4000多條校驗數據;對于所有的校驗記錄,都可以隨時進行查詢;另外,在與上位機進行通信時,有相應的上位機軟件對下位機系統進行的數據傳輸、存儲器空間查詢和數據刪除等操作。


圖3 SF6密度繼電器校驗系統結構框圖

具體來講,SF6密度繼電器校驗系統以SF6密度繼電器作為校驗對象,校驗結果包含SF6氣體的壓力值和溫度值,因此將每個校驗對象的校驗結果抽象為一個數據元素,分別包括該校驗對象的測試信息(如測試日期,繼電器的測試序號、接點數目和額定參數信息)和一組或多組的測量值信息(如校驗次數、報警、閉鎖1、閉鎖2、超壓接點分別動作、返回時的壓力值和溫度值)。系統以每個數據元素為結點建立鏈式存儲結構,并通過上述的管理存儲系統來管理存儲空間的分配,這樣既能保證有效、合理地保存校驗數據,又能很好地實現數據查詢、數據刪除以及與上位機通信等操作,使系統的運行更加高效可靠。

非線性邏輯結構的自動測試系統

當自動測試系統面臨非線性邏輯結構的數據元素時,必須要采取非順序存儲結構來保存數據,此時可以考慮鏈式存儲結構,或者索引存儲結構以及二叉樹等各種非順序存儲結構,但前提條件都是要有一套專門的存儲管理系統來支持。

有了上述的存儲管理系統作基礎,各種非順序存儲結構的應用就成為可能。在設計系統時充分權衡存儲空間的利用率和算法所耗費的時間,就能夠有針對性地應用多種存儲結構并設計出相應的算法,以滿足各種測試對象和測試環境的要求。

結語

以鏈式結構的形式保存數據和通過數據引導表來管理存儲空間,是應用于大容量單片機測試系統的一種新的數據保存和管理方式。

這種存儲方式既適用于線性邏輯結構測試系統,也適用于非線性邏輯結構測試系統,總體上使得單片機系統在處理多項復雜數據并進行反復保存、查詢和刪除等操作時更加快捷簡便,提高了對有限容量存儲空間的利用率;同時,結構化的數據存儲使得系統的維護和升級更加輕松,實現了系統的結構化管理。
本文地址:http://m.qingdxww.cn/thread-28247-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 星武神诀在线观看全集免费播放 | 久久精品国产精品亚洲婷婷 | 精品精品国产高清a毛片牛牛 | 四虎免费网站 | 国产黄mmd在线观看免费 | 成年男女免费视频观看性 | 国产性大片免费播放网站 | 免费在线观看a | 偷偷操网站 | 久久国产影视 | 在线视频一区二区三区 | 日本家庭女教师 | 厚颜无耻有字幕在线观看 | 国产 日韩 在线 | re99热久久这里只有精品 | 亚洲尹人九九大色香蕉网站 | 亚洲黄色影片 | 亚洲欧美日韩在线观看播放 | 特级毛片aaaa免费观看 | 国内免费一区二区三区视频 | 日韩精品国产一区 | 丁香婷婷久久大综合 | 91国内揄拍国内精品情侣对白 | 一区二区在线欧美日韩中文 | 97成人精品视频在线播放 | a久久久久一级毛片护士免费 | 破处在线观看 | 欧美色片在线观看 | 精品一区二区三区四区五区 | 蜜桃臀在线成人亚洲 | 国产精品麻豆一区二区三区 | www色视频 | 特赦1959全集免费观看 | 日韩二级片| 国产精品资源 | 九九99久久精品国产 | 日本一区网站 | 夜夜爽天天狠狠九月婷婷 | 四虎国产精品免费久久久 | 日本 视频 | 国产一级a毛片高清 |