当前位置: 首页 > news >正文

STM32—OTA-YModem

目录

第1章 YModem协议

1.1 Ymodem协议简介

1.2 Ymodem协议帧格式

1.3 Ymodem协议传输过程

1.4 CRC16函数

1.5 Ymodem传输数据大小选择

第2章 程序的分散装载技术

2.1 Flash内存规划

2.2 程序执行流程


第1章 YModem协议

SecureCRT内部和Uboot内部都默认内嵌了Ymodem协议。

1.1 Ymodem协议简介

协议优点缺点适用场景
Xmodem极其简单,资源占用最小无法传输文件名和大小,检错能力弱 (Checksum)非常古老或资源极度受限的场景,现已很少用于IAP
Ymodem功能/资源/实现复杂度平衡,传输元数据,CRC校验速度不如Zmodem(停等协议),无内置安全机制最经典的串口IAP场景,资源受限的MCU
Zmodem速度快(流式传输,出错才重传),支持断点续传实现比Ymodem复杂,资源占用稍多对传输速度要求较高的场景

1.2 Ymodem协议帧格式

1.2.1 起始帧

1.2.2 数据帧

1.2.3 结束帧

1.3 Ymodem协议传输过程

1.4 CRC16函数

1.5 Ymodem传输数据大小选择

包头=SOH(0x01)时,帧长度是128bytes + 5bytes(包头+包号+包号取反+CRC16)。
同理,包头=STX(0x02)时,帧长度是1024bytes + 5bytes。
Ymodem协议的设计,有点像一个物流系统,可以选用不同尺寸的箱子来寄送货物。

SOH (0x01): 代表一个“小箱子”,能装 128 字节的货物。
STX (0x02): 代表一个“大箱子”,能装 1024 字节的货物。
在一次完整的“寄件”(文件传输)过程中,发送方和接收方可以协商决定主要使用哪种箱子。

灵活策略(混合使用大小箱子):
发送方可以根据每批“货物”(数据块)的多少,来动态选择用大箱子还是小箱子。比如,大部分时候用1024字节的STX大箱子,但最后一批货物只有80字节,就可以换成128字节的SOH小箱子来装,这样更节省空间(传输带宽)。这是完全符合YMODEM协议规范的。
简单策略(只用一种大箱子)- (我的代码目前采用的策略):
类比: 为了简化流程,物流公司决定,无论货物多少,一律使用1024字节的STX大箱子。如果货物装不满,就用填充物(比如泡沫或旧报纸)把箱子塞满。
 

第2章 程序的分散装载技术

2.1 Flash内存规划

2.2 程序执行流程


参考链接

http://www.dtcms.com/a/335857.html

相关文章:

  • Linux设备模型深度解析
  • RISC-V汇编新手入门
  • Java项目中短信的发送
  • 判断回文数的两种高效方法(附Python实现)
  • Webflux核心概念、适用场景分析【AI Chat类项目选型优势】
  • 数据链路层(2)
  • MySQL的事务基础概念:
  • 显式编程(Explicit Programming)
  • 深入解析函数指针及其数组、typedef关键字应用技巧
  • Go面试题及详细答案120题(21-40)
  • Pycharm Debug详解
  • C++ vector的使用
  • 自动驾驶中的传感器技术34——Lidar(9)
  • 前端项目练习-王者荣耀竞赛可视化大屏 -Vue纯前端静态页面项目
  • Springboot项目3种视图(JSP、Thymeleaf、Freemarker)演示
  • 图解直接插入排序C语言实现
  • 3.逻辑回归:从分类到正则化
  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
  • 矿物分类案列 (一)六种方法对数据的填充
  • C#WPF实战出真汁13--【营业查询】
  • 《设计模式》工厂方法模式
  • 数据结构与算法之 leetcode 98. 验证二叉搜索树 (前序,中序,后序遍历)
  • 影刀 RAP 迁移华为云备忘录数据到得到笔记
  • GitHub Copilot:AI编程助手的架构演进与真实世界影响
  • mac电脑开发嵌入式基于Clion(stm32CubeMX)
  • 深入了解linux系统—— 线程控制
  • IDE/去读懂STM32CubeMX 时钟配置图(有源/无源晶振、旁路/晶振模式、倍频/分频)
  • 三、k8s 1.29 之 安装2
  • 重温k8s基础概念知识系列三(工作负载)
  • 什么是GD库?PHP中7大类64个GD库函数用法详解