Files
E502_ADC_BF_PC_companion/lib/x502/x502_eeprom.h

88 lines
3.2 KiB
C
Raw 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.

/***************************************************************************//**
@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