Hello Denis,
DS> Планируется сотворить девайс на ARM'е, скорее всего AT91R40008. DS> Средство разработки - gcc.
Я использовал GCC 3.1 порт для ARM на платформе Win32. В собранном виде есть на
DS> Кто-нибудь такое делал? Интересует ряд тонкостей:
DS> Как получить бинарник для прошивки из ELF? Или это делается
При помощи линкера ld cтроишь .elf (при этом линкеру подсовываешь скрипт, в котором указываешь где у тебя RAM/ROM). Потом на .elf напускаешь ObjCopy. Я все тулзы брал из указанного выше пакета. В качестве make использовал nmake от MS (ну привык я к нему), если хочешь могу .mak файл прислать. Как IDE юзался старый BC3.1 (просто я фильтры сообщений компиляторов к нему насобачился писать, да и на асме в нем удобнее), потом попробовал еще MSVC 6.0. Но под него машина тогда была слабовата (из-за проблем редиректора stderr<->stdout надо было ставить W2K).
DS> специально заточенным линкером? Как ему указать, где располагать код, DS> и где данные? Бывает ли готовый стартап-код, или придётся писать DS> самому? Может, FAQи на эту тему есть хорошие?
Я не пользовал CRTL и ОС, поэтому стартап писал сам - инициализация чипа (Samsung S3C44), контроллера SDRAM.
Кстати, у меня были сложности с линковкой библиотеки C-поддержки (процедура деления, кажись и пара сложных прологов). Пришлось библиотеку "распустить" и явно линковать нужные объектники.
В-общем, привыкал я gcc тулзам неделю примерно, очень хелпы уж неудобные, ценные куски раскиданные по разным местам, с непривычки долго ковырялся - "выкачай то, выкачай это, туда не ходи (типа старая версия), сюда ходи" (вот бы что-то типа MSDN collection бы туды - вся инфа для разработчика в одном флаконе и красиво упакованная, в этом смысле OpenSource прилично отстает ИМО). Много нужных вещей я в хелпах не нашел (например, локальные метки в as, потом наткнулся в примерах, комментарии как-то странно начинаются (не с ';') Зато как makefile составил и barebone проекта собрал - дальше впечатления самые приятные. Для ARM генерирует очень неплохо, часто совпадало с моим ассемблерным представлением.