Imax9
NEWS   ARTICLES   MINIMIG   FILES   ABOUT

Экспериментируем с TG68 - лучший кэш ч.2

Предлагаю вам перевод цикла Experimenting with TG68 Part 12b – a better cache автора Alastair M. Robinson.

Я *наконец* нашел тонкую ошибку, которая приводила к сбою моего 2-ух канального кэша. Симптом проявлялся в том, что процесс загрузки, по-видимому, работал нормально, загружая файл S-Record с SD-карты, но после его загрузки код не запускался. Это было так, как будто загрузчик игнорировал запись S9 в конце файла прошивки.

После различных бесплодных попыток отследить это и создать искусственные тестовые примеры, чтобы вызвать такое поведение, я, наконец, добавил несколько "хлебных крошек" последовательной отладки в загрузчик первого этапа. Исходя из этого, я обнаружил, что последняя запись S9 обрабатывалась так, как будто это был S1!

Обнаружив этот факт, я смог использовать всегда полезный SignalTap, чтобы поймать “9”, записываемое в переменную SREC_TYPE, и наблюдать, как оно снова считывается. В этот момент я наконец понял, что происходит: эта область памяти одновременно кэшировалась в оба канала ссылались на SREC_TYPE, но код, обновляющий кэшированные данные, работал только одним или другим каналом – он не записывал в оба!

В конце концов исправить это было так же просто, как удалить “else”.

Доказав, что кэш работает, следующая задача - интегрировать запись кэша и удалить его из контроллера SDRAM. Как только это сработает, я планирую интегрировать кэш в проект Minimig.


Адрес для контактов : imax9@narod.ru

Если вам понравились мои работы и вы желаете поддержать сайт - сделайте дотацию.

При копировании статьи – обязательна ссылка на авторство и источник. Без разрешения автора копирование запрещено.

© Максим Ильин 2022г.

Яндекс.Метрика