2015-06-06 4 views
0

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

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

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

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

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

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

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

+0

Какой загрузчик этапа 1? Сам процессор загружается с MMU и отключается кеш. – Gilles

ответ

0

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

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

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

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