0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Y modem协议进行瑞萨RX MCU OTA数据传输

瑞萨嵌入式小百科 来源:瑞萨MCU小百科 2025-07-29 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、Y modem协议

X modem是较早的文件传输协议。Y modem是X modem的改良版,有传输快速稳定优势,通常所说的Y modem一般指YModem-1K。

bb2e3c28-6843-11f0-a6aa-92fbcf53809c.png

图1 Y modem协议帧

二者核心差异可概括为下表:

bb424bfa-6843-11f0-a6aa-92fbcf53809c.png

点击可查看大图

二、基于X modem的OTA代码修改

目前瑞萨官网提供的OTA代码基于X modem协议(例如r20an0640ej样例程序的System_BootLoader工程),改为Y modem协议需修改协议相关的传输逻辑、校验逻辑、帧处理逻辑等部分。

01握手信号调整

X modem握手:

通常接收方可能以简单ACK或特定字符(如有些实现中接收方发‘C’表示用CRC16校验)启动,逻辑相对简单。

Y modem握手:

必须由接收方发起YMODEM_C(字符‘C’,ASCII码0x43),发送方收到后才开始传输起始帧(含文件名、文件大)。

修改点:

新增函数void ymodem_send_c(void),用于发送Ymodem协议必需的0x43(‘C’)握手信号,通知发送方传输起始帧。

02起始帧结构与处理

X modem起始帧:

一般直接传输数据块,无文件信息。

Y modem起始帧:

需将文件名、文件大小放入起始帧(以SOH133字节长度帧传输,包号固定0x00,包号反码0xff)。

bb5b64fa-6843-11f0-a6aa-92fbcf53809c.png

图2 Y modem起始帧

修改点:

定义Y modem起始帧结构体ymodem_start_frame_t

修改帧校验函数uint8_t xmodem_check_frame (uint8_t* const p_xmodem_buff),增加对起始帧格式的校验逻辑。

03数据帧接收处理

X modem数据帧:

帧头为SOH(128字节块)或STX(部分衍生版1024字节块),现有代码帧头为SOH(128字节块)。

Y modem数据帧:

帧头以SOH(128字节信息块)、STX(1024字节信息块)区分,传输时需按规则填充数据。SOH帧如最后一包不足128字节时的填充0x1A处理,最后一帧长度仍为133字节;STX帧最后一包数据小于等于128字节以133字节帧长度发送,大于128字节小于等于1024字节,以1029长度帧发送,无效数据填充0x1A。

bb6cc7a4-6843-11f0-a6aa-92fbcf53809c.png

图3 Y modem数据帧

修改点:

修改uint8_txmodem_check_frame(uint8_t* const p_xmodem_buff),修改数据帧的接收处理。

04结束帧处理

X modem结束帧:

一般发送EOT(0x04)字符,接收方回ACK即结束。

Y modem结束帧:

采用SOH133字节空包(数据区、校验等填0x00)作为结束帧,需构建对应结束帧发送逻辑:

bb7e9efc-6843-11f0-a6aa-92fbcf53809c.png

图4 Y modem结束帧

修改点:

修改uint8_t xmodem_rx_frame (uint8_t* p_xmodem_buff),对结束帧进行判断,响应两次EOT,分别回复NACK和ACK。

05校验机制升级

X modem校验:

使用校验和或CRC16,目前X modem例程使用校验和。

Y modem校验:

Y modem强制规范使用CRC16校验,且计算范围明确为信息块数据(不含帧头、包号等)。需确保CRC16计算函数精准,修改原X modem可能存在的简易校验逻辑:

修改点:

新增static uint16_t CRC16_check (unsigned char *q,int len)函数,对数据进行CRC16校验。

移除Xmodem校验和逻辑,强制使用CRC16校验。

06数据缓冲区配置

X modem数据缓冲配置:

XModem数据包会被送入一个由buffer.c控制的缓冲区。该缓冲区为循环缓冲区,即当到达缓冲区末尾时,会回环至起始位置。由于数据帧接收的数组从132字节变成1029字节,RAM开销变大。

XModem例程里,每个packet132bytes(128数据+3header+1校验),代码中的XMODEM_FRAME_SIZE是132U。

Y modem数据缓冲配置:

YModem例程里,定义YMODEM_FRAME_SIZE_1024为1029U,YMODEM_FRAME_SIZE_128为133U。

定义环形存储的BUFFER_SIZE定义为1542,保持原有配置,数据的解析正常。

修改点:

可根据实际测试结果增加BUFFER_SIZE

07硬件驱动与配置适配

瑞萨RX系列需确保串口驱动适配Y modem的波特率、数据位、停止位等配置,可以使用smart configurator进行驱动配置(如常见的波特率 115200bps、8数据位、1停止位、无校验等)。

088多文件传输适配

若OTA需传输多个文件,需在代码中添加多文件遍历、逐个构建起始帧+数据帧+结束帧的逻辑。由于客户只要求传输单个文件,不涉及相关修改。

三、实测结果

01测试环境搭建

