... В конце код ОС начинает работать. Для архитектуры ARM, каков процесс загрузки после использования, нажмите кнопку питания?
Этот ответ в основном в контексте современных процессоров Cortex-A; Существует большое разнообразие платформ ARM. Однако для ARM, подобного ПК (планшет, мобильный телефон и т. Д.) ...
Процессор ARM будет извлекать инструкцию из 0x0 или 0xffff0000 (для Cortex-M это данные, а не инструкция). Типичные ARM SOC имеют загрузочный диск, который использует этот механизм. Для конечного пользователя вам нужно обратиться к руководству, чтобы определить, как заставить ваш код работать. То есть существует BIOS , встроенный во многие ARM SOC, которые используют вектор, но вам нужно использовать что-то другое, чтобы ваш код работал.
Обычно ARM SOC поддерживает несколько загрузочных устройств. Устройство определяется каким-либо FUSE (установленным производственным инструментом) или штырьками для отбора проб. Контакты будут выходами ЦП в работающей системе, но были подтянуты вверх / вниз для настройки загрузочного устройства. Каждое загрузочное устройство будет иметь специфические детали; ROM прост, но NAND flash, SPI flash, MMC и т. Д. Нуждаются в некоторых деталях конфигурации. Они также часто обеспечиваются встроенным FUSE и / или штырьками для отбора проб. Небольшая часть устройства может быть прочитана для дальнейшей настройки устройства.
Для глубоко встроенного чипа ARM он может загружаться только с встроенной флэш-памяти, и этот процесс намного проще; но я полагаю, что в контексте вопроса вы имеете в виду более продвинутые процессоры ARM. Более продвинутые системы ARM имеют загрузчик. Это связано с тем, что объем кода, загружаемого загрузчиком ПЗУ, часто ограничен и / или ограничен. Также часто бывает сложно настроить SDRAM, и загрузчик может быть структурирован для работы из внутренней статической памяти, которая конфигурирует SDRAM.
См .: Зачем нам нужен загрузчик
Запуск ОС имеет свои особенности. Для ARM Linux это были ATAGS и теперь devicetree. Люди могут написать собственный загрузчик или использовать один из многих проектов с открытым исходным кодом, наиболее распространенным из которых является u-boot. U-boots поддерживает vxWorks, Linux, NetBSD, Plan9, OSE, QNX, Integrity и OpenRTOS, а также двоичные образы.
Многие оригинальные устройства ARM Linux поддерживали прямую загрузку Linux без загрузчика. Однако Linux не поддерживает этого в основной строке, за исключением нескольких очень старых ARM SOC / ядер.