manually merged with ARM version

This commit is contained in:
2025-11-13 17:43:55 +03:00
parent 77005d7863
commit b7ba42765b
463 changed files with 119514 additions and 45 deletions

87
x502/x502_eeprom.h Normal file
View File

@ -0,0 +1,87 @@
/***************************************************************************//**
@file x502_eeprom.h
@author Borisov Alexey <borisov@lcard.ru>
@date 14.03.2011
Файл содержет описание констант и типов, для описание формата информации,
записаной в EEPROM. Эти константы используются только внутри библиотеки и
в специальном софте (для калибровки и обновлениия прошивки ПЛИС) и не
доступны пользователю по-умолчанию
******************************************************************************/
#ifndef X502_EEPROM_H
#define X502_EEPROM_H
#define X502_EEPROM_CBR_SIGN 0x4C434352 //LCBR
#define X502_EEPROM_CBR_FROMAT 2
#define X502_EEPROM_CBR_SRC_ADC 1
#define X502_EEPROM_CBR_SRC_DAC 2
// TODO: это может быть проблемой для поддержки совместимости: E502-P1 флеш в 2 раза больше
//#define X502_EEPROM_SIZE 0x400000UL
// Устаревшая константа с размером внешней флеш памяти в байтах, надо использовать значения переменной из hnd->info.flash_size
#define X502_EEPROM_SIZE 0x200000UL
#define X502_EEPROM_ADDR_DESCR 0x1F0000UL
#define X502_DESCR_MAX_SIZE 0x010000UL
#define X502_EEPROM_FORMAT 1
#define X502_DESCR_MIN_SIZE (sizeof(t_x502_eeprom_hdr)+4)
#define X502_EEPROM_SIGN 0x4C524F4D
typedef struct {
uint32_t cbr_sign;
uint32_t cbr_size;
uint32_t format;
uint32_t src;
uint32_t flags;
uint32_t reserv[3];
uint64_t time;
uint32_t channel_cnt;
uint32_t range_cnt;
} t_x502_eeprom_cbr_hdr;
typedef struct {
t_x502_eeprom_cbr_hdr hdr;
t_x502_cbr_coef coefs[X502_ADC_RANGE_CNT];
} t_x502_eeprom_cbr_adc;
typedef struct {
t_x502_eeprom_cbr_hdr hdr;
t_x502_cbr_coef coefs[X502_DAC_CH_CNT];
} t_x502_eeprom_cbr_dac;
typedef struct {
uint32_t sign;
uint32_t size;
uint32_t format;
char name[X502_DEVNAME_SIZE];
char serial[X502_SERIAL_SIZE];
uint8_t factory_mac[X502_MAC_ADDR_SIZE];
char res[64-18];
} t_x502_eeprom_hdr;
typedef struct {
t_x502_eeprom_hdr hdr;
t_x502_eeprom_cbr_adc cbr_adc;
t_x502_eeprom_cbr_dac cbr_dac;
uint32_t crc;
} t_x502_descr;
typedef enum {
X502_EEPROM_PROT_ALL = 0, /**< Защищена вся область памяти */
X502_EEPROM_PROT_WR_USER = 1, /**< Разрешено изменение только пользовательской части */
X502_EEPROM_PROT_WR_SETTINGS = 2, /**< Кроме пользовательской части, разрешено изменение
области настроек, флага загрузки и второй копии прошивки ПЛИС */
X502_EEPROM_PROT_WR_FPGA_FIRM = 3, /**< Разрешено изменение основной прошивки ПЛИС */
X502_EEPROM_PROT_WR_ALL = 4, /**< Разрешена запись в любую область памяти */
} t_x502_eeprom_prot_state;
#endif // X502_EEPROM_H