我正在開發可以測試大量電線(高達360)的嵌入式系統 - 本質上是一個連續性檢查系統。該系統通過計時測試矢量並從另一端讀取輸出來工作。然後將輸出與存儲的結果(其將在SD卡上)進行比較,該結果告訴輸出應該是。測試向量只是一個走路的,所以不需要將它們存儲在任何地方。的方法將是一個有點像如下:在嵌入式系統中存儲大整數/值
- 時鐘輸出測試矢量(步行的)
- 閱讀輸出測試向量。
- 從SD卡中讀取相應的輸出測試向量,它告訴輸出向量應該是什麼。
- 比較步驟2和步驟3的測試向量。
- 記下單獨陣列中的錯誤/錯誤。
- 繼續回到步驟1,除非檢查所有導線。
- 將錯誤/故障輸出到LCD。
我的硬件由一個大的移位寄存器組成,這個寄存器的時鐘輸入到AVR微控制器。對於每個測試向量(也將是360位),我將需要讀取360位。因此,對於360線,總數據量將是360 * 360 = 16kB左右。我已經知道我不能一次完成這個任務(即讀取整個數據然後進行比較),所以它必須是測試向量的測試向量。
由於沒有固有的類型可以容納這麼大的數字,我打算使用長度爲360位的位數組。 現在,我的問題是,我應該如何將這個位數組存儲在一個txt文件中?
一種方法是存儲原始值,即每行存儲我從移位寄存器讀入的原始二進制數據。所以,對於8根電線,它將是0b10011010。但是,這可能會導致360線以上的醜 - 每行將包含360個字節。
另一種方法是存儲十六進制值 - 這對於8位(上述爲9A)僅爲兩個字符,360位爲約90個字符。但是,這將要求我逐行讀入文本 - 並以某種方式將十六進制值轉換爲在位數組中表示。
那麼這種問題最好的解決方案是什麼?我需要的解決方案是完全「確定性」 - 我不能有malloc或這樣的調用。從我讀過的內容來看,它們在嵌入式系統中是一個不容忽視的問題。
內容
我需要存儲不能由任何傳統的變量類型來表示大的值。目前我打算將這些值存儲在一個有點陣列中。將這些值存儲在SD卡上的文本文件中的最佳方式是什麼?
爲什麼要將二進制數據作爲文本存儲在第一位?沒有可移植性或可讀性要求。例如有什麼問題? '的fwrite(數組,的sizeof(陣列),文件)'? – 2011-12-26 04:11:59
如果我錯了,請糾正我:您需要從SD讀取測試樣本,將其輸出,重新輸入時鐘並將結果與初始樣本進行比較?另外,你將如何生成一個測試向量(一個存儲在你的SD卡上)?原因是,如果您有一組固定的測試數據,將數據存儲在程序存儲器中的簡單數組中可能會更容易。 – 2011-12-26 06:02:12
您希望在輸入中同時有多少個「1」位?如果預期的輸入是稀疏的,則只需存儲'1'位的*位*。 – wildplasser 2011-12-26 12:10:53