RTL8710_SDK_GCC_VERSION/component/common/utilities/uart_ymodem.h
RtlduinoMan 1d3357d3b0 GCC SDK RTL8710 basic version (including the window platform cygwin installation and Ubuntu platform Linux Installation routines),
including cross compilation of the installation, compile, link, run, debug, and so on.
SDK implementation of the function:
1, WiFi connection settings (including AP mode and STA mode).
2, peripheral resource control (including GPIO, SPI, UART, IIC, etc.).
3, the user uses the sample method.
2016-09-08 20:52:17 +08:00

86 lines
2.1 KiB
C

/****************************************uart_ymodem.h**************************************************/
#ifndef __YMODEM_H_
#define __YMODEM_H_
#include "osdep_api.h"
#include "serial_api.h"
#include "flash_api.h"
#include "device_lock.h"
/***********************************************************************
* Macros *
***********************************************************************/
// 8711AM
#define UART_TX PA_7
#define UART_RX PA_6
//8711AF
//#define UART_TX PA_4
//#define UART_RX PA_0
#define UART_BAUDRATE 115200
#define UART_YMODEM_TASK_PRIORITY 5
#define UART_YMODEM_TASK_DEPTH 512
#define CONFIG_CALC_FILE_SIZE 1
#define CRC_CHECK 1
#define AUTO_REBOOT 0
#define DUMP_DATA 0
#define OFFSET_DATA FLASH_SYSTEM_DATA_ADDR
#define IMAGE_TWO (0x80000)
//Y-modem related
#define MODEM_MAX_RETRIES 1
#define MODEM_CRC_RETRIES 51
#define MODEM_CAN_COUNT 3
#define MODEM_EOT_COUNT 1
// ymodem protocol definition
#define MODEM_SOH 0x01
#define MODEM_STX 0x02
#define MODEM_EOT 0x04
#define MODEM_ACK 0x06
#define MODEM_NAK 0x15
#define MODEM_CAN 0x18
#define MODEM_C 0x43
// 1 block size byte + 2 block number bytes + 1024 data body + 2 crc bytes
#define RCV_BUF_SIZE ((1)+(2)+(1024)+(2))
/******************************** data struct **********************************/
typedef struct _uart_ymodem_t
{
serial_t sobj;
flash_t flash;
/* Used for UART RX */
u8 uart_rcv_buf[RCV_BUF_SIZE];
u8 uart_irq_buf[RCV_BUF_SIZE];
_Sema uart_rx_sema;
u32 image_address;
u32 tick_last_update;
u32 tick_current;
u32 uart_recv_index;
u32 uart_recv_buf_index;
/* uart ymodem related*/
u32 modemtype;
u32 crc_mode;
u32 nxt_num; //next block num
u32 cur_num; //current block num
u32 len;
u32 rec_err; //blcok data recv status
u32 filelen; //Ymodem file length
u8 *buf; //data buf
u8 *filename; //file name
}uart_ymodem_t;
#ifdef __cplusplus
extern "C"{
#endif
extern int uart_ymodem(void);
#ifdef __cplusplus
}
#endif
#endif