Версия QNX 6.4.0
Драйвер ETFS на NAND из bsp-ti-omap-l137-evm
Существует ли возможность задать в драйвере параметры используемого ECC?
Изначальный bsp был создан под старые slc nand чипы, которым не требовалось большой избыточности в отличии от современных.
Поэтому в имеющейся версии драйверя используется судя имени функции 1-битный ECC,
однако в структуре etfs_devio упоминаются функции для рассчета различных вариантов ECC:
struct etfs_devio {
unsigned memtype; /* Type of device */
unsigned clustersize; /* Size of a cluster */
unsigned sparesize; /* Size of a spare area after a cluster */
unsigned clusters2blk; /* Clusters in a block */
unsigned numblks; /* Number of blks */
unsigned numrblks; /* Total Number of blocks allocated to the raw area */
unsigned blksize; /* Size of an erase blk */
unsigned flags; /* Driver capability flags */
char id[16]; /* A name for the device */
void *cio; /* Points to a device specific io struct defined in the driver */
volatile int preempt; /* If no zero higher level wants us to preempt */
int reserved[16]; /* Future expansion */
unsigned (*crc16)(_Uint8t *buf, int len);
unsigned (*crc32)(_Uint8t *buf, int len);
int (*ecc)(_Uint8t *buf, _Uint8t (*vec)[3], int nvec, int correct);
int (*ecc32)(_Uint8t *buf, _Uint8t (*vec)[3], int nvec, int correct);
int (*ecc64)(_Uint8t *buf, _Uint8t (*vec)[3], int nvec, int correct);
int (*ecc128)(_Uint8t *buf, _Uint8t (*vec)[3], int nvec, int correct);
int (*ecc256)(_Uint8t *buf, _Uint8t (*vec)[3], int nvec, int correct);
void (*log)(int severity, const char *fmt, ...);
};
Вопрос в том, реально ли сушествуют эти функции или это указатели куда надо поместить собственные реализации.
И если эти функции уже реализованы тот как их правильно вызывать.