S 文件格式详解
- 格式:pdf
- 大小:167.91 KB
- 文档页数:4
【摘录】汇编⽂件后缀.s与.S⼀、⼤⼩写后缀的区别.s 汇编语⾔源程序;汇编.S 汇编语⾔源程序;预处理,汇编⼩写的s⽂件,在后期阶段不在进⾏预处理操作,所以我们不能在这⾥⾯写预处理的语句在⾥⾯⼤写的S⽂件,还会进⾏预处理、汇编等操作,所以我们可以在这⾥⾯加⼊预处理的命令⼆、编译的相关流程预处理(Pre-Processing)-->编译(Compiling)-->汇编(Assembling)-->链接(Linking)1、预处理器根据以字符#开头的命令(directives),修改原始的C程序这个阶段并不会去检查代码的错误,只会把#的语句转成C代码[gan@localhost gcc]# gcc E hello.c o hello.i2、编译阶段在这个阶段中,Gcc⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作,在检查⽆误后,Gcc把代码翻译成汇编语⾔。
⽤户可以使⽤”-S”选项来进⾏查看,该选项只进⾏编译⽽不进⾏汇编,⽣成汇编代码。
汇编语⾔是⾮常有⽤的,它为不同⾼级语⾔不同编译器提供了通⽤的语⾔。
如:C编译器和Fortran编译器产⽣的输出⽂件⽤的都是⼀样的汇编语⾔。
[gan@localhost gcc]# gcc S hello.i o hello.s(3)汇编阶段汇编阶段是把编译阶段⽣成的”.s”⽂件转成⽬标⽂件,读者在此可使⽤选项”-c”就可看到汇编代码已转化为”.o”的⼆进制⽬标代码了。
如下所⽰:[gan@localhost gcc]# gcc c hello.s(⼩写s) o hello.o(4)链接阶段将库函数(头⽂件中⽤到的)等链接到⽬标⽂件中在成功编译之后,就进⼊了链接阶段。
在这⾥涉及到⼀个重要的概念:函数库"stdio.h"中也只有该函数的声明,⽽没有定义函数的实现,那么,是在哪⾥实现”printf”这些库函数的呢?最后的答案是:系统把这些函数实现都被做到名为libc.so.6的库⽂件中去了,在没有特别指定时,gcc会到系统默认的搜索路径”/usr/lib”下进⾏查找,也就是链接到libc.so.6库函数中去,这样就能实现函数”printf” 了,⽽这也就是链接的作⽤。
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 formattype(类型):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)。
S19文件格式详解1. 概述为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的格式(ASCII格式)编码成s格式文件。
S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,S 格式文件是Freescale推荐使用的标准文件传送格式。
编译完成之后,Freescale CodeWarrior编译器将在bin文件夹下自动生成“*.abs.s19”文件,这个文件包含最终下载带单片机中的所有内容。
是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming 2. 格式定义及含义S-record每行最大是78个字节,156个字符S格式文件中的每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和5个部分组成。
S格式文件中的每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和5个部分组成。
S-record format:记录类型 / 记录长度 / 存储地址 / (代码/数据) / 校验和Type count address data checksumtype(类型):2个字符。
用来描述记录的类型 (S0,S1,S2,S3,S5,S7,S8,S9)。
count(计数):2个字符。
用来组成和说明了一个16进制的值,显示了在记录中剩余成对字符的计数。
2个字符(即1个字节),显示在记录中剩余的字节数。
即记录长度 = 存储地址字节数 + 代码/数据字节数 + 校验和字节数address(地址):2或3或4个字节。
用来组成和说明了一个16进制的值,显示了数据应该装载的地址,这部分的长度取决于载入地址的字节数。
2个字节的地址占用4个字符,3个字节的地址占用6个字符,4个字节的地址占用8个字符。
data(数据):0—64字符。
//============================================ ============================//TITLE:// S-Record格式详解//AUTHOR:// norains//DATE:// Friday 25-April-2008//Environment:// NULL//=============================================== =========================一个完整的MOTOROLA S-Record格式数据包含如下区域:<type> <length> <address> <data> <checksum>各字段的意思分别如下:。
它可以有如下数值:S0”, “S1”, <type>:标示记录的类型,该字段占据1-byte““S2”, “S3”, “S5”, “S7”, “S8” , “S9”“S0” -- 记录描述信息“S1”, “S2”, “S3” -- 记录存储的数据。
这三者的区别在于地址(address)的长度不同,S1为2-byte,S2为3-byte,以及S3为4-byte。
包含了S1”, “S2”, “S3”的信息。
“S5” -- ““S7”, “S8”, “S9” -- 确定程序的开始地址。
这三者的区别也在于地址(address)的长度不同,S9为2-byte,S8为3-byte,以及S7为4-byte。
<length>:标示了数据的长度,确切地说,是<address>, <data> 和<checksum>这三个字段的byte的个数。
该字段占据1-byte。
<address>:标示了数据写入的起始地址。
该字段的长度取决于<type>的取值。
辩论赛计时软件从 3.0 开始支持 PDS (Pub lic D ebate Sche dule)文件,用户通过编写或修改P DS 文件,可以自由制定赛制。
3.1 版本使用P DS v2赛制模板文件。
P DS文件可以用Win dows自带的“记事本”打开编辑(其他的文本编辑软件也可以)。
注意:P DS文件是 Unic ode 编码。
【注】新用户最好先查看已有的“赛制模板”,在模板的基础上进行修改,再另存为新的PDS文件,以免出错。
P DS文件详细格式如下: (1)文件开头第一行必须为:[PD S赛制模板v2](这个模板的名字,可以随便起名)(2) 从第二行开始,每一行文字代表一个辩论的计时阶段,一直到某一行写着[END]字样的那一行结束。
(3)[END]独占一行。
视为计时阶段的结束标志。
(4) [EN D]下面的那一行是一个哈希校验码,普通用户可以不必理会。
该校验码是用来判断[EN D]之前的文字是否被修改过,软件以此来区分读取的P DS文件是“原始标准模板”还是“用户自定义”。
无论是哪种情况,软件的计时是一样的。
软件只是用“用户自定义”这个标志来提醒用户,确保被修改过的PDS文件是正确的。
(5)[HASH]校验码下面的文字可以随便写,那些只是P DS文件附带的说明。
下面详细解释辩论的每一个计时阶段如何编写。
【格式】(阶段名称)___(在正方显示的名称)___(在反方显示的名称)___计时控制代码它们之间以“___”(三个下划线)作为分割符。
前三项(阶段名称)、(在正方显示的名称)、(在反方显示的名称)的内容可以随意写,比如写成“张三”、“李四”都可以,这样运行时就显示“张三”、“李四”。
Cortex-M3 .s文启动文件分析1. 基本概念(CMSIS): Cortex Micro-controller Software Interface Standard,微控制器软件接口标准。
2. CMSIS标准的文件结构:a) core_cm.c (stdint.h)b) system_.c (core_cm, system_)c) startup_.s其中core_cm.c以及core_cm中为内核设访问层,其中定义了定义了内核中得外设几丁质以及一些内核的访问及控制函数。
startup_.s文件是系统的启动文件,其包括堆和栈的初始化配置、中断向量表的配置以及将程序引导到main()函数等功能。
system_和system_.c文件则是由ARM公司提供模版,各芯片制造商根据自己芯片的特点来编写的。
3. 注解startup_.s文件此文件主要完成三项工作:堆栈以及堆的初始化、定位中断向量表、调用Reset Handlera) 堆栈以及堆的初始化; Stack Configuration; Stack Size (in Bytes) ;;Stack_Size EQU 0x00000200AREA STACK, NOINIT, READWRITE, ALIGN=3 //指明8字节对齐(ALIGN=3)Stack_Mem SPACE Stack_Size__initial_sp //此标号有一层隐含的意思那就是在M3中堆栈是满递减堆栈,//因为它指定了堆栈指针位于堆栈的高地址(在//Stack_Mem之后); Heap Configuration; Heap Size (in Bytes) ;;Heap_Size EQU 0x00000000AREA HEAP, NOINIT, READWRITE, ALIGN=3__heap_baseHeap_Mem SPACE Heap_Size__heap_limit以上堆和栈的具体地址可以在工程编译后产生的*.map 文件中看到。
斯托夫文件格式,是一种文件格式,可以使用斯托夫文件格式分析器来打开和分析。
这种分析器运用特征码判断法,通过收集大量的文件格式特征码,在分析文件时将其与保存在数据库里的特征码进行匹配,最后按照可能性高低列出匹配结果。
使用斯托夫文件格式分析器的步骤如下:首先,下载并打开“斯托夫文件格式分析器”软件;然后,进入软件界面,打开未知格式的文件;此时,软件会自动分析文件格式,并按照几率大小排列。
如果知道文件的格式但不知道用什么程序打开,也可以利用这款软件进行分析。
此外,该软件支持Win7/Win8/Win10等操作系统。
IGES格式解析原文链接IGES文件由五或六段组成:(1)标志(FLAG)段;(2)开始(START)段;(3)全局(GLOBAL)段;(4)元素索引(DIRECTORY ENTRY)段;(5)参数数据(PARAMTER DATA)段;(6)结束(TERMINATE)段。
其中,标志段仅出现在二进制或压缩的ASCII文件格式中。
一个IGES文件可以包含任意类型、任意数量的元素,每个元素在元素索引段和参数数据段各有一项,索引项提供了一个索引以及包含一些数据的描述性属性;参数数据项提供了特定元素的定义。
元素索引段中的每一项格式是固定的,参数数据段的每一项是与元素有关的,不同的元素其参数数据项的格式和长度也不同。
每个元素的索引项和参数数据项通过双向指针联系在一起。
文件每行80个字符。
每段若干行,每行的第1~ 72个字符为该段的内容;第73个字符为该段的段码;第74~80个字符为该段每行的序号。
段码是这样规定的:字符“B”或“C”表示标志段;“S”表示开始段;“G”表示全局段;“D”表示元素索引段;“P”表示参数数据段;“T”表示结束段。
1 开始段(Start Section)文件开始段可供人阅读的有关该文件的一些前言性质的说明。
在第1~72列上可以写入任何的内容的ASCII码字符。
一个开始段例子如下:1 72 73 80This section is a human readable prologue to the file. S0000001It can contain an arbitrary number of lines S00000021 72 73 80using ASCII characters in columns 1-72 S000000N 图6.7 ASCII码的IGES开始段的格式2 全局段(Global Section)文件的全局段包含由前置处理器写入、后置处理器处理该文件所需的信息。
ssa 格式解析SSA格式解析SSA(SubStation Alpha)是一种用于字幕显示的文本格式。
它是一种简单但功能强大的格式,常用于制作电影、动漫和电视剧的字幕。
在本文中,我们将解析SSA格式,深入了解其结构和常用标记的含义。
SSA格式的文件通常以.ssa或.ass为文件扩展名。
它由多个部分组成,每个部分都有特定的功能和语法。
下面是SSA格式的几个主要部分:1. [Script Info]:在这个部分,我们可以指定脚本的信息和选项。
例如,我们可以设置脚本的标题、作者、字体设置和整体样式等。
2. [V4+ Styles]:这是定义字幕风格的部分。
我们可以为不同的角色或情境定义不同的字幕样式。
在这个部分中,我们可以设置字幕的字体、字号、颜色、描边和阴影等效果。
3. [Events]:这个部分是字幕的具体内容。
每个字幕事件包含起始时间、结束时间和对应的文本。
我们可以使用一些标记来控制字幕的显示时长、位置和效果。
在SSA格式中,有几个常用的标记:- Dialogue:用于定义普通的对话字幕。
它指定了字幕的起始时间、结束时间和显示位置。
我们可以将文本进行换行和分页以适应屏幕显示。
- Comment:用于添加注释或解释。
注释文本不会在屏幕上显示,但是可以帮助字幕编辑者记录相关信息。
- Picture:用于插入图片或特殊效果。
例如,我们可以在字幕中插入表情符号或其他图形。
- Sound:用于添加声音效果。
这个标记可以指定播放音频文件的起始时间和结束时间。
SSA格式还支持其他更高级的功能,如特效动画、字幕渐变和音频合成等。
这些功能使得SSA格式成为一种广泛应用于字幕制作的格式。
总结一下,SSA格式是一种用于字幕显示的文本格式,具有简单易懂的语法和强大的功能。
通过解析SSA格式,我们可以深入了解其结构和常用标记的含义,从而更好地理解和应用于字幕制作。
S19文件格式详解
1.概述
为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印的格式(ASCII格式)编码成s格式文件。
S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,S格式文件是Freescale推荐使用的标准文件传送格式。
编译完成之后,Freescale CodeWarrior编译器将在bin文件夹下自动生成“*.abs.s19”文件,这个文件包含最终下载带单片机中的所有内容。
是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EEPROM programming。
2.格式定义及含义
S-record每行最大是78个字节,156个字符。
S格式文件中的每一行称为一个S记录,每个S记录由记录类型、记录长度、存储地址、代码/数据、校验和5个部分组成。
每字节数据被编码成2个16进制字符,第一个字符代表数据的高四位,第二个字符代表数据的低4位。
5个部分具体内容如下:
记录类型/ 记录长度/ 存储地址/ (代码/数据) / 校验和
记录类型:
2个字符(即1个字节),用来描述记录的类型。
记录供定义了8种类型:
S0:S格式文件的第一个记录,表示文件名(含路径),存储地址部分没有使用,以0000置位。
此记录表示记录的开始,无需下载到MCU。
S1: 地址长度为2字节(4个字符)的记录。
记录类型是“S1”(0x5331)。
地址场由2个字节地址来说明。
数据场由可载入的数据组成。
S2: 地址长度为3字节的记录。
记录类型是“S2”(0x5332)。
地址场由3个字节地址来说
明。
数据场由可载入的数据组成。
S3:地址长度为4字节的记录。
记录类型是“S3”(0x5333)。
地址场由4个字节地址来说明。
数据场由可载入的数据组成。
S5: 标记本文件的S1、S2、S3记录的个数(此记录不是一个S文件所必须的)。
记录类型是“S5”(0x5335)。
地址场由2字节的值说明,包含了先前传输的S1、S2、S3记录的计数。
没有数据场。
只有S1、S2、S3、S5需要写入到FLASH中。
S7: 地址长度为4字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU。
记录类型是“S7”(0x5337)。
地址场由4字节的地址说明,包含了开始执行地址。
没有数据场。
此行表示程序的结束,不需烧入memory。
S8: 地址长度为3字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU。
记录类型是“S8”(0x5338)。
地址场由3字节的地址说明,包含了开始执行地址。
没有数据场。
此行表示程序的结束,不需烧入memory。
S9:地址长度为2字节,表示程序的开始执行地址,代码/数据部分没有被使用,此行表示程序的结束,无需下载到MCU。
记录类型是“S9”(0x5339)。
地址场由2字节的地址说明,包含了开始执行地址。
没有数据场。
此行表示程序的结束,不需烧入memory。
记录长度:
2个字符(即1个字节),显示在记录中剩余的字节数。
即
记录长度= 存储地址字节数+ 代码/数据字节数+ 校验和字节数
存储地址:
2或3或4个字节(由记录类型决定),用来表示代码/数据应该装载的起始地址。
这部分的长度取决于载入地址的字节数。
2个字节的地址占用4个字符,3个字节的地址占用6个字符,4个字节的地址占用8个字符。
代码/数据:
0-64字符(即0-32字节),表示需要下载到MCU中的数据。
校验和:
2个字符(即1字节),校验数据,计算方法:
校验和= 0Xff –(记录长度+ 存储地址+ 代码/数据)
注意,为校验和不是字符的校验和,而是实际二进制数的校验和。
这些字符当被配对并换算成16进制数据的时候形成了一个最低有效字符节,该字符节用来表达作为补充数据,地址和数据库的字符对所代表的(字节的)补码的byte总和。
即计数值、地址场和数据场的若干字符以两个字符为一对,将它们相加求和,和的溢出部分不计,只保留最低两位字符NN,checksum =0xFF-0xNN。
3.实例:
S01F0000443A5C50726F6A6563745F335C62696E5C50726F6A6563742E61627371 第一行:S0,表示S19文件格式开始;1F为剩余字节数;0000无用;443A5C50726F6A6563745F335C62696E5C50726F6A6563742E616273
为D:\Project_3\bin\Project_3.abs.的ASCII码;71为校验和.
S123C000CF2100C6055B134A800BFE4A8000FE0000C015C03100000000000000 0000000092
第二行:S1,表示本条记录存储地址长度为2字节;23(注意为16进制)剩余字节数,C000,表示起始地址,92表示校验和。
即,本行表示将CF2100C6055B134A800BFE4A8000FE0000C015C0310000000000000000000000依次下载到从地址C000开始的一段连续地址中。
S218FE8020F2FEC013EC31270BED31180A30700434F920F10A0B
第三行:S2,表示本条记录存储地址长度为3字节,18(16进制数)表示剩余字节数,FE8020表示起始地址,0B为校验和。
S9030000FC
校验和的计算:以S2记录为例,
校验和= 0xFF –(0xFE + 0×80 + 0×20 + 0Xf2 + …+ 0x0A)。
在用Freescale CodeWarrior调试FLASH擦除和写入时需注意以下几点:
1)已写入过的FLASH地址需要在擦除后才能再次写入。
2)在内存监视窗口有时无法看到是否正确写入和擦除,可用指针从地址处读出数据检查是
否正确擦除及写入。
3)在BDM模式下,用自己写的FLASH下载代码通过串口导入s19文件后,将导致芯片
锁定,若不解锁(Unsecure),无法再次通过BDM或者串口下载s19文件。
但当芯片脱离BDM独立运行时未发现此问题。
注: 软件版本;CW for S12(X) 5.0,芯片型号:MC9S12XDP512。