1) некоторая сборка требуется для всех платформ, вам, вероятно, понадобится некоторый код запуска, чтобы охватить предположения языка программирования, например, компилятор C предполагает, что вы установили стек (указатель) и обнулили память .bss, .data находится в нужном месте и т. д. В зависимости от процессора, но обычно вам может потребоваться некоторый код для обработки прерываний и, возможно, переключения задач и т. д.
2) да, есть много виртуальных машин, qemu, skyeye и т. Д.
3) очень редко симулятор набора команд или виртуальная машина и т. Д. Точно соответствуют процессору. То, что он работает на VM / SIM, не означает, что он работает. Не отличается от запуска кода в отладчике и вне отладчика. Вы должны попробовать различные симуляторы, а также оборудование, чтобы проверить качество симулятора. Один процессор руки к другому или один x86 к другому может варьироваться достаточно, чтобы привести к сбою вашего программного обеспечения, поэтому даже работа на оборудовании не достаточна, чтобы разобраться со всеми вашими потенциальными ошибками.
4) Linux работает на многих платформах, да? Netbsd работает еще больше, да? В зависимости от того, как вы разрабатываете свою программу, она может быть очень переносимой или непереносимой или где-то между ними. Это зависит от вас.
5) Вам нужны основы операционной системы. возможно получите книгу MicroC / OS-II или другие подобные материалы. Пройдите основы переключения задач и т. Д.
6) IDE, редакторы и т. Д. - это очень личное дело, любимых людей ненавидят другие. Для разработки ARM вам необходимо получить ARM ARM (ARM Architectural Reference Manual). То, что раньше было единым документом, распалось из-за того, что у него было так много разных ядер и семейств. ARMv5 или ARMv6 ARM - это то, что раньше выглядело как единственное. Получите это, и вы сможете по крайней мере написать код, который будет более переносимым для всего семейства ядер. Вы хотите получить некоторые TRM (технические справочные руководства). Получить тот, что для ARM7TDMI (ARMv4T), это все равно что получить руководство по 486 от Intel, почти все (инструкции по 32-битному режиму), поскольку он совместим с этим ядром. Вероятно, хотите получить TRM для других семей. Поймите, что даже если более старая версия, например, rev 1.0 (r1p0), может быть помечена как устаревшая, если есть руководство для нее, ARM продал ее кому-то, и она где-то существует в некоторых микросхемах, и вам, возможно, потребуется знать разницу между ядра (если вы нацелены на это близко). Периферийные устройства, такие как кэш PL210 L2, часто обнаруживаются подключенными к некоторым ядрам, вы, вероятно, захотите узнать, что там находится, если вы заинтересованы в том, чтобы включить и использовать кэш. Хм, у arm7 (ARMv4, не путать с ARMv7) нет mmu, я думаю, что ARM9 делает, поэтому в зависимости от того, как вы хотите управлять приложениями и их памятью, вы можете использовать ARM9 или что-то более новое. в качестве базовой линии.
получить набор инструментов для кодовой базы данных Lite GNU. CodeSource теперь является частью наставника графики. Нетрудно создать собственный кросс-компилятор для arm или получить какой-то другой (emdebian и т. Д.). ARM - хороший компилятор, но он дорогой, и большая часть поддержки будет предоставляться по цене, конечно, он-лайн ищет помощь, но большая часть бесплатной помощи основана на gcc. Инструменты компилятора llvm улучшаются с каждым днем, они используются на iPhone, насколько я понимаю. Я использую компилятор clang, который является частью llvm. Вам не нужно обязательно создавать кросс-компилятор из коробки - это кросс-компилятор от языка к промежуточному и целевому сборкам. сборка и компоновка предназначены для хоста, но вы можете использовать ассемблер и компоновщик gnu binutils для этого последнего шага.
Как и в IDE / редакторе, ваш стиль программирования и предпочтения могут склонить вас к одной среде компиляции над другой.
Вы можете посчитать мои примеры рук на github полезными или нет, они низкого уровня, примеры типов на доске. В основном на основе большого пальца, а также, где это возможно, рука.