|
Code Red Suit v2.0, Среда разработки на базе эклипса |
|
|
|
Sep 1 2009, 14:11
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Приобрели эту среду, так как очень хотелось иметь среду на базе эклипса с нормальным дебагером. Среда на базе эклипса 3.3 и гнушного компилятора gcc 4.2.0. Этот вариант гораздо бюджетнее IAR. О нем можно почитать здесь: www.code-red-tech.com В кратце о среде: Джитаг собран на FT2232, максимальная скорость - 6МГц. По сравнению с IAR, работает заметно медленнее. Геммора с настройкой проекта практически нет (C-проекта). На мой взгляд, очень удачное решение для тех, кому нравится эклипс. Со средой вместе идут несколько проектов, в частности для LPC17xx и LPC23xx/24xx. и гигобайтная флешка  с фирменным лабелом. Все проекты написаны на C, компилируются и работают сностно. При создании проекта на С, автоматически генерируются 3 файла для компановщика. При создании проекта на C++ так же генерятся три файла скрипта компановщика, в которых отсутствуют секции для конструкторов и прочее. При использовании обычного класса компановщик начинает ругаться непонятными ошибками: Код make all Building target: BootCR.axf Invoking: MCU C++ Linker arm-none-eabi-c++ -nostdlib -Xlinker --gc-sections -Xlinker -Map=BootCR.map -mcpu=arm7tdmi -T BootCR.ld -o"BootCR.axf" ./src/DoCmd.o ./src/Emac.o ./src/Fldr.o ./src/PortIO.o ./src/Rc6.o ./src/Stip.o ./src/TestPins.o ./src/cr_startup.o ./src/main.o c:/code_red/red_suite/tools/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib\libc.a(lib_a-abort.o): In function `abort': abort.c:(.text+0xc): undefined reference to `_exit' c:/code_red/red_suite/tools/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o): In function `_getpid_r': signalr.c:(.text+0x4): undefined reference to `_getpid' c:/code_red/red_suite/tools/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o): In function `_kill_r': signalr.c:(.text+0x2c): undefined reference to `_kill' c:/code_red/red_suite/tools/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text+0x18): undefined reference to `_sbrk' collect2: ld returned 1 exit status make: *** [BootCR.axf] Error 1 Был у меня еще один проект, который собирался в gcc ранней версии (уже не помню в какой). Путем колдовства и добавления секций, таких как .сtors и .dtors результата не принесло, только ошибки сменились. Потом засунул скрипт от старого проекта линкеру. Написал, что все скомпилилось с размером кода 0. Вывод пока такой, что ребята не доделали поддержку C++ (генерятся неправильные файлы линковщика). Возможность вставлять свой файл есть. Приведу изначальный скрипт компановщика. Может кто знает, чего там не хватает, может кто-то уже использует эту среду с С++?
Прикрепленные файлы
Debug.zip ( 1.58 килобайт )
Кол-во скачиваний: 28
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 1 2009, 17:54
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Vitaliy_ARM @ Sep 1 2009, 20:11)  Код c:/code_red/red_suite/tools/bin/../lib/gcc/arm-none-eabi/4.3.2/../../../../arm-none-eabi/lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text+0x18): undefined reference to `_sbrk' Никакой code red не избавит от необходимости изучать кишочки gcc  Попробуйте добавить в проект вот этот файлик:
syscalls.rar ( 1.2 килобайт )
Кол-во скачиваний: 351Это минимальный набор системных вызовов. В каком-нибудь своём .cpp определите Код extern "C" int putChar(int ch); int putChar(int ch) { uart0.putch(ch); return ch; } Хотя скорее всего всё это уже есть в какой-нибудь их библиотеке, надо просто указать в какой. Цитата Приведу изначальный скрипт компановщика. Может кто знает, чего там не хватает, может кто-то уже использует эту среду с С++? Ну ctors там есть. Возможно там сделано иначе, через .init_array Попробуйте что-то вроде этого: Код .text : { __ctors_start__ = .; *(.init_array) __ctors_end__ = .; __dtors_start__ = .; __dtors_end__ = .; KEEP(SORT(*)(.init_array)) . = ALIGN(4); *(.text) /* remaining code */ *(.text.*) /* remaining code */ *(.rodata) /* read-only data (constants) */ *(.rodata*)
*(.eh_frame_hdr) *(.eh_frame) *(.ARM.extab* .gnu.linkonce.armextab.*) *(.gcc_except_table) *(.eh_frame_hdr) *(.eh_frame)
*(.glue_7) *(.glue_7t) . = ALIGN(4); } >FLASH секции .ctors и .dtors уберите. Вот тут про .eh_frame. Ну а вообще, раз купили, то можно напрячь продавца, наверное
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 2 2009, 08:22
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(AHTOXA @ Sep 1 2009, 21:54)  Ну а вообще, раз купили, то можно напрячь продавца, наверное  Они сильно не напрягаются. В терре сказали что это еще пока группа интузиастов. Пробовал перед покупкой написать им на маил, ответа не было. Потом раза три пытался позвонить. Трубку не брали. Повторно написал на маил, с вопросом как купить? Написали, что покупайте джитаг в терраэлектронике и дали ссылку, а лицензию на программу у нас  . А вообще впечатления от компилера: проект был скомпилирован в IAR, занимал 7кБ, (директива оптимизации - Speed) после перенесения его на язык С и компиляции в этом компиляторе, проект стал занимать 10кБ (директива оптимизации -O3)
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 2 2009, 10:58
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(gotty @ Sep 2 2009, 14:46)  Вы устанавливаете оптимизацию по скорости, меняете проект и сравниваете обьем? Где логика? Просто в этом компиляторе в комбобоксе нету -Os. Прописал в ручную, один фиг, все равно результат тот же.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 2 2009, 11:30
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912