bb90dd10-6843-11f0-a6aa-92fbcf53809c.png

点击可查看大图

02功能测试

MCU执行bootloader升级程序,串口输出"Please start file send using YModem protocol...";

Teraterm选择Ymodem协议发送固件文件;

传输过程中通过Bus Hound抓取帧序列,验证:

起始帧(文件名/大小正确);

数据帧(1024字节块与CRC16校验正确);

结束帧(判定正确)。

升级完成后,MCU自动跳转至新固件,功能验证通过。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18646

    浏览量

    388299
  • 瑞萨
    +关注

    关注

    36

    文章

    22435

    浏览量

    89840
  • 串口
    +关注

    关注

    15

    文章

    1607

    浏览量

    82000
  • 代码
    +关注

    关注

    30

    文章

    4946

    浏览量

    73213
  • 文件传输协议

    关注

    0

    文章

    4

    浏览量

    975
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电子MCU无感OTA升级功能介绍

    在工业控制、电机驱动乃至物联网边缘节点中,固件在线升级(OTA)已成为产品生命周期管理的标配。然而传统OTA往往伴随停机、风险与低效。电子MCU
    的头像 发表于 05-15 14:36 1413次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>MCU</b>无感<b class='flag-5'>OTA</b>升级功能介绍

    UART协议数据传输格式是怎样的

    什么是UART协议?UART的工作原理是什么?UART协议数据传输格式是怎样的?
    发表于 11-02 08:14

    如何使用IrDa进行红外数据传输

    我们正在使用 IrDa 进行红外数据传输。但是在 LPC54018 的用户手册中没有提到 IrDa。请更新此控制器是否具有 IrDa 兼容性,否则我们如何进行此通信。在 LPC 1768 和 1788 中对 UART
    发表于 03-21 06:19

    DMA进行数据传输和CPU进行数据传输的疑问

    求大佬解答,本人正在学习STM32单片机中DMA直接数据存储部分的内容 看了DMA简介后,也上手过实例代码,但是没有实际的项目经验,所以有以下疑问: DMA外设在进行数据传输的操作,是否也是需要经过
    发表于 05-25 17:18

    数据传输的通信系统设计

    本文主要针对单片机在有线数据传输方面的应用,介绍了一种基于单片机MSP430 实现的MODEM数据传输系统。方案采用一个嵌入式的MODEM 作为系统
    发表于 06-13 13:38 21次下载

    基于短消息的OTA数据传输安全机制

    基于短消息的OTA数据传输安全机制 摘要:OTA技术的应用,使得移动通信不仅能够提供语音和数据服务,还能提供更便捷的增值服务。依靠基于短消息的OT
    发表于 05-23 15:13 22次下载

    Modem数据传输标准

     Modem数据传输标准 数据传输标准是指MODEM
    发表于 12-28 13:29 1278次阅读

    数据传输速率是什么意思

    数据传输速率是什么意思 数据传输速率是通过信道每秒可传输的数字信息量的量度。数据传输速率也称为吞吐率。数据传输速率由很
    发表于 03-18 14:45 5171次阅读

    tcp_ip 协议讲座:介绍数据传输

    介绍了tcp协议数据传输的问题(交互式数据传输,批量数据传输,流量控制,拥塞避免)
    的头像 发表于 07-03 11:05 4063次阅读
    tcp_ip <b class='flag-5'>协议</b>讲座:介绍<b class='flag-5'>数据传输</b>

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之
    的头像 发表于 11-15 17:23 1744次阅读

    DTU的多种协议,解锁数据传输的无限可能

    DTU,即数据传输单元,是一种在物联网(IoT)网络中常用的设备,主要用于在传感器和智能设备之间进行数据传输。DTU使用多种协议来实现这一目标,这些协议不仅提高了
    的头像 发表于 03-01 11:00 1743次阅读
    DTU的多种<b class='flag-5'>协议</b>,解锁<b class='flag-5'>数据传输</b>的无限可能

    PCIe数据传输协议详解

    、网卡和声卡等,以实现高效的数据传输。以下是对PCIe数据传输协议的介绍: 一、PCIe协议的基本概念 PCIe协议定义了一系列规范和要求,
    的头像 发表于 11-26 16:12 5628次阅读

    如何使用 HTTP 协议进行数据传输

    在互联网时代,数据传输是信息交换的基础。HTTP协议作为最常用的数据传输协议之一,支撑着全球数十亿用户的数据交互。 HTTP
    的头像 发表于 12-30 09:24 2190次阅读

    MPU数据传输协议详解

    在现代电子系统中,微控制器(MPU)扮演着核心角色,负责处理各种任务和数据。为了实现这些功能,MPU需要与其他设备进行数据交换。数据传输协议就是规定这些
    的头像 发表于 01-08 09:37 1448次阅读

    电子RX261/RX260 32位触摸控制MCU数据表与技术手册

    电子RX261/RX260 32位触摸控制MCU数据表与技术手册
    的头像 发表于 03-17 16:32 1159次阅读