Motorola S-records(S19)解析模块

发布者:BlissfulBliss最新更新时间:2021-07-30 来源: eefocus关键字:Motorola 手机看文章 扫描二维码
随时随地手机看文章

飞思卡尔系列单片机程序编译后生成的是S-records格式的文件(.s19)。在实现远程升级的时候,不可避免的需要传输S-record记录(或其转码后的数据),然后根据里头的数据来更新程序。这就需要对ASCII码表示的S-record数据进行解析。


于是就写了这个模块,或说工具包可能更准确点。


顺便一提。我已基于官方的版本基本实现了自定协议的bootloader,改成了软方式进入bootloader而不是官方的使用引脚的方式。代码不准备放出来,但后面会写篇文章介绍下自定的协议,原理,以及实现时遇到的坑等。


下面上代码:


/*

*********************************************************************************************************

*

*

*                              Motorola S-records Support package

*                                        S-records 支持包

*

* File    : SRecord.h

* By      : Lin Shijun(http://blog.csdn.net/lin_strong)

* Date    : 2018/03/03

* Version : V1.0

* Note    : 1. This package provide the functions for converting between the S-record and the 

*                corresponding string.

*              这个包提供了S-record与字符串间的转换函数

*           2. The package supposed the letter in the string in upper case. user should make

*                sure for that.

*              工具包默认字符串中的字母都是大写的,用户需要保证这件事。

*           3. the first thing to do with this package is to check the TYPE DEFINE.

*              用这个包的第一步是检测下定义的类型对不对 

*

* the follow description of Motorola S-records Format is from 

*    http://www.amelek.gda.pl/avr/uisp/srecord.htm

* chinese version: http://blog.csdn.net/lin_strong/article/details/78521950

*

* NAME

*   srec - S-record file and record format

* DESCRIPTION

*

*   An S-record file consists of a sequence of specially formatted ASCII character strings. An S-record 

* will be less than or equal to 78 bytes in length.

*

*   The order of S-records within a file is of no significance and no particular order may be assumed.

*

*   The general format of an S-record follows:

*

*   +-------------------//------------------//-----------------------+

*   | type | count | address  |            data           | checksum |

*   +-------------------//------------------//-----------------------+

*

*   type -- A char[2] field. These characters describe the type of record (S0, S1, S2, S3, S5, S7, S8, or S9).

*

*   count -- A char[2] field. These characters when paired and interpreted as a hexadecimal value, display the 

* count of remaining character pairs in the record.

*

*   address -- A char[4,6, or 8] field. These characters grouped and interpreted as a hexadecimal value, display 

* the address at which the data field is to be loaded into memory. The length of the field depends on the number

* of bytes necessary to hold the address. A 2-byte address uses 4 characters, a 3-byte address uses 6 characters,

* and a 4-byte address uses 8 characters.

*

*   data -- A char [0-64] field. These characters when paired and interpreted as hexadecimal values represent 

* the memory loadable data or descriptive information.

*

*   checksum -- A char[2] field. These characters when paired and interpreted as a hexadecimal value display the

* least significant byte of the ones complement of the sum of the byte values represented by the pairs of 

* characters making up the count, the address, and the data fields.

*

*   Each record is terminated with a line feed. If any additional or different record terminator(s) or delay 

* characters are needed during transmission to the target system it is the responsibility of the transmitting 

* program to provide them.

*

*   S0 Record. The type of record is 'S0' (0x5330). The address field is unused and will be filled with zeros 

* (0x0000). The header information within the data field is divided into the following subfields.

*   

*     mname is char[20] and is the module name.

*     ver is char[2] and is the version number.

*     rev is char[2] and is the revision number.

*     description is char[0-36] and is a text comment.

*

*     Each of the subfields is composed of ASCII bytes whose associated characters, when paired, represent one 

* byte hexadecimal values in the case of the version and revision numbers, or represent the hexadecimal values 

* of the ASCII characters comprising the module name and description.

*

*   S1 Record. The type of record field is 'S1' (0x5331). The address field is intrepreted as a 2-byte address.

* The data field is composed of memory loadable data.

*

*   S2 Record. The type of record field is 'S2' (0x5332). The address field is intrepreted as a 3-byte address. 

* The data field is composed of memory loadable data.

*

*   S3 Record. The type of record field is 'S3' (0x5333). The address field is intrepreted as a 4-byte address. 

* The data field is composed of memory loadable data.

*

*   S5 Record. The type of record field is 'S5' (0x5335). The address field is intrepreted as a 2-byte value and 

* contains the count of S1, S2, and S3 records previously transmitted. There is no data field.

*

*   S7 Record. The type of record field is 'S7' (0x5337). The address field contains the starting execution 

* address and is intrepreted as 4-byte address. There is no data field.

*

*   S8 Record. The type of record field is 'S8' (0x5338). The address field contains the starting execution 

* address and is intrepreted as 3-byte address. There is no data field.

*

*   S9 Record. The type of record field is 'S9' (0x5339). The address field contains the starting execution 

* address and is intrepreted as 2-byte address. There is no data field.

*

* EXAMPLE

*

*   Shown below is a typical S-record format file.

*

*     S00600004844521B

*     S1130000285F245F2212226A000424290008237C2A

*     S11300100002000800082629001853812341001813

*     S113002041E900084E42234300182342000824A952

*     S107003000144ED492

*     S5030004F8

*     S9030000FC

*

*   The file consists of one S0 record, four S1 records, one S5 record and an S9 record.


*   The S0 record is comprised as follows:


*     S0 S-record type S0, indicating it is a header record.

*     06 Hexadecimal 06 (decimal 6), indicating that six character pairs (or ASCII bytes) follow.

*     00 00 Four character 2-byte address field, zeroes in this example.

*     48 44 52 ASCII H, D, and R - "HDR".

*     1B The checksum.

*

*   The first S1 record is comprised as follows:

*

*     S1 S-record type S1, indicating it is a data record to be loaded at a 2-byte address.

*     13 Hexadecimal 13 (decimal 19), indicating that nineteen character pairs, representing a 2 byte address,

*  16 bytes of binary data, and a 1 byte checksum, follow.

*     00 00 Four character 2-byte address field; hexidecimal address 0x0000, where the data which follows is 

*  to be loaded.

*     28 5F 24 5F 22 12 22 6A 00 04 24 29 00 08 23 7C Sixteen character pairs representing the actual binary

*  data.

*     2A The checksum.

*

*   The second and third S1 records each contain 0x13 (19) character pairs and are ended with checksums of 

* 13 and 52, respectively. The fourth S1 record contains 07 character pairs and has a checksum of 92.

*

*   The S5 record is comprised as follows:

*

*     S5 S-record type S5, indicating it is a count record indicating the number of S1 records

*     03 Hexadecimal 03 (decimal 3), indicating that three character pairs follow.

*     00 04 Hexadecimal 0004 (decimal 4), indicating that there are four data records previous to this record.

*     F8 The checksum.

*

*   The S9 record is comprised as follows:

*

*     S9 S-record type S9, indicating it is a termination record.

*     03 Hexadecimal 03 (decimal 3), indicating that three character pairs follow.

*     00 00 The address field, hexadecimal 0 (decimal 0) indicating the starting execution address.

*     FC The checksum.

*

*********************************************************************************************************

*/


