наскоко я понимаю, vc умеет генерировать код под микроконтроллеры арм (под pocket pc и прочую хрень). нужно только достать заголовочные файлы с описанием основных портов и пр. + научиться собирать из них файлы для прошивки (*.hex, *.elf). кто-нибудь уже пробовал? или лучше юзать gcc и не заморачиваться?
Бинарники можно и микрософтовским делать - был рецепт с "напильником". А для elf левого линкера недостаточно - в Линуксе другие библиотеки.
Заглянув в wiki, обнаружил, что elf используется в некоторых мобильниках. Они тоже требуют привязки к "начинке телефона" - а я и говорил что библиотеки разные. Сейчас Микрософт все бросит и начнет дописывать компилятор под Сименсы Именно компилятор, т.к. привязка к библиотекам делается на этом уровне.
просто nix'ы используют .elf как windows использует .exe или .com... это тоже исполняемые бинарные файлы используется... в Siemens и SonyEricsson, и соответственно так как .elf исполняется напрямую (без интерпретаторов, потому собственно и пишется на си или си++) то и компилятор должен быть привязан к железу телефона (или любого другого устройства) ничего никому бросать не надо, все уже давно сделано, и спокойно используется например: http://cbn.narod.ru/elf.html мое мнение конечно же будет - юзать gcc и не заморачиваться... для программирования под арм можно обратить внимание так же на uVision IDE от http://www.keil.com/ скачать можно тут http://torrents.ru/forum/viewtopic.php?t=1856152
ничего не понял. ну юзают сименсы эльфы, ну и что? я ведь прошиваю контроллер, а не сименс. контроллер прошивается чисто бинарными данными. формат эльф нужен только для того, чтобы прога, которая занимается прошивкой могла разобрать что и по каким адресам ей записывать. нужен просто линкер, чтобы из file.obj сделать file.elf. может быть я непонятно выразился - прошивается голое железо безо всяких линухов и прочих осей.
К VC левые toolchain-ы, ИМХО, проще всего прикручивать через Makefile project. По меньшей мере, QT было проще всего именно так прикрутить. Полагаю, и прочие неродные связки также.
да нет, я тебя понял... но для того чтобы получить .obj файл под определенную платформу(контроллер) нужно скомпилировать исходники компилятором... а у VC свой компилятор, а уж потом линковать в .elf Voodoo прав
Код (Text): чтобы получить .obj файл под определенную платформу(контроллер) нужно скомпилировать исходники компилятором... а у VC свой компилятор блин. я х.з. как ещё объяснить. File->New->Project->Smart Devices ... Selected SDKs - Pocket PC 2003. там выбираем процессорную архитектуру - ARMV4. под неё студия умеет собирать .obj файлы. вот кусок кода, сгенерированный студией: Код (Text): #include <math.h> int Main() { 00011000 stmdb sp!, {r4, lr} 00011004 sub sp, sp, #0x14 int i = 0; 00011008 mov r3, #0 0001100C str r3, [sp] int k = 2; 00011010 mov r3, #2 00011014 str r3, k, #4 return i + k * 100 - sin(i); 00011018 ldr r0, [sp] 0001101C ldr r3, [pc, #0x78] 00011020 ldr r3, [r3] 00011024 mov lr, pc 00011028 mov pc, r3 0001102C bl 000110A0 00011030 str r1, [sp, #0x10] 00011034 str r0, [sp, #0xC] 00011038 ldr r1, k, #4 0001103C mov r3, #0x64 00011040 mul r2, r1, r3 00011044 ldr r3, [sp] 00011048 add r0, r3, r2 0001104C ldr r3, [pc, #0x48] 00011050 ldr r3, [r3] 00011054 mov lr, pc 00011058 mov pc, r3 0001105C ldr r2, [sp, #0xC] 00011060 ldr r3, [sp, #0x10] 00011064 ldr lr, [pc, #0x2C] 00011068 ldr r4, [lr] 0001106C mov lr, pc 00011070 mov pc, r4 00011074 ldr r3, [pc, #0x18] 00011078 ldr r3, [r3] 0001107C mov lr, pc 00011080 mov pc, r3 00011084 str r0, [sp, #8] } осталось только привести этот бинарник в нормальный вид (в котором можно будет прошить железяку).
а если мне нужна другая платформа, и у меня есть компилятор, линкер... вобщем весь набор + заголовочные файлы... можно все это приконектить к VC?
SWIRL Пишешь Makefile... И далее по программе, ну ты понял. =) Если студии в Include Dirs добавить папку с твоими заголовочниками - будет еще и Intellisense, если повезет. cupuyc Я вот так и не понял - какой-такой нормальный вид тебя все-таки интересует? Конечная цель какая?
Все-таки попутаны форма и содержание. Да elf - это формат, но для того чтобы линкер записал туда правильное содержание, недостаточно просто obj - нужен SDK для компилятора, который содержит include c правильными вызовами внешних функций. Для VC такого SDK под Сименсы нет. Прошивок в формате elf я не видел, а говорить что прошивки современных устройств имеют формат HEX может только тот, кто ими всерьез не занимался. Слава богу и под АРМ и под МИПС давно существуют специальные средства, а gcc разумно использовать только под железяки с Линуксом. Пардон за offtop.
каких внешних функций? что такое внешние функции? с каких пор линкер работает с инклудами? )))) чтобы не знать про avrdude, нужно пользоваться каким-нибудь avrstudio всю свою сознательную жизнь и бояться попробовать хотябы что-то ещё.
студия вобще-то определена - это VC, и разговор про "приляпывание" сторонних наборов к данной студии действительно ))) если все функции в самой прошивке )))
1) Я теперь знаю два типа elf, используемых в прошивках - исполняемые модули для прошивок на основе Линукс и выполняемые модули для Сименса и иже с ними. В Сименсе точно не скажу, как идет связка с внешними функциями, но подозреваю, что либо жестко прописываются адреса, либо через таблицы адресов - подробности можно узнать по сылкам, что я приводил. Я и не говорил, что линкер работает с иклюдами. Компилер через инклюды вставляет в obj то что линкер правильно обработает. Никакой линкер не сделает из obj от VC работающий elf. Можно только повторить формат elf в лучшем случае, в худшем получим сообщение об ошибках. 2) Про avrstudio мало что знаю. Я пользовался Keil-ом и там действительно HEX-формат, т.к. либо все пишешь сам на ассемблере, либо все нужные функции вбиваются в HEX линкером. Про это и речь. Либо в прошивке все реализовано внутри HEX - это было в прошлом веке, либо есть достаточно сложно организованная структура, к которой можно "приляпывать" свои самоделки, соблюдая при этом очень жесткие правила. VC умеет то, что он умеет.