Files
RCU_C1P_Module/NetLib/tftp_function.h
caocong cc8783e9f8 feat:新增TFTP IAP升级功能
修改事项:
1、新增TFTP IAP升级功能,只是代码移植完毕,没有测试使用
2、代码空间编译优化,零等待区域空间已满,而应用层代码已全部挪移到非零等待区域中,但还是会增加零等待区的空间占用。 待优化
2025-12-10 14:06:45 +08:00

104 lines
2.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* tftp_function.h
*
* Created on: Dec 6, 2025
* Author: cc
*/
#ifndef NETLIB_TFTP_FUNCTION_H_
#define NETLIB_TFTP_FUNCTION_H_
#include "ch564.h"
#include "eth_driver.h"
#include "net_config.h"
#include "debug.h"
#define TFTP_Destination_Port 69 //TFTP服务端口
#define TFTP_DTAT_Local_Port 65535 //TFTP 数据传输本地端口
#define TFTP_LOG_Local_Port 65500 //TFTP LOG传输本地端口
#define TFTP_DATA_LEN_MAX 517
#define TFTP_DATA_PKT_HDR_LEN 4 //TFTP数据包头长度
#define TFTP_ACK_PKT_LEN 4 //TFTP应答数据包长度
#define TFTP_IAP_Task_Timeout 30000 //TFTP IAP任务超时时间
#define TFTP_File_Name_Size 128 //TFTP传输文件名最大128Byte
#define TFTP_LOG_Exceed_Size 4096 //日志上报条件1 - 限定大小
#define TFTP_LOG_Exceed_Time 7200 //日志上报条件2 - 限定时间
#define TFTP_IAP_Start 0x01 //TFTP IAP升级开始
#define TFTP_IAP_Finish 0x02 //TFTP IAP升级完成
#define TFTP_IAP_Timeout 0x03 //TFTP IAP升级超时
#define TFTP_FUNTYPE_LocalIAP 0x01 //本地IAP升级(局域网升级)
#define TFTP_FUNTYPE_CloudIAP 0x02 //云端IAP升级(远程升级)
#define TFTP_FUNTYPE_LogUpload 0x03 //LOG上传
#define TFTP_IAP_DataType_APP 0x01 //IAP升级 - APP固件
#define TFTP_IAP_DataType_CONFIG 0x02 //IAP升级 - 配置文件
typedef enum {
TFTP_RRQ = 1,
TFTP_WRQ = 2,
TFTP_DATA = 3,
TFTP_ACK = 4,
TFTP_ERROR = 5,
TFTP_OPTION = 6,
}TFTP_OPCODE;
typedef struct
{
uint8_t IapFileType; //升级文件类型 就两种0是固件 1是配置
uint8_t enable; //TFTP 功能使能状态 0X01:使能0x00:没使能
uint8_t FunType; //升级类型 0x01:本地IAP升级0x02:云端IAP升级0x03:LOG日志上传
uint8_t NewIapFlag; //新升级流程标志位 - 2022-01-05
uint8_t IapErrFlag; //升级数据传输错误标志
uint8_t status; //状态机
uint8_t IapPercent; //升级占用的百分比
uint8_t FtpFileNameLen; //文件名长度
uint8_t FtpFileName[TFTP_File_Name_Size]; //文件名
uint8_t Md5[16]; //MD5值
uint16_t TFTP_Port;
uint16_t BlockSize; //块大小
uint16_t Write_Block; //写入块号
uint32_t FlashWriteAddress; //升级写入的地址
uint32_t TotalCount; //文件总大小
uint32_t WriteCount; //文件写入大小
uint32_t processing_tick; //处理时间戳
}IAPVarTypeStruct;
typedef struct
{
uint8_t op; /*WRQ */
uint8_t data[TFTP_DATA_LEN_MAX];
uint8_t to_ip[4];
uint8_t retry_num;
uint16_t data_len;
uint16_t to_port;
uint16_t block;
uint16_t tot_bytes;
uint32_t last_time;
}tftp_connection_args;
void Internal_TFTP_Task(void);
#endif /* NETLIB_TFTP_FUNCTION_H_ */