国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的LCU測試系統(tǒng)的設(shè)計

基于ARM的LCU測試系統(tǒng)的設(shè)計

作者: 時間:2009-02-26 來源:網(wǎng)絡(luò) 收藏

隨著我國機車控制水平的不斷提高,微機控制已經(jīng)成為我國機車控制的重要控制方式,而邏輯控制單元(Logic Control Unit)作為主要完成機車運行邏輯控制、電路故障記錄控制等功能的控制模塊,是關(guān)系機車安全運行的重要部件。與傳統(tǒng)觸點控制電路相比,具有可靠性高、體積小、通用性好、維護簡單方便等優(yōu)點。
  傳統(tǒng)的檢測包括人力檢測、單片機檢測和PC機通過串口控制開發(fā)板檢測[1]。但是隨著LCU生產(chǎn)制造水平的提高,傳統(tǒng)的檢測方法已經(jīng)不能很好地完成測試任務(wù)。
  具有開發(fā)周期短、功耗低、性能優(yōu)越等特點,能夠滿足LCU檢測的要求。Linux操作系統(tǒng)開發(fā)的通用LCU檢測軟件,可以提供多層次、多場合的復(fù)用,可節(jié)省設(shè)備成本,具有巨大的市場前景和經(jīng)濟效益。
1 系統(tǒng)原理
  LCU檢測就是對LCU內(nèi)部運行邏輯做出測試并進行故障診斷。通過向被測試的LCU發(fā)出初始命令,并查看其輸出結(jié)果是否與參考輸出相同,從而判斷被測試的LCU邏輯是否正確。
  本文沿用傳統(tǒng)繼電器控制中的部分概念進行軟件分析。傳統(tǒng)硬件繼電器觸點分為“常開觸點”和“常閉觸點”兩類。一條線路的運行結(jié)果會反映到另外一個線圈上,因此,繼電器控制的輸出可以用線圈表示。本文沿用硬件繼電器中的名稱進行軟件邏輯分析。在程序中以BOOL變量TRUE表示觸點開狀態(tài),F(xiàn)ALSE表示觸點閉狀態(tài)。
  線路上的信號都可以采用二進制表達,所以測試的范圍會根據(jù)線路上觸點個數(shù)呈現(xiàn)指數(shù)增長。對于要求不太嚴格的控制信號,只要求在適當(dāng)?shù)臈l件下,得到開通或閉合的結(jié)果,其動作的條件為充分不必要條件。對于要求嚴格的控制信號,不僅要求在確定的條件下得到應(yīng)有的結(jié)果,而且要保證這個條件是充分必要條件。因此,很大程度上測試可能會遍歷觸點的所有組合,測試的總體消耗時間就會擴充到很大的時間范圍。假設(shè)一條線路的信號流動經(jīng)過時間值為ns, 則計算一條包含20個觸點的線路的全部測試時間為220ns。
  可見,測試情況的選擇十分重要。測試復(fù)雜性的主要矛盾在于:需要證明充分必要條件的線路的多少以及該線路的觸點的多少。工業(yè)標(biāo)準(zhǔn)反映在程序中的情況就是保留測試的選擇性,便于在后續(xù)工作中進行選擇和修改。此外,控制程序的算法,進行復(fù)合運算,提高測試的效率也是關(guān)鍵所在。本系統(tǒng)的硬件框圖如圖1所示。

本文引用地址:http://m.ptau.cn/article/152632.htm

2 操作系統(tǒng)移植
  交叉編譯器的設(shè)置是嵌入式系統(tǒng)開發(fā)的第一步。所謂交叉編譯就是在一種體系結(jié)構(gòu)的機器上編譯出能夠運行于另一種體系機器上的代碼。若要開發(fā)在目標(biāo)板上運行的程序,無論是操作系統(tǒng)還是應(yīng)用程序,都必須是體系指令的二進制代碼[2]。但是直接在ARM目標(biāo)板上開發(fā)程序,無論是程序運行速度還是調(diào)試手段,都嚴重制約了開發(fā)效率,有些程序的編寫更需要在PC機上才能完成。交叉編譯的作用,就在于在PC機上開發(fā)程序,交叉編譯后,再放置到ARM目標(biāo)板上去執(zhí)行。編譯順序如圖2所示。

