前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你走进飞思卡尔Kinetis Flashloader (2)

带你走进飞思卡尔Kinetis Flashloader (2)

作者头像
用户1605515
发布2018-04-10 16:30:29
5630
发布2018-04-10 16:30:29
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿
这一节主要介绍下在主机和Kinetis Flashloader 之间的数据包传输协议,包括不同类型的包,带数据的命令包和不带数据的命令包。

Flashloader 协议

无数据命令

一个无数据的命令协议包括:

来自主机的命令包

发给主机的通用的响应命令包

整个过程如下图所示:

有输入数据的命令

有输入数据阶段的命令协议包括:

来自主机的命令包

发给主机的通用响应命令包

来自主机的输入数据包

发给主机的通用响应命令包

整个过程如下图所示:

带输出数据的命令

有输出数据阶段的命令协议包括:

来自主机的命令包

发给主机的读存储器响应命令包

发给主机的数据包

发给主机的通用响应命令包

整个过程如下图所示:

Flashloader 信息包类型

Ping包

主机发给目标机的第一个包就是Ping包,用来在一个选择的外设上 建立连接,对于UART外设来说,Ping 包用来决定波特率,Ping包必须在任何通信前发送,对于主机发送的Ping包,目标机会发送Ping响应包。整个过程如下:

Ping响应包

目标机(Kinetis Flashloader)在收到主机的Ping包后,会发送Ping响应包,如果是通过UART外设进行通信,目标机在发送Ping响应包回复主机的Ping包之前,会根据接收到的Ping包决定波特率。一旦主机接收到Ping响应包,则通信连接建立,主机开始发送命令到目标机。

Ping响应包格式如下:

帧报文包

报文包用来做流控制和错误检测,它也覆盖命令和数据包

报文包格式如下:

值得注意的一点是:有一个比较特殊的报文包,仅仅包含起始字节和打包类型字节,是用来在主机和目标机之间做同步用的。格式如下:

报文包打包类型主要有七种:

命令包

命令包携带一个32位的命令头和32位参数列表,命令头占四个字节,命令头后会跟由命令头域指定数量的参数个数,因为命令包有32字节,命令头占四个字节,所以最多有七个参数在命令包里。

目标机也使用命令包发送响应命令包给主机,正如前面所提到的,命令包和数据包都会嵌入在报文包里面传输。支持的命令如下所示:

支持的响应包括:

Flags: 每一个命令包包含一个标志字节,只有标志字节的位0被使用,如果位0被置1,则数据包将跟在命令后面。

ParameterCount : 命令包中的参数数量。

Parameter: 参数是32位字长,默认最大的包长度是32字节,其中头占四个字节,参数占28个字节,所以命令包可最大包含七个参数。

数据包

不管是主机发送数据给目标机还是目标机发送数据给主机,数据包仅仅携带数据,数据的传输方向由上一次主机发送的命令决定,数据包同样包含在报文包里面,以确保正确的包数据被接收。

响应包

响应包使用与命令包相同的格式包含在报文包中,响应的类型包括:

通用响应

获取属性响应

读存储器响应

未完待续,欢迎继续关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档