STDF 是個很有趣的檔案格式,它常用在儲存 ATE 的測試資料。
對於寫 C code 的人來說,可以很簡單的用 fread + structure 的方式無腦 parsing。
它的 Hex 資料如上圖,這裡只框出前 5 筆 record。
每一筆 record 都帶有 4 個 byte 的 header,前兩個 byte 是 REC_LEN,後面兩個 byte,一個是 REC_TYP,另一個是 REC_SUB,header 後面就是帶有 REC_LEN 長度的資料。
一個橘色框框的是一筆 record,淺藍色的就是 REC_LEN,深藍色的是 REC_TYP + REC_SUB,沒有底線的就是該筆 record 的資料組成。
我們可以由 REC_TYP + REC_SUB 得知 record 的種類。
Spec 中也很貼心的用 C code 表達不同資料的解碼方式以及等於 C type 的變數宣告。
我們以第一筆 FAR record 為例,CPU_TYPE 欄位 = 0x02,屬於 IBM PC 的處理器,故其大於 1 byte 資料的順序為 Little Endian,比如說 REC_LEN 在解碼時,就必須反過來看。
隨便使用 STDF parser 當關鍵字在 github 搜尋就有 3 頁的程式碼可以參考,各類程式語言應有盡有,挑自己喜歡的來使用即可。
就像前面說的,C code 跟這種檔案格式很搭,故要快速得到一個結果,找 C code 的專案就對了。