一種LCU測試系統(tǒng)的設(shè)計
出處:劉 潔,陳特放,李比翼 發(fā)布于:2011-09-02 13:36:54
隨著我國機車控制水平的不斷提高,微機控制已經(jīng)成為我國機車控制的重要控制方式,而邏輯控制單元LCU(Logic Control Unit)作為主要完成機車運行邏輯控制、電路故障記錄控制等功能的控制模塊,是關(guān)系機車安全運行的重要部件。
ARM(Advanced RISC Machines)是微處理器行業(yè)的一家企業(yè),設(shè)計了大量高性能、廉價、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點。適用于多種領(lǐng)域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應用等。ARM(Advanced RISC Machines)是微處理器行業(yè)的一家企業(yè),設(shè)計了大量高性能、廉價、耗能低的RISC處理器、相關(guān)技術(shù)及軟件。技術(shù)具有性能高、成本低和能耗省的特點。適用于多種領(lǐng)域,比如嵌入控制、消費/教育類多媒體、DSP和移動式應用等。 ARM(Asynchronous Resbonse Mode)異步響應方式異步響應方式ARM(Asynchronous Responses Mode)也是一種非平衡數(shù)據(jù)鏈路操作方式,與NRM不同的是,ARM下的傳輸過程由從站啟動。從站主動發(fā)送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發(fā)的幀。在這種操作方式下,由從站來控制超時和重發(fā)。該方式對采用輪詢方式的多站鏈路來說是必不可少的。
1 系統(tǒng)設(shè)計原理
LCU檢測就是對LCU內(nèi)部運行邏輯做出測試并進行故障診斷。測試系統(tǒng)通過向被測試的LCU發(fā)出初始命令,并查看其輸出結(jié)果是否與參考輸出相同,從而判斷被測試的LCU邏輯是否正確。
本文沿用傳統(tǒng)繼電器控制中的部分概念進行軟件分析。傳統(tǒng)硬件繼電器觸點分為“常開觸點”和“常閉觸點”兩類。一條線路的運行結(jié)果會反映到另外一個線圈上,因此,繼電器控制的輸出可以用線圈表示。
線路上的信號都可以采用二進制表達,所以測試的范圍會根據(jù)線路上觸點個數(shù)呈現(xiàn)指數(shù)增長。對于要求不太嚴格的控制信號,只要求在適當?shù)臈l件下,得到開通或閉合的結(jié)果,其動作的條件為充分不必要條件。對于要求嚴格的控制信號,不僅要求在確定的條件下得到應有的結(jié)果,而且要保證這個條件是充分必要條件。因此,很大程度上測試可能會遍歷觸點的所有組合,測試的總體消耗時間就會擴充到很大的時間范圍。
可見,測試情況的選擇十分重要。測試復雜性的主要矛盾在于:需要證明充分必要條件的線路的多少以及該線路的觸點的多少。工業(yè)標準反映在程序中的情況就是保留測試的選擇性,便于在后續(xù)工作中進行選擇和修改。本系統(tǒng)的硬件框圖如圖1所示。

2 嵌入式Linux操作系統(tǒng)移植
Linux是一類Unix計算機操作系統(tǒng)的統(tǒng)稱。Linux操作系統(tǒng)的內(nèi)核的名字也是“Linux”。Linux操作系統(tǒng)也是自由軟件和開放源代碼發(fā)展中著名的例子。嚴格來講,Linux這個詞本身只表示Linux內(nèi)核,但在實際上人們已經(jīng)習慣了用Linux來形容整個基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991 年的10 月5 日(這是次正式向外公布的時間)。以后借助于Internet 網(wǎng)絡,并經(jīng)過全世界各地計算機愛好者的共同努力下,現(xiàn)已成為今天世界上使用多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。
在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,我們就稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。這里需要注意的是所謂平臺,實際上包含兩個概念:體系結(jié)構(gòu)(Architecture)、操作系統(tǒng)(Operating System)。同一個體系結(jié)構(gòu)可以運行不同的操作系統(tǒng);同樣,同一個操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運行。舉例來說,我們常說的x86 Linux平臺實際上是Intel x86體系結(jié)構(gòu)和Linux for x86操作系統(tǒng)的統(tǒng)稱;而x86 WinNT平臺實際上是Intel x86體系結(jié)構(gòu)和Windows NT for x86操作系統(tǒng)的簡稱。要進行交叉編譯,我們需要在主機平臺上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然后用這個交叉編譯工具鏈編譯我們的源代碼,終生成可在目標平臺上運行的代碼。編譯順序如圖2所示。

