mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-30 02:00:30 +00:00
89 lines
2.1 KiB
C
89 lines
2.1 KiB
C
/****************************************uart_ymodem.h**************************************************/
|
|
|
|
#ifndef __YMODEM_H_
|
|
#define __YMODEM_H_
|
|
|
|
#if CONFIG_UART_SOCKET
|
|
|
|
#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
|
|
#endif //#if CONFIG_UART_SOCKET
|