|
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 3 2009, 13:35
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(klen @ Sep 3 2009, 17:29)  у меня отладка работает на ура, даже в инлайн конструкторы заходить.
могу ВСЕ в кучу запаковатьь и выложить. сможете сравнить. Выкладывайте, будет интересно. А джитаг какой вы используете? Кстати вот еще интересная ссылка на исходники для их отладочной платы, много чего интересного: http://support.code-red-tech.com/CodeRedWiki/RDB1768Support
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Oct 1 2009, 11:15
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Vitaliy_ARM @ Sep 4 2009, 16:06)  Какая-то ерудна с линкером. Вот не прошло и пол года: http://electronix.ru/forum/lofiversion/index.php/t58320.htmlа вектора стали называться по другому  В общем линкер как линкер. Все нормально. Геммор был со средой разработки. Мне на диске прислали версию среды 2.0.10. Я ее проабдейтил через нет до 2.0.16. После почти двухнедельной переписки, когда один и тот же проект у меня не работал, а у службы поддержки работал.  , они мне прислали ссылку на последнюю версию, не требующую абдейтов: ftp://code-red-tech.com/RedSuite2/red_suite_2.exeИтог такой, что среда, видимо, впоймала глюка при абдейте. Скачал и все стало сразу шеколадно на 90%  . Нерабочий проект стал сразу рабочим. если вдруг кому то понадобится ответ на вопрос, как разместить константу во флешь по указанному адресу: В коде так: Код const BYTE OurIpAddr[4] __attribute__ ((section(".ipaddr"))) = {192,168,1,4}; В скрипте линкера так: Код .ipaddr : { . = ALIGN(4); KEEP(*(.ipaddr)) } > IP_MEM Однако, как оказалось, еще рано радоваться. У меня все проекты написаны на C++. Создаю шаблон проекта на C++ (в среде заложена такая возможность). И классы там не компилятся!!! Пишу в службу поддержки, а они и говорят: Код Hi,
You need to link with a different library - use Newlib (nohost)or Newlib (semihost). See: http://support.code-red-tech.com/CodeRedWiki/CLibrary
Also, there is a mistake in the startup code for C++. Please remove the lines: LDR r3, .def__libc_init_array CMP r3, #0 BEQ .setup_main in .cppinit in cr_startup.s Действительно, поменял строчки, где эти библиотеки подключаются на GROUP(libgcc.a libc.a libcr_newlib_nohost.a) , в все сразу стало хорошо. Проект скомпилировался и на C++! Однако компилятор написал, что кода получилось 28кБ вместо примерно 10кБ  (столько занимает аналог проекта на языке C, который был сделан мной для сравнения). Попытался подключить вторую версию либ, код примерно такой же. Вопрос, можно ли где-то прописать, чтобы компилятор вкомпиливал либы, только те, которые используются проектом?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Oct 2 2009, 15:38
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Итог такой: про C и Cpp Newlib is a complete C/C++ library, including *every* function from the standard. For C applications, we have developed Redlib, which is a smaller library designed for embedded applications, an is significantly smaller than Newlib. Unfortunately, we have developed it for C and not C++ - very, very few customers use C++ in an embedded environment. C++ сразу съедает 20кБ кода, размещая туда свои либы. В общем среда чуть сложнее, чем яр. И гораздо проще, нежели самопальное подключение связки GCC+Eclipse+GDB с джитагами на FTDI2232. Пользоваться можно. Еще удивило отсутствие мейк файлов. Среда сама включает все файлы, которые она видит в дереве проекта при компиляции. Появился жизненно важный вопрос по компилятору GCC. Как задать неинициализируемую переменную (не могу найти подходящего _attribute_)?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Oct 2 2009, 15:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Vitaliy_ARM @ Oct 2 2009, 19:38)  Появился жизненно важный вопрос по компилятору GCC. Как задать неинициализируемую переменную (не могу найти подходящего _attribute_)? Код int i; ? Для каких целей? Сами её хотите инициализировать?
|
|
|
|
|
Oct 2 2009, 15:51
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(Petka @ Oct 2 2009, 19:44)  Код int i; ? Для каких целей? Сами её хотите инициализировать? typedef struct Abcd { int a; int b; int c; }XYZ; в коде: XYZ str; <- инициализируется нулями. Цель простая, в батаеечной памяти лежат данные, которые нельзя затрать прошивкой при отладке.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Oct 2 2009, 15:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(Vitaliy_ARM @ Oct 2 2009, 19:51)  Цель простая, в батаеечной памяти лежат данные, которые нельзя затрать прошивкой при отладке. Понятно. Тогда вам требуется изучить скрипты линкера. Воспользуйтесь поиском по форуму. Неоднократно обсуждалось. P.S.Или можно воспользоваться обращением к структуре по адресу, где адрес вручную указывает на батареечную память. Но этот способ идеологически не совсем правильный. Код XYZ* str_ptr=(XYZ*)0xFEED; // никакой памяти не обнулится.
val_a = str_ptr->a; // обращение по адресу.
|
|
|
|
Сообщений в этой теме
Vitaliy_ARM Code Red Suit v2.0 Sep 1 2009, 14:11 AHTOXA Цитата(Vitaliy_ARM @ Sep 1 2009, 20:11) К... Sep 1 2009, 17:54 Vitaliy_ARM Цитата(AHTOXA @ Sep 1 2009, 21:54) Ну а в... Sep 2 2009, 08:22  gotty Цитата(Vitaliy_ARM @ Sep 2 2009, 11:22) ... Sep 2 2009, 10:46   Vitaliy_ARM Цитата(gotty @ Sep 2 2009, 14:46) Вы уст... Sep 2 2009, 10:58 klen за что собсно денги уплачены?
за отладчик? причем... Sep 2 2009, 11:30 Vitaliy_ARM Цитата(klen @ Sep 2 2009, 15:30) за что с... Sep 2 2009, 12:05 klen вижу плагин, котрый парсит регисты переферии - это... Sep 2 2009, 12:21 Vitaliy_ARM Цитата(klen @ Sep 2 2009, 16:21) Вижу пла... Sep 2 2009, 12:31  klen ыыы
мож попробуем выдрать "ихний плагин... Sep 3 2009, 06:30   Vitaliy_ARM Цитата(klen @ Sep 3 2009, 10:30) ыыы
м... Sep 3 2009, 10:08    Vitaliy_ARM Понял что вектора прерываний находятся полностью в... Sep 3 2009, 12:54     demiurg_spb Цитата(Vitaliy_ARM @ Oct 2 2009, 19:38) П... Oct 3 2009, 14:51      Vitaliy_ARM Цитата(demiurg_spb @ Oct 3 2009, 18:51) Д... Oct 5 2009, 08:32      Vitaliy_ARM Цитата(demiurg_spb @ Oct 3 2009, 18:51) Д... Oct 5 2009, 14:20 Flexz А как у вас секция "батареечной памяти" ... Oct 5 2009, 20:24 klen я так понимаю все это области ОЗУ?
ход мыслей так... Oct 6 2009, 07:10  Make_Pic Цитата(klen @ Oct 6 2009, 10:10) я так по... Oct 6 2009, 13:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|