S19文件格式詳解


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。

  根據不同的描述信息,在以上三種不同的結束行中選擇一種使用

2EXAMPLE

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM