кодим под арм на VC?

Тема в разделе "WASM.ELECTRONICS", создана пользователем cupuyc, 21 сен 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    наскоко я понимаю, vc умеет генерировать код под микроконтроллеры арм (под pocket pc и прочую хрень). нужно только достать заголовочные файлы с описанием основных портов и пр. + научиться собирать из них файлы для прошивки (*.hex, *.elf).
    кто-нибудь уже пробовал? или лучше юзать gcc и не заморачиваться?
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    VC умеет генерировать только PE файлы, если хочешь эльфы или бинарники то нужны сторонние тулзы.
     
  3. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    вот я про них и спрашиваю. нужен ведь только левый линкер.
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Бинарники можно и микрософтовским делать - был рецепт с "напильником".
    А для elf левого линкера недостаточно - в Линуксе другие библиотеки.
     
  5. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    а при чём тут линукс? просто проги для прошивки требуют, как правило, *.hex или *.elf.
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Заглянув в wiki, обнаружил, что elf используется в некоторых мобильниках. Они тоже требуют привязки к "начинке телефона" - а я и говорил что библиотеки разные. Сейчас Микрософт все бросит и начнет дописывать компилятор под Сименсы :) Именно компилятор, т.к. привязка к библиотекам делается на этом уровне.
     
  7. SWIRL

    SWIRL New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    59
    просто 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
     
  8. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    ничего не понял. ну юзают сименсы эльфы, ну и что? я ведь прошиваю контроллер, а не сименс. контроллер прошивается чисто бинарными данными. формат эльф нужен только для того, чтобы прога, которая занимается прошивкой могла разобрать что и по каким адресам ей записывать. нужен просто линкер, чтобы из file.obj сделать file.elf.
    может быть я непонятно выразился - прошивается голое железо безо всяких линухов и прочих осей.
     
  9. Terminator

    Terminator New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2007
    Сообщения:
    19
    да тебе не только линкер левый нужен но и компилятор.
     
  10. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    К VC левые toolchain-ы, ИМХО, проще всего прикручивать через Makefile project. По меньшей мере, QT было проще всего именно так прикрутить. Полагаю, и прочие неродные связки также.
     
  11. SWIRL

    SWIRL New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    59
    да нет, я тебя понял... но для того чтобы получить .obj файл под определенную платформу(контроллер) нужно скомпилировать исходники компилятором... а у VC свой компилятор, а уж потом линковать в .elf
    Voodoo прав
     
  12. SWIRL

    SWIRL New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    59
    а что за платформа?
     
  13. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Код (Text):
    1. чтобы получить .obj файл под определенную платформу(контроллер) нужно скомпилировать исходники компилятором... а у VC свой компилятор
    блин. я х.з. как ещё объяснить.
    File->New->Project->Smart Devices ... Selected SDKs - Pocket PC 2003. там выбираем процессорную архитектуру - ARMV4. под неё студия умеет собирать .obj файлы.

    вот кусок кода, сгенерированный студией:
    Код (Text):
    1. #include <math.h>
    2.  
    3. int Main()
    4. {
    5. 00011000  stmdb       sp!, {r4, lr}
    6. 00011004  sub         sp, sp, #0x14
    7.     int i = 0;
    8. 00011008  mov         r3, #0
    9. 0001100C  str         r3, [sp]
    10.     int k = 2;
    11. 00011010  mov         r3, #2
    12. 00011014  str         r3, k, #4
    13.     return  i + k * 100 - sin(i);
    14. 00011018  ldr         r0, [sp]
    15. 0001101C  ldr         r3, [pc, #0x78]
    16. 00011020  ldr         r3, [r3]
    17. 00011024  mov         lr, pc
    18. 00011028  mov         pc, r3
    19. 0001102C  bl          000110A0
    20. 00011030  str         r1, [sp, #0x10]
    21. 00011034  str         r0, [sp, #0xC]
    22. 00011038  ldr         r1, k, #4
    23. 0001103C  mov         r3, #0x64
    24. 00011040  mul         r2, r1, r3
    25. 00011044  ldr         r3, [sp]
    26. 00011048  add         r0, r3, r2
    27. 0001104C  ldr         r3, [pc, #0x48]
    28. 00011050  ldr         r3, [r3]
    29. 00011054  mov         lr, pc
    30. 00011058  mov         pc, r3
    31. 0001105C  ldr         r2, [sp, #0xC]
    32. 00011060  ldr         r3, [sp, #0x10]
    33. 00011064  ldr         lr, [pc, #0x2C]
    34. 00011068  ldr         r4, [lr]
    35. 0001106C  mov         lr, pc
    36. 00011070  mov         pc, r4
    37. 00011074  ldr         r3, [pc, #0x18]
    38. 00011078  ldr         r3, [r3]
    39. 0001107C  mov         lr, pc
    40. 00011080  mov         pc, r3
    41. 00011084  str         r0, [sp, #8]
    42. }
    осталось только привести этот бинарник в нормальный вид (в котором можно будет прошить железяку).
     
  14. SWIRL

    SWIRL New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    59
    а если мне нужна другая платформа, и у меня есть компилятор, линкер... вобщем весь набор + заголовочные файлы... можно все это приконектить к VC?
     
  15. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    SWIRL
    Пишешь Makefile... И далее по программе, ну ты понял. =) Если студии в Include Dirs добавить папку с твоими заголовочниками - будет еще и Intellisense, если повезет.

    cupuyc
    Я вот так и не понял - какой-такой нормальный вид тебя все-таки интересует? Конечная цель какая?
     
  16. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    прочитай название темы.
     
  17. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Все-таки попутаны форма и содержание. Да elf - это формат, но для того чтобы линкер записал туда правильное содержание, недостаточно просто obj - нужен SDK для компилятора, который содержит include c правильными вызовами внешних функций. Для VC такого SDK под Сименсы нет.
    Прошивок в формате elf я не видел, а говорить что прошивки современных устройств имеют формат HEX может только тот, кто ими всерьез не занимался.
    Слава богу и под АРМ и под МИПС давно существуют специальные средства, а gcc разумно использовать только под железяки с Линуксом.
    Пардон за offtop.
     
  18. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    каких внешних функций? что такое внешние функции? с каких пор линкер работает с инклудами?

    :))))) чтобы не знать про avrdude, нужно пользоваться каким-нибудь avrstudio всю свою сознательную жизнь и бояться попробовать хотябы что-то ещё.
     
  19. SWIRL

    SWIRL New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    59
    студия вобще-то определена - это VC, и разговор про "приляпывание" сторонних наборов к данной студии
    действительно ))) если все функции в самой прошивке )))
     
  20. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    1) Я теперь знаю два типа elf, используемых в прошивках - исполняемые модули для прошивок на основе Линукс и выполняемые модули для Сименса и иже с ними. В Сименсе точно не скажу, как идет связка с внешними функциями, но подозреваю, что либо жестко прописываются адреса, либо через таблицы адресов - подробности можно узнать по сылкам, что я приводил. Я и не говорил, что линкер работает с иклюдами. Компилер через инклюды вставляет в obj то что линкер правильно обработает. Никакой линкер не сделает из obj от VC работающий elf. Можно только повторить формат elf в лучшем случае, в худшем получим сообщение об ошибках.
    2) Про avrstudio мало что знаю. Я пользовался Keil-ом и там действительно HEX-формат, т.к. либо все пишешь сам на ассемблере, либо все нужные функции вбиваются в HEX линкером. Про это и речь. Либо в прошивке все реализовано внутри HEX - это было в прошлом веке, либо есть достаточно сложно организованная структура, к которой можно "приляпывать" свои самоделки, соблюдая при этом очень жесткие правила. VC умеет то, что он умеет.