SREC
編輯摩托羅拉S-record是一種文件格式,由摩托羅拉在20世紀70年代中期創建,以ASCII文本形式傳達二進制信息的十六進制值。這種文件格式也可能被稱為SRECORD、SREC、S19、S28、S37。它通常用于對微控制器、EPROM、EEPROM和其他類型的可編程邏輯器件中的閃存進行編程。在一個典型的應用中,編譯器或匯編器將程序的源代碼(如C或匯編語言)轉換為機器代碼,并以HEX文件的形式輸出。然后,程序員導入HEX文件,并將機器代碼燒入非易失性存儲器,或將其轉移到目標系統中進行加載和執行。
概述
編輯歷史
S-記錄格式是在1970年代中期為摩托羅拉6800處理器創建的。用于該處理器和其他嵌入式處理器的軟件開發工具將產生S-記錄格式的可執行代碼和數據。然后,PROM編程器將讀取S-Record格式,并將數據燒入嵌入式系統中使用的PROM或EPROM。
其他十六進制格式
還有其他具有類似目的的ASCII碼。BPNF、BHLF和B10F是早期的二進制格式,但它們既不緊湊也不靈活。十六進制格式更加緊湊,因為它們每個字符代表4位,而不是1位。許多格式,如S-record,更加靈活,因為它們包括地址信息,所以它們可以只指定PROM的一部分。英特爾HEX格式經常與英特爾處理器一起使用。TekHex是另一種十六進制格式,可以包括一個符號表,用于調試。
格式
編輯記錄結構
一個SREC格式文件由一系列ASCII文本記錄組成。記錄從左到右有以下結構。
- 記錄開始-每條記錄以大寫的S字符(ASCII0x53)開始,代表記錄的開始。
- 記錄類型-一個單一的數字,0到9,定義了記錄的類型。
- 字節數-兩個十六進制數字,代表記錄的其余部分(地址+數據+校驗)的字節數(十六進制數字對)。這個字段的最小值是16位地址字段加1個校驗字節的3,xxx值是255(0xFF)。
- 地址-四位/六位/八位十六進制數字,由記錄類型決定。地址字節以big-endian格式排列。
- 數據-一串2n個十六進制數字,代表n個字節的數據。對于S1/S2/S3記錄,每條記錄最多32個字節是典型的,因為它將適合于80個字符寬的終端屏幕,盡管16個字節將使視覺上更容易解碼特定地址的每個字節。
- 校驗和-兩個十六進制數字,是字節數、地址和數據字段的兩個十六進制數字對所代表的數值之和的最不顯著字節。詳細的校驗示例請參見示例部分。
文本行終結符
SREC記錄由一個或多個ASCII行終結符隔開,以便每個記錄出現在單獨的文本行中。這通過視覺上劃分記錄來提高可讀性,它還提供了記錄之間的填充,可用于提高機器解析的效率。創建HEX記錄的程序通常使用符合其操作系統慣例的行終止字符。例如,Linux程序使用單個LF字符(換行,ASCII字符值為0x0A)字符來終止行,而Windows程序使用CR字符(回車,ASCII字符值為0x0D),然后再使用LF字符。
記錄類型
下表描述了10種可能的S記錄。s4是保留的,目前沒有定義。s6最初是保留的,但后來被重新定義。
記錄順序
盡管一些Unix文檔指出,文件中S記錄的順序并不重要,不需要假定特定的順序,但大多數軟件實際上對SREC記錄進行排序。典型的記錄順序是從一個(有時是可選的)S0頭記錄開始,然后是一個或多個S1/S2/S3數據記錄序列,可能還有一個可選的S5/S6計數記錄,最后是適當的S7/S8/S9終止記錄。
限制
編輯記錄長度-Unix手冊頁文檔指出。一個S-記錄文件由一串特殊格式的ASCII字符串組成。一個S-記錄的長度將小于或等于78字節。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/189997/