moved libs to the lib directory

This commit is contained in:
2025-11-13 18:40:06 +03:00
parent 4d1f7fdbe9
commit b80ad585da
634 changed files with 3 additions and 2 deletions

270
lib/x502/lboot_req.h Normal file
View File

@ -0,0 +1,270 @@
/***************************************************************************//**
@file lcspec.h
Файл содержит константы и типы, которые использует как загрузчик lboot,
так и приложение:
- константы и типы для запроса на перепрошивку со стороны application
- константы и типы для определения информации о прошивке, которая хранится
внутри прошивки и проверяется bootloader'ом
!!Файл должен быть один (или одинаковый) для обоих проектов!!
@date 16.11.2010
@author: Borisov Alexey <borisov@lcard.ru>
******************************************************************************/
#ifndef LBOOT_REQ_H_
#define LBOOT_REQ_H_
/** адрес, по которому должен быть сформирован запрос на перепрошивку */
#define LBOOT_REQ_ADDR 0x10000000
/** Адрес, начиная с кторого хранится информация о загрузчике */
#define LBOOT_INFO_ADDR 0x200
/******************* размеры полей ***************************************/
#define LBOOT_DEVNAME_SIZE 32
#define LBOOT_SERIAL_SIZE 32
#define LBOOT_SOFTVER_SIZE 32
#define LBOOT_REVISION_SIZE 16
#define LBOOT_IMPLEMENTATION_SIZE 16
#define LBOOT_SPECINFO_SIZE 64
#define LBOOT_MAC_ADDR_SIZE 6
#define LBOOT_REQ_MAX_FILENAME_SIZE 256
#define LBOOT_REQ_MAX_SIZE 4096
/** различные коды режимов загрузки */
#define LBOOT_BOOTMODE_MODBUS_RTU 0x100
#define LBOOT_BOOTMODE_TFTP_CLIENT 0x200
#define LBOOT_BOOTMODE_TFTP_SERVER 0x201
#define LBOOT_BOOTMODE_USB 0x300
#define LBOOT_BOOTMODE_CAN_LSS 0x400
#define LBOOT_BOOTMODE_TFTP LBOOT_BOOTMODE_TFTP_CLIENT
//режим работы устройства (application/bootloader) - в modbus сразу за device info
#define LBOOT_MODE_BOOT 0x1
#define LBOOT_MODE_APPL 0x2
#define LBOOT_TFTP_FLAGS_PACKED 0x2
#define LBOOT_SEED_CODE_NOSIGN 0xFFAA5500
/** признак, находящийся в информации о прошивке, по которому можно узнать
наличие этой информации. Признак означает, что поддерживается защита этой
информации CRC */
#define LBOOT_INFO_SIGNATURE 0x4C42A55A
/** общие для всех интерфейсов флаги, определяющие поведение загрузчика */
typedef enum {
/** - при активном запросе прошивки (tftp) - признак,
что перезависывется резервная копия, а не основная прошивка
- при пассивном приеме (mbrtu, usb, can_lss) - признак,
что разрешено перезаписывать резервную копию */
LBOOT_REQ_FLAGS_RECOVERY_WR = 0x01,
/** признак, что не нужно сверять имя устройства в прошивке */
LBOOT_REQ_FLAGS_DONT_CHECK_NAME = 0x02,
/** не проверять, что записывается стабильная прошивка (установлен флаг
#LBOOT_APP_FLAGS_STABLE в информации о прошивке)*/
LBOOT_REQ_FLAGS_DONT_CHECK_STABLE = 0x04,
/** разрешение записывать прошивку для разработчика (с установленным флагом
#LBOOT_APP_FLAGS_DEVELOP в информации о прошивке)*/
LBOOT_REQ_FLAGS_ENABLE_DEVELOP = 0x08,
/** разрешение записи прошивки без подписи (если поддерживается загрузчиком) */
LBOOT_REQ_FLAGS_ENABLE_NO_SIGN = 0x10
} t_lboot_req_flags;
/** флаги из #t_app_info */
typedef enum {
/** признак, что прошивка стабильная */
LBOOT_APP_FLAGS_STABLE = 0x1,
/** признак, что это прошивка для разработчиков */
LBOOT_APP_FLAGS_DEVELOP = 0x2
} t_lboot_app_flags;
#pragma pack(1)
/** Информация о программе, содержащаяся в прошивке */
struct st_app_info {
uint32_t size; /**< размер информции о прошивке */
uint32_t flags; /**< флаги */
/** название устройства, для которого предназначена прошивка*/
char devname[LBOOT_DEVNAME_SIZE];
};
typedef struct st_app_info t_app_info;
/** Информация о загрузчике, находящаяся непосредственно
в коде самого загрузчика */
struct lboot_info_st {
/** версия загрузчика (младший байт - минорная, старший - мажорная) */
uint16_t ver;
uint16_t flags; /**< флаги - резерв */
/** серийный номер устройства */
char serial[LBOOT_SERIAL_SIZE];
uint8_t mac[6]; /**< mac-адрес устройства */
/** ревизия платы (если вшита в загрузчик)*/
char brd_revision[LBOOT_REVISION_SIZE];
/** модификация (если вшита в загрузчик)*/
char brd_impl[LBOOT_IMPLEMENTATION_SIZE];
char creation_date[18]; /**< дата создания загрузчика */
/** признак, что эта структура действительна (только с v1.3) */
uint32_t sign;
/** размер структуры (включая два байта crc)
- для определения положения crc */
uint32_t size;
char devname[LBOOT_DEVNAME_SIZE];
/** поддерживаемые возможности загрузчика */
uint32_t features;
uint32_t reserv;
uint8_t ip_addr[4]; /**< ip-адрес устройства по-умолчанию */
uint8_t ip_mask[4]; /**< маска устройства по-умолчанию */
uint8_t gate[4]; /**< адрес шлюза по-умолчанию */
/** crc (но при проверке следует брать ее не отсюда,
а по адресу = адрес начала структуры + size - 2) */
uint16_t crc;
};
typedef struct lboot_info_st t_lboot_info;
/** информация о устройстве и прошивке */
struct lboot_devinfo_st {
char devname[LBOOT_DEVNAME_SIZE]; /**< название устройства */
char serial[LBOOT_SERIAL_SIZE]; /**< серийный номер */
char soft_ver[LBOOT_SOFTVER_SIZE]; /**< версия прошивки */
char brd_revision[LBOOT_REVISION_SIZE]; /**< ревизия платы */
char brd_impl[LBOOT_IMPLEMENTATION_SIZE]; /**< опции платы */
char spec_info[LBOOT_SPECINFO_SIZE]; /**< резерв */
};
typedef struct lboot_devinfo_st t_lboot_devinfo;
/** стандартный заголовок запроса на перепрошивку */
struct lboot_params_hdr_st {
uint32_t size; /**< размер структуры запроса (включая
специфические для интерфейса данные и crc) */
uint32_t bootmode; /**< режим загрузки - определяет интерфейс */
uint32_t flags; /**< общие флаги */
uint32_t timeout; /**< таймаут в мс - сколько загрузчик будет ожидать
запроса на перепрошивку (0 - бесконечно) */
uint32_t reserv[2]; /**< резерв */
t_lboot_devinfo devinfo; /**< информация о устройстве и прошивке */
};
typedef struct lboot_params_hdr_st t_lboot_params_hdr;
//специфические для tftp параметры
struct st_lboot_specpar_tftp {
uint16_t flags; //спец флаги (резерв)
uint16_t server_port;
uint8_t mac[6]; //mac-адрес
uint8_t l_ip[4]; //свой ip-адрес
uint8_t mask[4]; //mask - маска сети
uint8_t gate[4]; //адрес шлюза
uint8_t r_ip[4]; //адрес сервера tftp
char filename[LBOOT_REQ_MAX_FILENAME_SIZE]; //имя файла с прошивкой
uint16_t crc;
};
typedef struct st_lboot_specpar_tftp t_lboot_specpar_tftp;
//параметры для запроса прошивки по tftp
struct st_lboot_params_tftp {
t_lboot_params_hdr hdr;
uint16_t tftp_flags; //спец флаги (резерв)
uint16_t server_port;
uint8_t mac[6]; //mac-адрес
uint8_t l_ip[4]; //свой ip-адрес
uint8_t mask[4]; //mask - маска сети
uint8_t gate[4]; //адрес шлюза
uint8_t r_ip[4]; //адрес сервера tftp
char filename[LBOOT_REQ_MAX_FILENAME_SIZE]; //имя файла с прошивкой
uint16_t crc;
};
typedef struct st_lboot_params_tftp t_lboot_params_tftp;
struct st_lboot_specpar_modbus_rtu {
uint16_t flags ; //спец флаги
uint8_t addr ; //адрес устройства в modbus сети
uint8_t parity ;
uint16_t res ;
uint32_t baud_rate; //скорость передачи по rs-485/232
uint16_t crc;
};
typedef struct st_lboot_specpar_modbus_rtu t_lboot_specpar_modbus_rtu;
//параметры для перепрошивки по Modbus RTU
struct st_lboot_params_modbus_rtu {
t_lboot_params_hdr hdr ;
uint16_t flags ; //спец флаги
uint8_t addr ; //адрес устройства в modbus сети
uint8_t parity ;
uint16_t res ;
uint32_t baud_rate; //скорость передачи по rs-485/232
uint16_t crc;
};
typedef struct st_lboot_params_modbus_rtu t_lboot_params_modbus_rtu;
struct st_lboot_specpar_usb {
uint16_t flags ; //спец флаги
uint16_t crc;
};
typedef struct st_lboot_specpar_usb t_lboot_specpar_usb;
//параметры для перепрошивки по USB
struct st_lboot_params_usb {
t_lboot_params_hdr hdr ;
uint16_t flags ; //спец флаги
uint16_t crc;
};
typedef struct st_lboot_params_usb t_lboot_params_usb;
struct st_lboot_specpar_can_lss {
uint16_t flags;
uint8_t br_index; /* BaudRate Index */
uint8_t res;
uint32_t vid;
uint32_t pid;
uint32_t rev;
uint16_t crc;
};
typedef struct st_lboot_specpar_can_lss t_lboot_specpar_can_lss;
struct st_lboot_params_can_lss {
t_lboot_params_hdr hdr;
t_lboot_specpar_can_lss can;
};
typedef struct st_lboot_params_can_lss t_lboot_params_can_lss;
struct st_lboot_params {
t_lboot_params_hdr hdr ;
union {
t_lboot_specpar_tftp tftp;
t_lboot_specpar_modbus_rtu mbrtu;
t_lboot_specpar_usb usb;
t_lboot_specpar_can_lss can;
};
};
typedef struct st_lboot_params t_lboot_params;
#pragma pack()
#endif /* LBOOT_REQ_H_ */