Какова последовательность загрузки?

Мне интересно, что загрузочная последовательность малины Pi находится в типичной настройке (скажем, NOOBS), от приложения питания (или теплого сброса, если это так) до, скажем, появления логотипа; или где это описано.

Помимо самой необходимой общей картины этой последовательности, меня больше всего интересуют ранние этапы:

  1. Что такое вектор сброса для процессора ARM и как /где это определено?
  2. Из какой памяти извлекаются первые команды процессора ARM? Где это, и какая технология используется для хранения этого кода?
  3. Это код ARM32 или Thumb (или, возможно, Jazelle)? Это зависит от младшего бита вектора сброса?
  4. Доступен ли источник (или дизассемблирование или дамп) этого раннего загрузочного кода? Если нет, то что-то техническое препятствует использованию порта JTAG для определения этого? Что касается юридических, я готов принять на себя риск доверять моему пониманию закона, применимого там, где я живу (Франция), а именно, что мне полностью разрешено анализировать мой собственный компьютер, по крайней мере, в отсутствие явного договорного требования не делать этого.
  5. В каком порядке инициализируются периферийные устройства и по какой части кода?
  6. Помимо процессора ARM, есть ли в BCM2835 процессор /автоматы, и утвердительно, как его последовательность загрузки связана с процессором ARM?

Я готов погрузиться в процессор ARM Технический справочник Руководство пользователя и Периферия BCM2835 ARM или любой другой документ.

Обновление. После публикации я нашел это и this , заявив, что GPU BCM2835 действует как мастер для ARM и активно участвует в последовательность загрузки.

24 голоса | спросил fgrieu 31 +04002013-10-31T13:14:39+04:00312013bEurope/MoscowThu, 31 Oct 2013 13:14:39 +0400 2013, 13:14:39

1 ответ


26

Последовательность загрузки малины Pi в основном такова:

  1. Загрузка 1-го этапа находится в встроенном ПЗУ. Загружает этап 2 в кеш L2
  2. Этап 2 - bootcode.bin. Включает SDRAM и загружает Stage 3
  3. Этап 3 - loader.bin. Он знает о формате .elf и загружает start.elf
  4. start.elf загружает kernel.img. Затем он также считывает config.txt, cmdline.txt и bcm2835.dtb Если файл dtb существует, он загружается в 0×100 & kernel @ 0×8000 Если disable_commandline_tags установлен, он загружает kernel @ 0×0 В противном случае он загружает ядро ​​@ 0×8000 и помещает ATAGS в 0×100
  5. kernel.img затем запускается в ARM.

Все выполняется на GPU до тех пор, пока в ARM не будет загружен kernel.img.

Я нашел эту диаграмму весьма полезной:

Последовательность загрузки

ответил Shahid darbar 28 FebruaryEurope/MoscowbSat, 28 Feb 2015 17:50:42 +0300000000pmSat, 28 Feb 2015 17:50:42 +030015 2015, 17:50:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132