#ifndef SRECORD_H 

#define SRECORD_H


/*

*********************************************************************************************************

*                                      INCLUDE

*********************************************************************************************************

*/


#include


/*

*********************************************************************************************************

*                                      TYPE DEFINE

*********************************************************************************************************

*/


typedef unsigned char INT8U;

typedef unsigned long INT32U;


/*

*********************************************************************************************************

*                                      CONSTANT

*********************************************************************************************************

[1] [2] [3]
关键字:Motorola 引用地址:Motorola S-records(S19)解析模块

上一篇:MC9S12XEP100 SPI模块 驱动程序
下一篇:基于uCOS-II的任务池/线程池 模块

推荐阅读最新更新时间:2024-11-08 13:44

1300万像素 摩托罗拉旗舰新机Dinara曝光
      来自外媒的最新消息,摩托罗拉又有一款代号为“Dinara”的Android手机浮出水面。这款旗舰机型将会拥有720P高清触控屏和1300万像素摄像头,预计在今年冬季问世。       外形设计上,Dinara会拥有更大尺寸的触控屏,搭载TI德州仪器的OMAP双核处理器芯片,而该处理器最引人关注的地方就是图形处理器,采用了PowerVR SGX540图形核心。       Dinara将运行Android 2.3操作系统,配备的是1300万像素摄像头,支持自动聚焦以及1080P全高清视频录制功能。       摩托罗拉还为该机配备1GB的RAM,并且支持基于LTE技术的4G网络,同时为了在4G高速网络中实
[手机便携]
万物均可联名:摩托罗拉Razr 5G将推万宝龙特别版
摩托罗拉 Razr(刀锋) 5G 国行版本此前已经发布,现在摩托罗拉计划宣布与万宝龙(Montblanc)打造一款联名版本。 万宝龙是德国奢侈品制造商,这家总部位于汉堡的公司生产许多产品,包括钢笔,手表,耳机等。 联想在其官方网站上列出了摩托罗拉 Razr 5G 万宝龙特别版,但除了零售包装盒的图像外,没有透露任何细节。盒子很大,上面有摩托罗拉和万宝龙的徽标。Razr 5G 的普通版价格为 12,499 元,预计联名版本的售价会更高。 Razr 5G 采用 6.2 英寸柔性 AMOLED 显示屏,分辨率为 876 x 2142。手机外部有一个较小的显示屏,尺寸为 2.7 英寸。内部搭载 8GB RAM 和 256GB
[手机便携]
Motorola新一代机顶盒平台选用科胜讯先进半导体系统解决方案
  宽频通讯与数字化家庭半导体解决方案全球领导厂商科胜讯系统公司 (Conexant Systems Inc.) 日前宣布 Motorola 公司已经在新一代机顶盒平台之一选 用科胜讯先进多媒体处理器与高度整合网络处理器产品。    科胜讯将提供 Motorola 改善现有机顶盒产品中处理能力的技术, Motorola 也将 在新一代机顶盒产品中采用科胜讯的芯片,希望带给消费者更具弹性且更有吸引力 的娱乐体验。   “ 网络与媒体处理技术的融合目前正推动能够让消费者在数字家庭网络中管理 并控制多种不同设备的创新解决方案发展,”科胜讯首席营运长暨宽频媒体处理事 业部执行副总裁兼总经理 Lewis Brewster 指出,“我们相当高
[新品]
欧盟对摩托罗拉反垄断调查 被指是谷歌缓兵之计
    欧盟宣布正式启动对摩托罗拉移动公司的反垄断调查,这一调查是否意味着苹果、微软和谷歌三大巨头在欧洲战场的专利争夺战进入白热化?     据经济之声报道,欧盟委员会发表声明说,收到苹果和微软两家公司的投诉,指控摩托罗拉移动滥用专利,拒绝以合理价格向竞争对手进行专利授权,影响了公平的市场竞争。欧盟受理这一投诉,并将对摩托罗拉展开两起调查。摩托罗拉公司漫天要价是何居心?这一调查是否意味着苹果、微软和谷歌三大巨头在欧洲战场的专利争夺战进入白热化?     业内估算,摩托罗拉移动对相关专利的要价高达41美元。而欧盟接受苹果和微软的指控展开调查,离它批准谷歌对摩托罗拉移动125亿美元的天价收购仅仅一个月时间。     原多普达公司ceo
[手机便携]
执法工作者的福音:摩托罗拉VR能帮多少忙?
摩托罗拉 解决方案(Motorola Solutions,后面简称摩托罗拉)希望通过一个虚拟现实头显实现一个全新的未来。这项技术将会引领高科技警务执法的新时代,在外行人看来,这简直就像科幻小说的情节一样。摩托罗拉在本周二举行的APCO大会上让用户体验了这款新头显,它在不久后将会被警方用于行动辅助。在佩戴上这款头显之后,身处远程指挥部的专家和警官将能通过无人机的视角鸟瞰某个人员密集的特定区域,找出其中的可疑人员。    他们也可以通过地面执勤警员随身佩戴的 摄像头 看到他们的视角。头显的佩戴者只要转动自己的头部就能环顾警员所处的区域,就像真的身处现场一样。    这款 VR头显 在各种使用情况下都能提升警察的工作速度和效
[嵌入式]
摩托罗拉移动再诉苹果侵权:涉及Siri等服务
    北京时间8月18日上午消息,谷歌旗下的摩托罗拉移动表示,已对苹果提起了新的专利侵权诉讼。诉讼称,苹果的Siri语音助理服务等品侵犯了摩托罗拉移动的专利。 摩托罗拉移动向美国国际贸易委员会(ITC)提起了这一诉讼,称苹果品侵犯了该公司的7项专利。诉讼涉及的苹果品包括位置提醒服务、电子邮件通知服务和手机视频播放器等。摩托罗拉移动请求在美国禁止进口iPhone、iPad和Mac电脑。苹果品主要在亚洲生。 摩托罗拉移动在一封电子邮件声明中表示:“我们希望就这些专利权纠纷达成和解,但苹果不愿进行授权合作。我们别无选择,只能保卫我们自己和工程师的创新。” 自2010年以来,摩托罗拉移动和苹果之间就发生了专利权纠
[手机便携]
摩托罗拉机顶盒业务将出售:或达数十亿美元
    北京时间12月11日早间消息,英国电视解码器制造商Pace周一宣布,已经与谷歌展开初期谈判,计划收购该公司旗下的摩托罗拉家庭业务(Motorola Home)。该业务主要生产电视机顶盒。分析人士预计,这笔交易的规模可达数十亿美元。   Pace在声明中说:“与谷歌的谈判还处于初级阶段,目前还不确定能否达成协议。”   路透社援引知情人士的话称,谷歌已经收到了针对摩托罗拉家庭业务的多份收购要约,包括上周五由多家私募股权投资公司发出的要约。   谷歌今年5月斥资125亿美元收购摩托罗拉移动,将机顶盒业务一同纳入麾下。这起收购主要是为了获得摩托罗拉移动庞大的专利组合。   自从收购摩托罗拉移动以来,谷歌一直在改组该公司亏损的手机部
[手机便携]
摩托罗拉移动的美国梦:自由定制2天发货
    导语:国外媒体周三发表题目为“摩托罗拉移动的美国梦:自由定制、2天发货、德州制造”(Motorola's American Dream: unbridled customization, two-day shipping and one big Texas factory)的文章称,在短短5个月的时间内,摩托罗拉移动就将占地45.5万平方英尺的诺基亚(5.95, 0.29, 5.12%)旧工厂就从一座空旷闲置的建筑物变成一个繁忙的制造中心,每周生产近10万部Moto X。   以下为文章内容摘要:   让摩托罗拉移动没有想到的是:本来已经率先确定了德州Fort Worth工厂落成典礼仪式的日期,但苹果(467.54, -2
[手机便携]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved