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

 
 
85 страниц V  « < 9 10 11 12 13 > »   
Reply to this topicStart new topic
> свежак KGP win32/arm/avr/mips/m68k, GNU tools chain
klen
сообщение Apr 14 2009, 19:05
Сообщение #151


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

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



свежак для Coretex-M3

довольно много свежего :
ветка gcc 4.5.0
новый релиз newlib 1.17.0

от себя добавил мультилиб специально оптимизированый под Cortex-M3, в нем немного поэксперементировал с оптимизацией
Недельку потестил на stm32f103rbt, крутим подтюненый FreeRTOS 5.2.0 c 6 задачками USB,UART, софтварный ARINC, debug trace facility... все работает без глюков.
пробуйте smile.gif

http://www.klen.org/Files/DevTools/kgp_cor...1.0.20090413.7z

поскольку сборка только для кодогенерации под Cortex-M3 был проделан эксперемент : максимально компактный дистрибутив, для этого удалено все лишнее. В итоге сборка весит всего 7.07 мегабайт.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 30 2009, 19:29
Сообщение #152


фанат дивана
******

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



Что-то ругается он у меня, пишет

Код
ld.exe: cannot find -lgcc


Пустой проект, никаких инклюдов.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 31 2009, 16:34
Сообщение #153


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



а нельзя ли собирать и под Linux ?
Go to the top of the page
 
+Quote Post
klen
сообщение May 31 2009, 19:21
Сообщение #154


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

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



2_AHTOXA
проверьте наличие файла libgcc.a в дериктории
ZZZ\lib\gcc\arm-kgp-elf\4.5.0\cortex-m3
где ZZZ - то куда Вы из архива все сложили.

2_ukpyr
в каком смысле под Linux, linux-target GCC или linux-host ?
короче для какой платформы код генерить это таргет, а на какой это хост.
Go to the top of the page
 
+Quote Post
ukpyr
сообщение May 31 2009, 19:45
Сообщение #155


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



smile.gif хост конечно. Linux x86-32bit.
сейчас пользуюсь этим : http://www.codesourcery.com/sgpp/lite/arm/...?@template=lite
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 31 2009, 22:37
Сообщение #156


фанат дивана
******

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



Цитата(klen @ Jun 1 2009, 01:21) *
2_AHTOXA
проверьте наличие файла libgcc.a в дериктории
ZZZ\lib\gcc\arm-kgp-elf\4.5.0\cortex-m3
где ZZZ - то куда Вы из архива все сложили.


Хм. Всё заработало... Наверное я в прошлый раз плохо вычистил предыдущую версию:-)
Прошу прощения за ложную тревогу.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 3 2009, 16:12
Сообщение #157


фанат дивана
******

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



Продолжаю ковыряния:-) Дошёл до C++. Не работаетsad.gif

Код
>arm-kgp-elf-g++ -v -c main.cpp
Using built-in specs.
Target: arm-kgp-elf
Configured with: ../../src/gcc/configure ../../src/gcc/configure --prefix=/kgp_arm
--target=arm-kgp-elf --host=i686-pc-mingw32 --build=i686-pc-mingw32
--disable-nls --disable-shared --disable-threads --disable-libssp
--disable-libmudflap --disable-libgomp --enable-interwork --enable-multilib
--with-newlib --with-headers=../../src/newlib/newlib/libc/include
--with-float=soft --enable-languages=c,c++,fortran -v CC='distcc gcc -pipe'
Thread model: single
gcc version 4.4.0 20090207 (experimental) (GCC)
Klen's GCC package (KGP) for ARM/elf platform
see latest build in www.klen.orgCOLLECT_GCC_OPTIONS='-v' '-c' '-mfloat-abi=soft'

cc1plus -quiet -v -iprefix d:\kgp\bin\../lib/gcc/arm-kgp-elf/4.4.0/
-D__USES_INITFINI__ main.cpp -quiet -dumpbase main.cpp -mfloat-abi=soft -auxbas
e main -version -o C:/Temp/cci3DU9c.s
arm-kgp-elf-g++.exe: CreateProcess: No such file or directory


cc1plus-а нет в наборе. И почему 4.4.0 ?


Очень бы хотелось чтоб это заработало, потому что с Вашей сборкой у меня складываются отношения гораздо более удачно, чем со сборкой от CodeSourcery:)

------------
Ага, вот оно что. Вернул из заначки папки
\lib\gcc\arm-kgp-elf\4.4.0\
и
\libexec\gcc\arm-kgp-elf\4.4.0\

и файлы

\arm-kgp-elf\lib\libc.a
\arm-kgp-elf\lib\libm.a
\arm-kgp-elf\lib\libstdc++.a

- заработало. Даже ножкой дрыгаетsmile.gif
Но меня немного смущает вся эта мешанина.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 3 2009, 19:10
Сообщение #158


фанат дивана
******

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



Цитата(AHTOXA @ Jun 3 2009, 22:12) *
- заработало. Даже ножкой дрыгает smile.gif


Не, это я поспешил. Объекты не создаются, конструкторы не вызываются... Ножкой дрыгает только до первого обращения к какому-либо объекту.
sad.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 3 2009, 20:25
Сообщение #159


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(AHTOXA @ Jun 3 2009, 22:10) *
Не, это я поспешил. Объекты не создаются, конструкторы не вызываются...
Объекты глобальные? Если да, то стартап свой или есть что-то в библиотеке? Если свой - есть ли в нем собственно вызов конструкторов?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 3 2009, 20:59
Сообщение #160


фанат дивана
******

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



Объекты глобальные. Стартап свой, вернее, из примера 4-BlinkLeds порта scmRTOS под STM32 под gcc. (который c http://mercurial.intuxication.org/hg/scmrtos-cm3-gcc). Конструкторы вызываются. При компиляции тулчейном от CodeSourcery (arm-none-eabi-) пример даже работает, правда только с оптимизацией -O0. Меня это смущаетsmile.gif

А arm-kgp-elf- здесь оплошал. ( Или яsmile.gif )


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Jun 4 2009, 03:23
Сообщение #161


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

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



Цитата(AHTOXA @ Jun 4 2009, 00:59) *
Объекты глобальные. Стартап свой, вернее, из примера 4-BlinkLeds порта scmRTOS под STM32 под gcc. (который c http://mercurial.intuxication.org/hg/scmrtos-cm3-gcc). Конструкторы вызываются. При компиляции тулчейном от CodeSourcery (arm-none-eabi-) пример даже работает, правда только с оптимизацией -O0. Меня это смущаетsmile.gif

А arm-kgp-elf- здесь оплошал. ( Или яsmile.gif )


не удивительно
я C++ ниразу не тестировал - тока C/fortran в реальных текущих разработках.
МЫСЛЬ испоьзовать С++ в микроконтроллерах просто ниразу НЕ ВЛЕЗЛА В МОЙ МОСК - РАЗМЕР ПРЕВЫШАЕТ ... куда катится мир?

итак. невызываются конструкторы? конструкторы каких объектов, как размещаете - cтатически или new?
посмотрим щас..

-------------------------------------------------

посмотрел:

#include "cplus_test.h"

#include "stm32f10x_gpio.h"

extern uint32_t _bss_end_ ;
uint32_t end = _bss_end_ ;

class blinker
{
private:
uint32_t ftimeout ;
uint32_t ftick_count ;

public:
blinker(uint32_t timeaut)
{
ftimeout = timeaut ;
}

~blinker()
{
};

void count_loop(uint32_t count)
{
ftick_count = xTaskGetTickCount();
for ( uint32_t acount = 0 ; acount < count ; acount ++ )
{
GPIOC->BRR = 0x0001000;
vTaskDelayUntil( &ftick_count , ftimeout);
GPIOC->BSRR = 0x0001000;
vTaskDelayUntil( &ftick_count , ftimeout);
}
}

void permanent_loop()
{
ftick_count = xTaskGetTickCount();
while(1)
{
GPIOC->BRR = 0x0001000;
vTaskDelayUntil( &ftick_count , ftimeout);
GPIOC->BSRR = 0x0001000;
vTaskDelayUntil( &ftick_count , ftimeout);
}
}
};


void test_constr_destr()
{
NOP();
blinker bl(50) ;
bl.count_loop(100) ;
NOP();
}

volatile portTickType tick_count ;
xTaskHandle cplus_debug_led_task_handle ;
void cplus_debug_led_task_code (void* param)
{
(void)param ;
blinker bl(250) ;
NOP();
test_constr_destr() ;
NOP();
bl.permanent_loop() ;


}


вот этот код работает
объекты статически создаются (в таком случае явно вызывается конструктор)
и даже работают
деструкторы не вызываются при выходе из функции в стеке которых они создались (причины на то есть)

тоесть глобальные оъекты можно использовать. тока зачем это нада? если все доелать(деструкторы) то в флеш еще потянется куча кода из libstdc++ и libsupc++ который обеспечивает например вызов деструкторов оъектов созданых в стеке функций... с этого места начнется полный завал.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 4 2009, 06:48
Сообщение #162


фанат дивана
******

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



Цитата(klen @ Jun 4 2009, 09:23) *
не удивительно
я C++ ниразу не тестировал - тока C/fortran в реальных текущих разработках.
МЫСЛЬ испоьзовать С++ в микроконтроллерах просто ниразу НЕ ВЛЕЗЛА В МОЙ МОСК - РАЗМЕР ПРЕВЫШАЕТ ... куда катится мир?

Ненене:-) Если аккуратно, то ничего не превышает, даже наоборот! Минимальный пример scmRTOS сильно меньше минимального примера FreeRtos:) Объекты -- статические, глобальные. В смысле - совсем глобальные, когда объект объвлен вне функции. То есть должен создаваться при инициализации. Плюс маленькие объектики на стеке, типа TCritSect. Они, конечно, должны разрушаться при выходе из функции. По-моему, стандартные библиотеки тут не при делах.
Цитата
вот этот код работает
объекты статически создаются (в таком случае явно вызывается конструктор)
и даже работают
деструкторы не вызываются при выходе из функции в стеке которых они создались (причины на то есть)