搭建ARM交叉編譯器的步驟:(1)編譯安裝binutils;(2)安裝linux 的頭文件;(3)編譯安裝gcc的c 編譯器;(4)編譯安裝 glibc;(5)編譯安裝gcc的c、c++編譯器。
Boot-loader是RAM芯片的引導程序,它的作用是加載操作系統(tǒng)。兩個著名的開源Boot-loader,其中一個是U-boot,它的形式就是一個代碼包,包中按照Linux一般的編程習慣和不同的目標板,將相應的匯編和C語言代碼羅列在對應的文件夾下,讓開發(fā)人員自行配置。
修改U-boot的過程:(1)基本的硬件初始化;(2)跳轉(zhuǎn)到 Stage2 的 C 入口點;(3)定義函數(shù)Nand_init;(4)跳轉(zhuǎn)到Kernel。
Linux內(nèi)核就是一個可執(zhí)行的Linux操作系統(tǒng)的套件集合,簡稱內(nèi)核[3]。套件的選擇,就是內(nèi)核的配置。內(nèi)核的配置表明了內(nèi)核的可調(diào)整性。根據(jù)Linux軟件的開發(fā)規(guī)則,可到Linux內(nèi)核源碼包的路徑下,在終端使用配置命令進行內(nèi)核配置。在配置內(nèi)核的時候,需要定義內(nèi)核啟動的命令行。
3 LCU檢測系統(tǒng)應用程序
3.1 軟件設(shè)計及其要素
軟件的應用設(shè)計,就是確定軟件的各個部分及各部分之間的相互關(guān)系,信息在其中發(fā)送、傳遞和接收,以及部分運動發(fā)展的走向和趨勢,終得到可以預見的結(jié)果。
面向?qū)ο蟮能浖_發(fā),從不同的對待問題的層次出發(fā)能得到不同問題的解決方案。其基本工作流程如圖3所示。

3.2 定義基本的類和對象及人機界面的設(shè)計
在需求分析的說明中,常出現(xiàn)的三個名詞分別是觸點、測試和線圈。每個測試包含了不同的線圈,每個線圈又分別由觸點組成。所以,觸點、線圈和測試能夠分別抽象出來做成單獨的類。觸點必須有ID、常開/常閉的類型和運行中處于的值都應該在屬性中出現(xiàn)。
首先設(shè)計用二維數(shù)組來模擬測試與觸點的關(guān)系。假設(shè)數(shù)組的橫向和縱向表示分別為測試和觸點,則某個線圈的設(shè)計如圖4所示。

對照實際情況,可以使用二維數(shù)組進行描述。觸點的加入和刪除就是列的插入和刪除運算,測試的加入和刪除就是行的插入和刪除運算。對某線圈的實驗就是把每行遍歷一遍,結(jié)果對照預計值進行邏輯判斷。

直觀上看,重疊配置的線圈就像是檢查手冊的一封封頁面,測試整個系統(tǒng)的方法就是翻弄這本“書”,從頭至尾把所有的線圈遍歷一遍。
3.3 序列化存儲類serial和鏈表類
如果延續(xù)這樣的思路,則關(guān)于數(shù)組的操作會產(chǎn)生新的問題:C語言中定義數(shù)組必須先確定數(shù)組的大小才能分配合適的內(nèi)存。
由于文件是測試系統(tǒng)內(nèi)部調(diào)用的接口,應該先沿著采用文件來登記測試項目的結(jié)論進行分析。采用序列化技術(shù)能夠簡單而方便地實現(xiàn)文件存儲。序列化是指將對象實例的狀態(tài)存儲到可持久保持信息的物理設(shè)備的過程,其特點就是線性存儲。序列化技術(shù)實現(xiàn)了文件的存儲,同時它也給出了一種思路:把所有一切都統(tǒng)一對待,變成一根主線。如圖6所示。

