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字节。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/189997/