搭建ARM交叉編譯器的步驟:(1)編譯安裝binutils;(2)安裝linux 的頭文件;(3)編譯安裝gcc的c 編譯器;(4)編譯安裝 glibc;(5)編譯安裝gcc的c、c++編譯器。
  Boot-loader是RAM芯片的引導(dǎo)程序,它的作用是加載操作系統(tǒng)。兩個著名的開源Boot-loader,其中一個是U-boot,它的形式就是一個代碼包,包中按照Linux一般的編程習(xí)慣和不同的目標(biāo)板,將相應(yīng)的匯編和C語言代碼羅列在對應(yīng)的文件夾下,讓開發(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)應(yīng)用程序
3.1 軟件及其要素
  軟件的應(yīng)用設(shè)計,就是確定軟件的各個部分及各部分之間的相互關(guān)系,信息在其中發(fā)送、傳遞和接收,以及部分運動發(fā)展的走向和趨勢,最終得到可以預(yù)見的結(jié)果[4]。它應(yīng)該遵循下面四個基本要素:名稱、問題、解決方案效果。
面向?qū)ο蟮能浖_發(fā),從不同的對待問題的層次出發(fā)能得到不同問題的解決方案。其基本工作流程如圖3所示。

3.2 定義基本的類和對象及人機界面的設(shè)計
  在需求分析的說明中,最常出現(xiàn)的三個名詞分別是觸點、測試和線圈。每個測試包含了不同的線圈,每個線圈又分別由觸點組成。所以,觸點、線圈和測試能夠分別抽象出來做成單獨的類。觸點必須有ID、常開/常閉的類型和運行中處于的值都應(yīng)該在屬性中出現(xiàn)。測試的ID應(yīng)該能夠區(qū)分是哪一次測試,并且記錄下所包含觸點的初始值以及標(biāo)準(zhǔn)情況下結(jié)果的預(yù)計值。線圈則以觸點和測試作為成員變量。
  首先設(shè)計用二維數(shù)組來模擬測試與觸點的關(guān)系。假設(shè)數(shù)組的橫向和縱向表示分別為測試和觸點,則某個線圈的設(shè)計如圖4所示。

對照實際情況,可以使用二維數(shù)組進行描述。觸點的加入和刪除就是列的插入和刪除運算,測試的加入和刪除就是行的插入和刪除運算。對某線圈的實驗就是把每行遍歷一遍,結(jié)果對照預(yù)計值進行邏輯判斷。但這僅僅是表達了單個線圈的情況,多個線圈則呈現(xiàn)如圖5所示的書頁式的結(jié)構(gòu)。

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

但序列化只提供鏈型的存儲形式,只能用一維的鏈表模擬二維數(shù)組,因為不知道二維鏈表的指針應(yīng)該如何安排。
  決定采用鏈?zhǔn)铰?lián)系的方法:用指針來實現(xiàn)連接。但是指針的傳遞跨越了類,因此有必要把鏈?zhǔn)浇Y(jié)構(gòu)直接抽象成類,產(chǎn)生定義觸點鏈表類、測試鏈表類和線圈鏈表類,并將它們抽象出一個基本的鏈表類,實現(xiàn)鏈表基本的操作,再從它派生出上述三個鏈表類。
3.4 計算預(yù)計值
  測試隨意地更改其所包含的觸點,隨之變動的是測試的預(yù)計值。這可以采取人工輸入來實現(xiàn),但是如果用表達式字符串來表達測試的邏輯計算,可以通過字符替換的方法讓機器來實現(xiàn)。
  表達式字符串中間必須有觸點的ID名字,常閉觸點的名字前加“~”,測試線路的“與”邏輯用字符“*”來表示,或邏輯用字符“|”來表示(也可以選擇其他的計算字符),用括號表示優(yōu)先的線路邏輯,空格是人性化的適應(yīng)性定義。這樣即可以表達出線路的邏輯。
  計算預(yù)計值的算法如下:
  (1) 輸入目標(biāo)字符串。
  (2) 首先去空格。
  (3) 用觸點的狀態(tài)值替換觸點ID,如果是FALSE,替換成F,如果是TRUE,替換成T。
  (4) 開始循環(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) 替換成F
  測量字符串長度,如果和上次相比變小,則重新開始循環(huán);如果沒有變化,則跳出循環(huán)進行下一步。
  (5) 判斷:如果字符串==T,則說明預(yù)計值是TRUE;如果字符串==F,則說明預(yù)計值是FALSE;如果字符串是其他值,說明輸入的表達式有誤,提示重新確定表達式。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