реклама на сайте
подробности

 
 
> Code Red Suit v2.0, Среда разработки на базе эклипса
Vitaliy_ARM
сообщение Sep 1 2009, 14:11
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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. и гигобайтная флешка rolleyes.gif с фирменным лабелом.
Все проекты написаны на C, компилируются и работают сностно. При создании
проекта на С, автоматически генерируются 3 файла для компановщика.

При создании проекта на C++ так же генерятся три файла скрипта компановщика, в которых отсутствуют секции для конструкторов и прочее. cranky.gif
При использовании обычного класса компановщик начинает ругаться непонятными ошибками:
Код
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
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение Sep 3 2009, 13:29
Сообщение #2


бессмертным стать можно тремя способами
*****

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



у меня отладка работает на ура, даже в инлайн конструкторы заходить.

могу ВСЕ в кучу запаковатьь и выложить. сможете сравнить.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 3 2009, 13:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(klen @ Sep 3 2009, 17:29) *
у меня отладка работает на ура, даже в инлайн конструкторы заходить.

могу ВСЕ в кучу запаковатьь и выложить. сможете сравнить.


Выкладывайте, будет интересно. А джитаг какой вы используете?

Кстати вот еще интересная ссылка на исходники для их отладочной платы, много чего интересного: http://support.code-red-tech.com/CodeRedWiki/RDB1768Support


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 4 2009, 12:06
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Какая-то ерудна с линкером. Вот не прошло и пол года: http://electronix.ru/forum/lofiversion/index.php/t58320.html
а вектора стали называться по другому 07.gif


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Oct 1 2009, 11:15
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(Vitaliy_ARM @ Sep 4 2009, 16:06) *
Какая-то ерудна с линкером. Вот не прошло и пол года: http://electronix.ru/forum/lofiversion/index.php/t58320.html
а вектора стали называться по другому 07.gif

В общем линкер как линкер. Все нормально. Геммор был со средой разработки.
Мне на диске прислали версию среды 2.0.10. Я ее проабдейтил через нет до 2.0.16.
После почти двухнедельной переписки, когда один и тот же проект у меня не работал, а у службы поддержки работал. smile3046.gif ,
они мне прислали ссылку на последнюю версию, не требующую абдейтов: ftp://code-red-tech.com/RedSuite2/red_suite_2.exe
Итог такой, что среда, видимо, впоймала глюка при абдейте.
Скачал и все стало сразу шеколадно на 90% 08.gif . Нерабочий проект стал сразу рабочим.
если вдруг кому то понадобится ответ на вопрос, как разместить константу во флешь по указанному адресу:
В коде так:
Код
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кБ salmari.gif (столько занимает аналог проекта на языке C, который был сделан мной для сравнения).
Попытался подключить вторую версию либ, код примерно такой же.
Вопрос, можно ли где-то прописать, чтобы компилятор вкомпиливал либы, только те, которые используются проектом?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Oct 2 2009, 15:38
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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.
Пользоваться можно. Еще удивило отсутствие мейк файлов. Среда
сама включает все файлы, которые она видит в дереве проекта при компиляции. smile.gif

Появился жизненно важный вопрос по компилятору GCC.
Как задать неинициализируемую переменную (не могу найти подходящего _attribute_)?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Oct 3 2009, 14:51
Сообщение #7


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Vitaliy_ARM @ Oct 2 2009, 19:38) *
Появился жизненно важный вопрос по компилятору GCC.
Как задать неинициализируемую переменную (не могу найти подходящего _attribute_)?
Для avr-gcc так:
Код
uint8_t foo __attribute__((section(".noinit")));


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Oct 5 2009, 14:20
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(demiurg_spb @ Oct 3 2009, 18:51) *
Для avr-gcc так:
Код
uint8_t foo __attribute__((section(".noinit")));


Похоже , что эта конструкция в ARM GCC задается так:
Код
int i  __attribute__ ((section("nocommon")));

Так не инициализируются обычные переменные.

Но у меня структура уже сидит в своей секции и инициализируется нулями. 01.gif


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Petka   Цитата(Vitaliy_ARM @ Oct 2 2009, 19:38) П...   Oct 2 2009, 15:44
||- - Vitaliy_ARM   Цитата(Petka @ Oct 2 2009, 19:44) Кодint ...   Oct 2 2009, 15:51
||- - Petka   Цитата(Vitaliy_ARM @ Oct 2 2009, 19:51) Ц...   Oct 2 2009, 15:59
|- - Vitaliy_ARM   Цитата(demiurg_spb @ Oct 3 2009, 18:51) Д...   Oct 5 2009, 08:32
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016