Xmodem接收的代码

这是一个用C语言实现的Xmodem协议接收程序,适用于Linux和Bootloader环境。程序包含Xmodem.h和Xmodem.c两个文件,定义了XModem的数据结构和状态机,用于自动接收和处理数据包。接收过程包括等待开始标志、接收包号、获取数据包、计算校验和等步骤,同时支持错误处理和重试机制。该程序在单片机环境中运行,使用中断驱动的串口驱动和FIFO缓冲区。
摘要由CSDN通过智能技术生成

    Xmodem的程序可以在linux或者各种Bootloader里找到.

    但是下面这个是我自己写的----2年多以前,我还没接触或"开源"的时候,想写一个自动升级程序的程序.当时主要的原因是没有烧录器,公司好几个人,就一台烧录器----感觉搬来搬去的太麻烦,效率很低,于是找了Xmodem的资料,就有了下面的程序.

 

--------Xmodem.h--------

 

#ifndef _XMODEM_H_
#define _XMODEM_H_

 

//Put Data Type Header Here
#include "types.h"//这里面定义了一些变量类型的别名,如U8=unsigned char等
//Put Xmodem send/receive function Header here
#include "hw_MCU.h"//这里面声明了RS_ready,RS_rx,RS_tx,分别是检测是否有在队列中的字符,接收一个字符,传送一个字符的函数,函数类型就不细说了,看下面的调用就知道了.

 

#define XMODEM_READY() RS_ready()
#define XMODEM_RX() RS_rx()
#define XMODEM_TX(c) RS_tx(c)

 

#define XMODEM_SOH (0x01)//这几个都是跟Xmodem协议有关的几个常数,如开始,结束,应答等等
#define XMODEM_EOT (0x04)
#define XMODEM_ACK (0x06)
#define XMODEM_NAK (0x15)
#define XMODEM_CAN (0x18)

#define XMODEM_PACKET_SIZE (128)
#define XMODEM_RETRY_TIME (10)

typedef struct XModem_Frame_s//这里根据Xmodem的协议定义了一个包的结构体
{
unsigned char header;
unsigned char packetnum[2];
unsigned char* pbuf;//packet[XMODEM_PACKET_SIZE];
}XModem_Frame_t;

typedef enum XMODEM_STATE//因为使用了状态机,所以就使用了枚举来定义了几个状态
{
e_XMODEM_ENTRY=0,
e_XMOD

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值