Нужна помощь в понимании последовательности загрузчика

Я прохожу этап 1 загрузчика. У меня есть несколько сомнений по этому поводу. Прежде всего, последовательность загрузки после сброса выглядит следующим образом:

  1. Установите ЦП в режим супервизора
  2. Недействительная инструкция L1, кэш данных и буфер преобразования
  3. Отключить MMU и кеш
  4. Настроить размер стека
  5. Включить кэш инструкций и данных, а также MMU

последовала начальная настройка часов и установка часов для Nand Flash Controller.

Мой вопрос здесь

  1. Мы уже аннулируем кэш инструкций/данных L1 и TLB (который является частью MMU), но зачем нам снова отключать MMU и кэш.

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

Спасибо большое за вашу поддержку.


person cpp_enthusiast    schedule 06.06.2015    source источник
comment
Какой загрузчик 1 этапа? Сам ЦП загружается с MMU и отключенным кешем.   -  person Gilles 'SO- stop being evil'    schedule 07.06.2015


Ответы (1)


MMU будет отключен при загрузке, поэтому шаг 3 на первый взгляд кажется излишним. Основываясь на ограниченной информации, я попытаюсь обосновать логику:

В конце выполнения основного загрузчика код перейдет к вторичному загрузчику. Если вторичный загрузчик не указан или если вторичный загрузчик что-то испортил до установки нового вектора исключений; если возникает инструкция к действию mov pc,#0 (переход к нулевому указателю функции); то основной загрузчик перезапустится с шага 1.

Кэши могут быть повреждены, MMU может быть включен, на данный момент нет никаких предположений. Поэтому, если загрузчик должен начаться чистым сейчас, ему нужно будет выполнить шаги 1–3, чтобы убедиться, что среда чиста для выполнения. Это больше похоже на меру предосторожности, чем на необходимую.

Загрузчики сильно различаются по функциональности и архитектуре. Не существует реального стандартизированного способа сделать это. Так что единственным реальным вариантом было бы читать код и задавать вопросы.

person Arun Valiaparambil    schedule 09.06.2015