alloc 16b sdram load

allocate 16bit table in SDRAM memory, -128.00 .. 127.99
Author: Johannes Taelman
License: BSD
Github: table/alloc 16b sdram load.axo

Inlets

None

Outlets

None

Attributes

combo size

file filename

Declaration
static const uint32_t LENGTHPOW = (attr_size);
static const uint32_t LENGTH = (1 << attr_size);
static const uint32_t LENGTHMASK = ((1 << attr_size) - 1);
static const uint32_t BITS = 16;
static const uint32_t GAIN = 12;
int16_t *array;
Init
static int16_t _array[attr_poly][LENGTH] __attribute__((section(".sdram")));
array = &_array[parent->polyIndex][0];
int i;
for (i = 0; i < LENGTH; i++)
  array[i] = 0;
FIL FileObject;
FRESULT err;
UINT bytes_read;
err = f_open(&FileObject, "attr_filename", FA_READ | FA_OPEN_EXISTING);
if (err != FR_OK) {
  report_fatfs_error(err, "attr_filename");
  return;
}
int rem_sz = sizeof(_array[0]);
int offset = 0;
while (rem_sz > 0) {
  if (rem_sz > sizeof(fbuff)) {
    err = f_read(&FileObject, fbuff, sizeof(fbuff), &bytes_read);
    if (bytes_read == 0)
      break;
    memcpy((char *)(&_array[0]) + offset, (char *)fbuff, bytes_read);
    rem_sz -= bytes_read;
    offset += bytes_read;
  } else {
    err = f_read(&FileObject, fbuff, rem_sz, &bytes_read);
    memcpy((char *)(&_array[0]) + offset, (char *)fbuff, bytes_read);
    rem_sz = 0;
  }
}
if (err != FR_OK) {
  LogTextMessage("Read failed\n");
  return;
}
err = f_close(&FileObject);
if (err != FR_OK) {
  LogTextMessage("Close failed\n");
  return;
}

Privacy

© 2024 Zrna Research