Программирование под ARM имеет некоторые особенности, типа mixed endian double (читаем о FPA), а по большому счёту тоже самое что под x86. При работе с памятью не следует забывать о выравнивании.
>мне надо на низком уровне туда писать. под ядро и не факт, что линуксовое.
arm system developer's guide
хотя подозреваю даташит будет основным с чем придется работать, ибо процессорно-зависимые вещи реализованы в ядре а работать придется с конкретным soc и его реализацией контроллеров dma, прерываний и разной периферией включая системный таймер.
Я так и писал. gcc поддерживает avr. Плюс небольшая либа на асме которая умела, скажем, менять уровень сигнала на ногах(на gpio или как эти ноги называются). Линух в 4кб памяти не впихнёшь :).
avr и ARM - "несколько" разные архитектуры и писать под них по разному. в AVR камне у тебя перифирии-то: UART, ШИМ и сигналы на ноги, в особо извращенных случаях - ethernet, но это сильно редко для AVR камней.
Исходники другой мути. =))) Однако, если быть серьёзным, то я бы рекомендовал следующу последовательность:
0. Подобрать нужную аппаратную реализацию. В виде "отладочной платы". рулят у нас по ряду причин Oymex'ы, так то, подобрать что нужно там не проблема.
1. Даташиты. На целевой ARM. Тот, что присобачен на плату. Их (АРМов), как минимум, не один. И надо быть в курсе того, что ждать на конкретной железяке. Конкретные адреса в пределах одного ряда ARM могут разниться.
Виндовый вариант мало интересен. В принципе, можно собрать линуксовый. http://www.yagarto.de/ http://www.arm.linux.org.uk/developer/toolchain/
Когда разберётесь с тем, что нужно, "на руках" у Вас будет gcc, binutils, coreutils, gdb там всякие... Короче, полный набор софта именно для используемого Вами процессора. Тогда можете смело отказаться от 2удобной" среды и вернуться к привычной.
3. Разобраться с тем, что именно хочется поднять на ARM'е. Вариантов несколько -- от самописного кода. Всего. Включая bootloader (см. п.1), оно там обычно прописывается. И это ГИМОР! И до использования чего-нибудь типа FreeRTOS или eCOS (это сделано Red Hat'ом, достойная вещь). При подъёме на ARM'е системы придётся изменить сырец системы (или включить в свой код). Как минимум, добавив в проект файл описания платы (аппаратной платформы). В туториале jilycha (если глянуть, добавляется файлец AT91SAM7S256.h, по-моему. Это оно и есть. Там прописаны адреса, (явки, пароли) для вполне конкретной платы от болгарского производителя Olymex. Там же прописаны адреса флеша, портов, ... Короче всего. Без этого файлеца Ваш проект жить не будет.
Чуть не забыл -- под плату и проц нужен JTAG. Это такая колодочка-разъёмчик через который крайне удобно заливать на плату код (в принципе, на некоторых плптах можно по USB, но через jTAG проще) и, самое главное, через JTAG крайне удобно отлаживаться. В ряде случаев это единственный путь.
>>Чуть не забыл -- под плату и проц нужен JTAG. Это такая колодочка-разъёмчик через который крайне удобно заливать на плату код (в принципе, на некоторых плптах можно по USB, но через jTAG проще) и, самое главное, через JTAG крайне удобно отлаживаться. В ряде случаев это единственный путь.
пассивный JTAG-LPT адаптер делается за 5ть минут из одних только резюков.