S19文件格式詳解
S-record格式文件是Freescale CodeWarrior編譯器生成的后綴名為.S19的程序文件,是一段直接燒寫進MCU的ASCII碼,英文全稱問Motorola format for EEPROM programming。
上面“是一段直接燒寫進MCU的ASCII碼”,這樣說可能會誤導初學者,因為並不是直接將ASCII碼寫進MCU,寫進MCU前還要對S19文件進行一個解析,把有用的機器代碼分解出來,然后再進行寫入,寫入的也不是ASCII而是二進制碼。網上有
關S-record格式文件的資料很少,經過我的收集和實驗,整理出以下文檔,方便大家對Freescale單片機做深入了解。
1、格式定義及含義
S-record每行最大是78個字節,156個字符
S-record format
type |
count |
address |
data |
checksum |
type(類型):2個字符。用來描述記錄的類型 (S0,S1,S2,S3,S5,S7,S8,S9)。
count(計數):2個字符。 用來組成和說明了一個16進制的值,顯示了在記錄中剩余成對字符的計數。
address(地址):4或6或8個字節。用來組成和說明了一個16進制的值,顯示了數據應該裝載的地址, 這部分的長度取決於載入地址的字節數。2個字節的地址占用4個字符,3個字節的地址占用6個字符,4個字節的地址占用8個字符。
data(數據):0—64字符。用來組成和說明一個代表了內存載入數據或者描述信息的16進制的值。
checksum(校驗和):2個字符。這些字符當被配對並換算成16進制數據的時候形成了一個最低有效字符節,該字符節用來表達作為補充數據,地址和數據庫的字符對所代表的(字節的)補碼的byte總和。即計數值、地址場和數據場的若干字符以兩個字符為一對,
將它們相加求和,和的溢出部分不計,只保留最低兩位字符NN,checksum =0xFF-0xNN。
S0 Record:記錄類型是“S0” (0x5330)。地址場沒有被用,用零置位(0x0000)。數據場中的信息被划分為以下四個子域:
name(名稱):20個字符,用來編碼單元名稱
ver(版本):2個字符,用來編碼版本號
rev(修訂版本):2個字符,用來編碼修訂版本號
description(描述):0-36個字符,用來編碼文本注釋
此行表示程序的開始,不需燒入memory。
S1 Record:記錄類型是“S1” (0x5331)。地址場由2個字節地址來說明。數據場由可載入的數據組成。
S2 Record:記錄類型是“S2” (0x5332)。地址場由3個字節地址來說明。數據場由可載入的數據組成。
S3 Record:記錄類型是“S3” (0x5333)。地址場由4個字節地址來說明。數據場由可載入的數據組成。
S5 Record:記錄類型是“S5” (0x5335)。地址場由2字節的值說明,包含了先前傳輸的S1、S2、S3記錄的計數。沒有數據場。
S7 Record:記錄類型是“S7” (0x5337)。地址場由4字節的地址說明,包含了開始執行地址。沒有數據場。此行表示程序的結束,不需燒入memory。
S8 Record:記錄類型是“S8” (0x5338)。地址場由3字節的地址說明,包含了開始執行地址。沒有數據場。此行表示程序的結束,不需燒入memory。
S9 Record:記錄類型是“S9” (0x5339)。地址場由2字節的地址說明,包含了開始執行地址。沒有數據場。此行表示程序的結束,不需燒入memory。
根據不同的描述信息,在以上三種不同的結束行中選擇一種使用
2、EXAMPLE
2.1 example I
S19文件首行: S021000036384B50524F47202020313143524541544544204259204541535936384B6D
首行翻譯信息: S0 0000 6 8 K P R O G 1 1 C R E A T E D B Y E A S Y 6 8 K
色塊圖例:module name version number revision number checksum
checksum的算法:
0x21+0x00+0x00+0x36+0x38+0x4B+0x50+0x52+0x4F+0x47+0x20+0x20+0x20+0x31+0x31+0x43+0x52+0x45+0x41+0x54+0x45+0x44+0x20+0x42+0x59+0x20+0x45+0x41+0x53+0x59+0x36+0x38+0x4B=0x792
checksum=0xFF-0x92=6D
注意:EASy68K總是用S8 record作為結束行。
2.2 example II
S123C000CF1400790011CC09395B105A124A8046304A8000300001C01BCB73140007340027
色塊圖例:type count address data checksum
2.3 example III
S224308000C61E877C1516C6197B151ACE04C07E15187A153EC74A90F9301D026A01C6017BF0
色塊圖例:type count address data checksum
3、另附Freescale HCS12DP256B 16位單片機空程序S19文件:
S0520000453A5C576F6F64795C4C6561726E696E675C50726F6772616D6D655C42444DD2FDB5BCB3CCD0F25C44556D795C447032 35365C62696E5C48435331325F53657269616C5F4D6F6E69746F722E6162735A
S123C000CF1100790011CC09395B105A124A8004304A8000300000C01BC01F00000000001B
S104C020001B
S105FFFEC0003D
S22430800010EF20FEFEC017FDC015270E35ED31EC3169700434FB310326F2FEC019EC31274F
S2113080200BED31180A30700434F920F10AE7
S804000000FB
大家可以嘗試理解一下。
轉自:https://wenku.baidu.com/view/ffa121d749649b6648d7472e.html