ΣSigmaStudio English

CheckSum


Этот модуль можно использовать для обнаружения ошибок передачи, возникших при записи пакетов данных PM, DM0, DM1 из микроконтроллера (uC) в SigmaDSP.
CheckSum

SigmaStudio вычисляет «ожидаемое» значение контрольной суммы и отображает его на схеме. Подпрограмма инициализации SigmaDSP вычисляет фактическую контрольную сумму и сохраняет ее в целевом устройстве до начала обработки аудио. Нажав кнопку «чтение», можно считать фактические значения с целевого устройства и отобразить их в модуле. Если цвет круга красный, вычисление все еще выполняется. Зеленый цвет указывает на завершение вычисления.

Контрольная сумма рассчитывается для каждого пакета следующим образом:

initialize the sum to zero
FOR each word in the pack
    Read each word in the pack      
    Set sum equal to the addition of the each word
END FOR
Assign the negative sum to checksum result

Примечание: Для контрольной суммы памяти DM0 вычисление выполняется без учета стековой памяти.

Использование

Использование SigmaStudio GUI

  • Перетащите модуль на схему.
  • Свяжите, скомпилируйте и загрузите (Link Compile Download).
  • Нажмите кнопку «Чтение» (Read).
  • Если круг в модуле красный, нажимайте «Чтение», пока круг не станет зеленым. (Если круг красный, вычисление не завершено)
  • Сравните ожидаемое и фактическое значения. Они должны совпадать для всех 3 типов памяти (DM0, DM1, PM)

Использование SigmaStudio GUI

Использование uC

После записи всех данных загрузки в соответствии с последовательностью загрузки ADAU145x/ADAU146x, выполните следующие шаги для проверки пакетов DM0, DM1 и PM.

  • Рассчитайте ожидаемую контрольную сумму для пакетов DM0, DM1, PM следующим образом:
  byte spidata[datalength]; // упаковать данные
  int64 sum = 0;
  int32 checksumresult;
  for(int i = 0; i < datalength/4; i++)
  {
     int data = 0;
     data  =  spidata[4 * i + 3];
     data  = data | (spidata[4 * i + 2] << 8);
     data  = data | (spidata[4 * i + 1] << 16);
     data  = data | (spidata[4 * i] << 24);
 
     sum += data;    
  }  
  checksumresult = -sum;
 
  • Найдите адреса переменных каркаса 'PMCheckSum', 'DM0CheckSum', 'DM1CheckSum' и 'CheckSumCalculationDone' в экспортированном файле PARAM.h

Использование uC

  • Дождитесь, пока 'CheckSumCalculationDone' не станет равным 0x01000000.
  • Считайте значения 'PMCheckSum', 'DM0CheckSum' и 'DM1CheckSum'. Эти значения должны совпадать с контрольными суммами, вычисленными в uC.
  • Если 'CheckSumCalculationDone' не становится равным 0x01000000, пакет PM передан неправильно / ядро SigmaDSP не работает.

Поддерживаемые ИС

1. ADAU145x
2. ADAU146x

CheckSum в SigmaStudio: настройка и параметры

CheckSum — это вычислительный блок в составе раздела Basic DSP графической среды SigmaStudio, предназначенный для контроля целостности данных при передаче конфигурации с внешнего микроконтроллера (uC) на сигнальный процессор семейства Analog Devices SigmaDSP. Основная задача модуля — обнаруживать ошибки, возникающие при записи пакетов памяти программ (PM) и памяти данных (DM0, DM1). Это критически важная функция при разработке систем, где загрузка происходит динамически, а не через стандартный интерфейс USB. Принцип работы модуля основан на сравнении двух значений. Среда разработки SigmaStudio автоматически вычисляет эталонную контрольную сумму для каждого пакета данных и отображает её на схеме проекта. В свою очередь, подпрограмма инициализации, выполняемая на самом DSP, суммирует все слова принятого пакета и сохраняет полученный результат в специальных регистрах целевого устройства. Алгоритм суммирования прост: обнуление аккумулятора, последовательное сложение всех 32-битных слов и присвоение результату отрицательного значения суммы. Важной особенностью является то, что для памяти DM0 вычисления выполняются без учёта области стековой памяти. Для проверки в графическом интерфейсе SigmaStudio достаточно перетащить блок CheckSum на рабочую схему, выполнить связывание, компиляцию и загрузку проекта. После этого необходимо нажать кнопку «Чтение» (Read). Индикатор в виде круга подскажет статус операции: красный цвет означает, что вычисление на процессоре ещё выполняется, зелёный — что процесс завершён.