ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
1220947 Топик полностью
VVB (05.07.2022 12:20, просмотров: 191) ответил VVB на Прошу помощи зала по GCC
Вынужден сдаться. Что-то внутрях сломано (ядро/кэш/SDRAM). 

Суть проблемы: значение счётчика в некэшируемой области DDR SDRAM не соответствует исполняемому коду. Счётчик может быть как выше, так и ниже ожидаемого значения.

Отключение DATA CACHE приводит к нормальной работе. Сброс всего кэша данных в одном месте кода тоже приводит к нормальной работе.

Перепроверил в экселе по битикам и по реальности настройку MMU и факт отключения кэшей и буфера записи для некэшируемой области, всё ок.

Попробовал вместо small pages перейти на sections для настройки MMU (для сокращения второй выборки при трансляции MVA), никакого эффекта не дало.

Включение буфера записи никакого эффекта не дало.

Но (при работающем кэше данных и отсутствии сброса кэша) простая (ненужная) инструкция чтения этой ячейки памяти с игнорированием результата чтения, вставленная в определённое место, привело к нормальной работе.


Даже не знаю, как отлавливать ошибку. Кончились все рабочие гипотезы. Добился работоспособности путём тупого ненужного чтения ячейки памяти из некэшируемой области ещё в одном куске кода.


Сегодня мне принесли другой NUC (NUC907 вместо NUC972), попробую воспроизвести.