Как компилировали? Голым свежаком 4.5.0? Или с либами от 4.4.0? То, что не вызываются деструкторы - это грустно. Если уж для MSP или даже для AVR это не является слишком тяжёлым бременем, то уж для АРМов-то это вообще семечкиsmile.gif
Цитата
тоесть глобальные оъекты можно использовать. тока зачем это нада? если все доелать(деструкторы) то в флеш еще потянется куча кода из libstdc++ и libsupc++ который обеспечивает например вызов деструкторов оъектов созданых в стеке функций... с этого места начнется полный завал.

Почему "доделывать"? Я не очень понимаю всю кухню, но разве в gcc этого нет?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 4 2009, 07:21
Сообщение #163


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(klen @ Jun 4 2009, 06:23) *
если все доелать(деструкторы) то в флеш еще потянется куча кода из libstdc++ и libsupc++ который обеспечивает например вызов деструкторов оъектов созданых в стеке функций... с этого места начнется полный завал.
Этот код тянется для деструкторов глобальных объектов. Почему именно этот код - не спрашивайте, не знаю. Там, действительно, подтягиваются и функции работы с файлами и куча еще всего кило на 20 примерно. Но обходится это довольно просто - не нужно делать деструкторы в глобальных объектах. Ибо они и не нужны - нормальная embedded-программа из main() не выходит и, значит, деструкторы никогда и не будут вызваны.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
klen
сообщение Jun 4 2009, 12:26
Сообщение #164


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

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



Цитата(Сергей Борщ @ Jun 4 2009, 11:21) *
Этот код тянется для деструкторов глобальных объектов. Почему именно этот код - не спрашивайте, не знаю. Там, действительно, подтягиваются и функции работы с файлами и куча еще всего кило на 20 примерно. Но обходится это довольно просто - не нужно делать деструкторы в глобальных объектах. Ибо они и не нужны - нормальная embedded-программа из main() не выходит и, значит, деструкторы никогда и не будут вызваны.


по поводу деструкторов погляжу как это все работает.

я уверен что все работает тока нада уметь ему об этом сказать!
Go to the top of the page
 
+Quote Post
klen
сообщение Jun 7 2009, 20:00
Сообщение #165


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

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



потратил время исследования вопросов from AHTOXA

как и я думал все работает, а именно:
глобальные объекты работают.
локальыне на стеке работают
динамические оъекты ТОЖЕ работают (new/delete). сделел обертки для api FreeRTOS, собрал и протестил на олимексовской STM32-H103

под словом работают имеется ввиду вызов конструктора и деструктора в соответствующие моменты.

чтоб все это заработала нада сделать определенные подготовительние телодвижения, по объему превышающие оные для проекта на чистом C.

в ближайште дни выложу свежак в котором будет новый фича - оптимизатор циклов Graphite. заодно распишу че де как C++ заюзать.
Go to the top of the page
 
+Quote Post

85 страниц V  « < 9 10 11 12 13 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 22:43
Рейтинг@Mail.ru


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