ARM продает ядра, а не чипы, то, что находится по этому адресу, зависит от производителя чипа, который купил ядро ARM и поместил его в свой чип.Реализации варьируются от поставщика к поставщику, от чипа к чипу.
Традиционно ARM будет загружаться с нуля адреса, точнее, вектор исключения сброса находится по адресу нуля.В отличие от других семейств процессоров, традиционная модель ARM - это НЕ список адресов для точек входа исключений, а ARM ВЫПОЛНЯЕТ инструкцию по этому адресу, что означает, что вам нужно использовать либо относительную ветвь, либо инструкцию загрузки ПК.Более новые серии cortex-m, которые являются только thumb / thumb2 (они не могут выполнять инструкции ARM (32-битные)), используют традиционный (не ARM) список адресов, также нулевой адрес не является вектором исключения, этоадрес для загрузки в стек указателя, затем вторая запись сбрасывается и так далее.Кроме того, список исключений cortex-m отличается тем, что в этом семействе около 128 отдельных прерываний, в то время как в традиционном ARM их два, быстрое и нормальное.Существует недавний вопрос на основе cortex-m или, возможно, сформулированный как вопрос thumb2 для запуска linux на ARM thumb2.Я думаю, что все реализации cortex-m представляют собой микросхемы класса микроконтроллеров и имеют только объем памяти микросхем в десятки килобайт, в основном они не попадают в категорию, о которой вы спрашиваете.И вы все равно спрашиваете о cortex-a9.
У ряда ядер или, возможно, у всех них есть вариант загрузки, где адрес загрузки может быть 0x00000000 или что-то вроде 0xFFFF0000 в качестве альтернативного адреса.использование этого было бы очень запутанным для пользователей ARM, но оно предоставляет возможность, например, иметь rom по одному адресу и ram по другому, позволяя вам загружаться при включении питания из rom, а затем переключать таблицу исключений в ram для работы во время выполнения.Вероятно, у вас есть микросхема с ядром, которая может это делать, но поставщик микросхем должен решать, использовать эти грани основных функций или нет, или использовать их в некоторых настройках и не предоставлять вам такую гибкость.
Вам нужно взглянуть на таблицу / документацию для данного чипа.Узнайте, как называется ядро ARM, как вы упомянули cortex-a9.В идеале вы хотите узнать об rev тоже как о r0p0, а затем зайти на сайт ARM и найти TRM, техническое руководство для этого ядра.Вы также захотите получить копию ARM ARM, ARM Architectural Reference Manual.(Традиционные) векторы исключения ARM описаны в ARM ARM, а также довольно много дополнительной информации.Вам также нужна документация для поставщиков микросхем и посмотрите их схему загрузки.Некоторые при включении указывают нулевой адрес на загрузочный выпуск, тогда загрузчик должен будет что-то сделать, немного перевернуть регистр, и контроллер памяти переключит адрес 0 на ram.Некоторые могут иметь адрес 0, всегда настроенный как ram, а другой адрес всегда настроенный как rom, скажем, например, 0x80000000, и чип загрузит некоторые элементы из ROM в RAM перед загрузкой, или чип может просто получить питаниеустановив для вектора сброса ветвь rom, затем загрузчик загрузит таблицу векторов.Как много разных схем вы можете придумать, вероятно, кто-то попробовал это, поэтому вам нужно изучить документацию производителя микросхем или пример кода, чтобы понять, в основном ответ на ваш вопрос, зависит ли это, и вы должны проверить сПроизводитель чипа.
ARM TRM для ядра должен описывать, если таковые имеются, варианты ремешка на ядре (например, возможность загрузки с альтернативного адреса), подключать те опции ремешка, если таковые имеются, которые реализованыпо поставщику.ARM ARM на самом деле не собирается вдаваться в это, как TRM.Однако у поставщика, у которого стоит покупать, будет собственная документация и / или код, показывающий стратегию загрузки на основе rom.
Для системы, предназначенной быть системой linux, у вас будет загрузчик, некоторый код не-linux (очень похожий на bios на вашем настольном компьютере / ноутбуке), который запускает систему и в конечном итоге запускает linux.Linux потребуется достаточное количество памяти (по сравнению с микроконтроллером и другими хорошо известными реализациями ARM), этот ram может в конечном итоге быть sram или dram, и загрузчику может потребоваться инициализировать интерфейс памяти, прежде чем он сможет запустить linux.Существуют популярные загрузчики, такие как redboot и uboot.и то, и другое значительно излишним, но предоставляют разработчикам и пользователям такие функции, как возможность перепрошивки Linux и т. д.
В ARM linux есть ATAG (ARM TAG).Вы можете использовать как традиционную командную строку linux, чтобы сообщить информацию о загрузке linux, например, какой адрес для поиска корневой файловой системы, так и ATAG.Atags - это структуры в памяти, которые, я думаю, установлены как r0 или что-то подобное, когда вы переходите от загрузчика к linux.Общая концепция заключается в том, что чип включается, загружается с rom или ram, если готовит ram к тому, чтобы он был готов к использованию, linux может захотеть / нужно скопировать с rom на ram, корневая файловая система, если она отдельная, может захотетьбыть скопированным в другое место в оперативной памяти.ATAG готовы сообщить arm, где при необходимости распаковать linux, а также где найти командную строку и или где найти такие вещи, как корневая файловая система, некоторые регистры подготавливаются как передаваемые параметры в linux и, наконец, ветвь загрузчика переходит кадрес, содержащий точку входа в ядре Linux.