CheckSum
Этот модуль можно использовать для обнаружения ошибок передачи, возникших при записи пакетов данных PM, DM0, DM1 из микроконтроллера (uC) в SigmaDSP.
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)
Использование 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
- Дождитесь, пока 'CheckSumCalculationDone' не станет равным 0x01000000.
- Считайте значения 'PMCheckSum', 'DM0CheckSum' и 'DM1CheckSum'. Эти значения должны совпадать с контрольными суммами, вычисленными в uC.
- Если 'CheckSumCalculationDone' не становится равным 0x01000000, пакет PM передан неправильно / ядро SigmaDSP не работает.
Поддерживаемые ИС
1. ADAU145x
2. ADAU146x