一、S19文件格式基礎概念
S19是一種十六進位文件格式,用於在微處理器上載入程序和數據。與其他十六進位格式相比,S19文件的優點在於可以從中提取程序和數據的信息,以及為微處理器提供準確的代碼和數據。
S19文件的格式非常簡單:每行開頭都是”S”或”D”,後跟2位位元組數,然後是地址,最後是數據。在S19文件中,數據記錄包含地址和數據。此外,還有許多其他記錄類型,例如開始(S0)和結束(S8、S9)等記錄類型,也包含在文件中。記錄類型字母后的數字表示記錄佔用的位元組數。例如,S0表示16個位元組,S3表示32個位元組。
下面是一個S19文件的樣例,來自Microchip公司的PIC26F S19格式文件示例:
S00F000068656C6C6F20576F726C6400FF S114000022002180009008480008008C5404F S1070000010040F9 S9030000FC
上面的樣例是包含3個記錄類型的S19文件,以”S0″記錄開頭,以”S9″記錄結尾。
二、S19文件格式的記錄類型
S19文件格式有多種記錄類型。下面是一些常用的記錄類型:
1. S0記錄類型
S0記錄類型用於指示文件開始的一個標頭記錄。它包括16個位元組、2位長度、2位地址和12位文件製造商的標識符。這些數據用於驗證文件完整性,並加以保護。
2. S1、S2、S3記錄類型
S1、S2和S3記錄類型是S19文件格式中最常用的三個記錄類型。它們分別代表位元組數為16位、24位和32位的代碼段。其中,S1行記錄包含16位地址和16位數據,S2記錄包含24位地址和24位數據,S3記錄包含32位地址和32位數據。
3. S5和S7記錄類型
S5和S7記錄類型用於指示代碼段的出現。這兩條命令的唯一區別在於地址長度:S5記錄類型使用24位地址,而S7記錄類型使用32位地址。每個記錄都包含16位長度、地址和數據信息。
4. S8和S9記錄類型
S8和S9記錄類型用於標識代碼段的結束。S8記錄類型包含16位地址,而S9記錄類型包含32位地址。每個記錄都包括16個位元組的二進位數據。
三、S19文件格式的製作方法
接下來我們介紹一種使用Keil C51編譯器生成S19文件的方法。首先,你需要在Keil C51編譯器中打開你的程序。然後,在菜單欄中選擇「Options for Target」,進入選項設置界面。
在選項設置界面中,選擇「Output」,然後將「Output File Format」設置為「Intel Hex-80(.hex)」。這將使Keil C51編譯器生成一個標準的Intel HEX文件,其中包含16位的地址和8位的數據。
接下來,你需要使用一個稱為「hex2s19」的工具將Intel HEX文件轉換為S19文件。該工具可以在http://www.mkeps.com/hex2s19.html上下載。
使用該工具時,只需指定輸入文件和輸出文件,然後運行工具即可。輸出文件將是一個S19格式的文本文件,其中包含所有16位元組的記錄類型以及開始和結束記錄。你可以使用你喜歡的任何文本編輯器打開該文件並查看其中的數據。如下圖所示:
S00F000068656C6C6F20576F726C6400FF S114000022002180009008480008008C5404F S1070000010040F9 S9030000FC
四、S19文件格式的讀取方法
在微處理器上執行S19文件的步驟如下:
1. 打開S19文件
首先,你需要在程序中打開S19文件。在大多數情況下,你可以使用文件打開API來打開文件,並將其保存在內存中。
2. 讀取S19文件記錄類型
接下來,你應該讀取S19文件的記錄類型。這可以通過讀取文件中的第一行來實現。
3. 解析記錄類型並執行操作
一旦讀取了記錄類型,接下來的工作就是檢查記錄類型並執行相應的操作。例如,如果記錄類型是”S1″,則你需要讀取地址和數據,並將它們寫入微處理器內存。
4. 重複步驟2和3,直到文件結束
最後,你需要重複步驟2和3,直到讀取整個S19文件並將程序和數據載入到微處理器內存中為止。
總結
在本文中,我們詳細介紹了S19文件格式。我們看到,S19文件格式非常簡單,但它已被廣泛用於載入程序和數據到微處理器上。如果你正在開發嵌入式系統,那麼S19文件格式是不可或缺的一部分。
原創文章,作者:AYAAJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334947.html