|
за что собсно денги уплачены? за отладчик? причем тут эклипс? за GCC , так он вообще ничего не стоит. за эклипс, а чем он отличается от бесплатного? единственно что могу предположить - библиотеки! больше незачто. но по описанию автра не сложилось за это впечатления.  забавно вопросы. Вы упоминули о комбобоксе в котором нет -Os, видимо авторы продукта всетаки написали свой плагин в эклипс, это так? Скриншот этого можно глянуть. GCC 4.2.0 gcc -v че выдает? чей сборки? что в качестве libc предложено? собственное чтото как у CrossWorks ( в чем сомневаюсь) или newlib, если newlib то какой версии, какой версии GDB?
|
|
|
|
|
Sep 2 2009, 12:05
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(klen @ Sep 2 2009, 15:30)  за что собсно денги уплачены? Мы купили пока джитаг. Среда работает с ограничением 8кБ. Она продается отдельно и стоит порядка 1000$ Деньги берут за плагин эклипса и за то, что у Вас все будет работать сразу Цитата(klen @ Sep 2 2009, 15:30)  за эклипс, а чем он отличается от бесплатного? Эклипс с их плагином полностью настроен на работу с их джитагом. Так же среда позволяет полноценно просмтривать регистры процессоров, внутреннюю память и т.п. в божеских окнах. Цитата(klen @ Sep 2 2009, 15:30)  GCC 4.2.0 gcc -v че выдает? чей сборки? Выложил скриншот консоли gcc.jpeg Цитата(klen @ Sep 2 2009, 15:30)  что в качестве libc предложено? собственное чтото как у CrossWorks ( в чем сомневаюсь) или newlib, если newlib то какой версии, какой версии GDB? Скажите как посмотреть, посмотрю.
Эскизы прикрепленных изображений
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 3 2009, 10:08
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(klen @ Sep 3 2009, 10:30)  ыыы мож попробуем выдрать "ихний плагин", поглядеть ... все остально даром ненадо. Можно попробовать. У меня постоянно был геммор с отладчиком. GDB сервер постоянно вылетал, то сбоил, то еще чего нибудь выдавал, например жмешь перепрыгнуть через функцию, а он туда залетает и потом вешается. Джитаг от Olimex. Сносно работал j-link со своим GDB сервером, но тоже не все было гладко. Короче говоря я надолбался с бесплатным софтом, но так нормально и не настроил. Думаю тут надо сначала состыковать это добро между собой, чтобы не глючило. А потом браться за плагин. В коде реде вроде бы свой GDB сервер, с их джитагом вроде работает более или менее. Как появится возможность, постараюсь залить на местный фтп эту среду. Сейчас порюсь с такой проблемой, наверное это больше к линкеру относится. Переписываю свой бутлодер. Где находятся вектора прерываний в этом коде? (перенос KEEP(*(.isr_vector)) в другую секцию, размещенную по нулевому адресу результата не принесло, может чего упустил?). Цитата .text : { KEEP(*(.isr_vector)) *(.text*) *(.rodata*) KEEP(*(.init)); KEEP(*(.fini)); } > FLASH Вот еще нашел такой комментарий в скрипте линкера: Цитата /* Note: (ref: M0000066) Moving the stack down by 16 is to work around a GDB bug. This space can be reclaimed for Production Builds. */
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 3 2009, 12:54
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Понял что вектора прерываний находятся полностью в KEEP(*(.isr_vector). Однако .text должен находиться в в одной секции и после KEEP(*(.isr_vector). Код .boot : { KEEP(*(.isr_vector)); *(.text*) *(.rodata*) } > BOOTMEM Если сделать так: Код .boot : { KEEP(*(.isr_vector)); } > BOOTMEM
.text : { *(.text*) *(.rodata*) } > MFlash512 То дебагер улетает в undefine handler. Получается что вектор резета указывает не на начало .text, а непонятно куда. В чем может быть дело, как правильно разнести вектора и основную программу?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Sep 3 2009, 13:35
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(klen @ Sep 3 2009, 17:29)  у меня отладка работает на ура, даже в инлайн конструкторы заходить.
могу ВСЕ в кучу запаковатьь и выложить. сможете сравнить. Выкладывайте, будет интересно. А джитаг какой вы используете? Кстати вот еще интересная ссылка на исходники для их отладочной платы, много чего интересного: http://support.code-red-tech.com/CodeRedWiki/RDB1768Support
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|