但序列化只提供鏈型的存儲形式,只能用一維的鏈表模擬二維數(shù)組,因為不知道二維鏈表的指針應該如何安排。
決定采用鏈式聯(lián)系的方法:用指針來實現(xiàn)連接。但是指針的傳遞跨越了類,因此有必要把鏈式結(jié)構(gòu)直接抽象成類,產(chǎn)生定義觸點鏈表類、測試鏈表類和線圈鏈表類,并將它們抽象出一個基本的鏈表類,實現(xiàn)鏈表基本的操作,再從它派生出上述三個鏈表類。
3.4 計算預計值
測試隨意地更改其所包含的觸點,隨之變動的是測試的預計值。這可以采取人工輸入來實現(xiàn),但是如果用表達式字符串來表達測試的邏輯計算,可以通過字符替換的方法讓機器來實現(xiàn)。
表達式字符串中間必須有觸點的ID名字,常閉觸點的名字前加“~”,測試線路的“與”邏輯用字符“*”來表示,或邏輯用字符“|”來表示(也可以選擇其他的計算字符),用括號表示優(yōu)先的線路邏輯,空格是人性化的適應性定義。
計算預計值的算法如下:
?。?) 輸入目標字符串。
?。?) 首先去空格。
?。?) 用觸點的狀態(tài)值替換觸點ID,如果是FALSE,替換成F,如果是TRUE,替換成T。
?。?) 開始循環(huán): F*F 替換成F
F*T 替換成F
T*F 替換成F
T*T 替換成T
F|F 替換成F
F|T 替換成T
T|F 替換成T
T|T 替換成T
(T) 替換成T
?。‵) 替換成F
測量字符串長度,如果和上次相比變小,則重新開始循環(huán);如果沒有變化,則跳出循環(huán)進行下一步。
?。?) 判斷:如果字符串==T,則說明預計值是TRUE;如果字符串==F,則說明預計值是FALSE;如果字符串是其他值,說明輸入的表達式有誤,提示重新確定表達式。
3.5 數(shù)據(jù)壓縮
根據(jù)設(shè)計,直觀上可以定義觸點為一個這樣的類:內(nèi)容包括一個BOOL變量和一個指針。BOOL變量表示觸點的狀態(tài)值,指針指向下一個觸點的位置。但是這樣做會導致文件過于龐大,所以要進行數(shù)據(jù)的壓縮。
BOOL變量以位置0或置1來表明FALSE或TRUE的狀態(tài),但BOOL變量前面所有的位都沒有利用上。因此,可以把BOOL變量前面所有的位都用來表示觸點的狀態(tài),這就是壓縮的基本思想。
壓縮效率分析:因為布爾值通常定義為8位長度,現(xiàn)在只用1位來表示,所以壓縮的極限值應該可以達到8倍。這樣的壓縮比率下能夠有效地節(jié)約測試資料的存儲大小。
3.6 數(shù)據(jù)存儲方式考查
必須考慮數(shù)據(jù)的存儲方式,不同的存儲方式直接影響了位的操作。因此,在執(zhí)行位操作之前一定要明確存儲方式,小頭(Little-endian)模式對數(shù)據(jù)的存放方式是從低字節(jié)到高字節(jié),而大頭(Big-endian)模式對數(shù)據(jù)的存放方式是從高字節(jié)到低字節(jié)。
聯(lián)合體(union)的存放順序是所有成員都從低地址開始存放,整數(shù)定義通常占用4字節(jié)32位,char定義通常只占用1字節(jié)8位。一般認為,大頭模式的表達方式更符合生活中的數(shù)學思維習慣,所以不妨在小頭模式的平臺上做轉(zhuǎn)換工作,把表達方式換算成大頭模式。定義一個SWAP轉(zhuǎn)換工作宏,由它把對應字節(jié)調(diào)換位置(與互調(diào),中間兩個互調(diào))從而得到不同的模式。
本系統(tǒng)是基于Linux操作系統(tǒng)開發(fā)的通用LCU檢測軟件,具有通用性、便攜性和靈活性的特點。采用Linux操作系統(tǒng)平臺,能夠進一步降低成本。ARM嵌入式系統(tǒng)本身對于軟件和數(shù)據(jù)信息具有良好的保密措施,適合保存商業(yè)信息。本系統(tǒng)還采用了測試項目與程序分離的軟件模塊設(shè)計方案,使測試的種類大大增加,不管是同一種車型的測試項目變更,還是其他車型的測試,或者是更廣泛的一般性LCU系統(tǒng)的測試。
版權(quán)與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應用開發(fā)實踐指南2026/1/6 10:40:19
- 嵌入式實時操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計實踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識2025/7/14 16:59:04









