Вопросы по компиляторам "типа GCC"

Учебный лабораторный комплекс SDK-2.0 на базе микроконтроллера LPC2292 с ядром ARM7TDMI-S # CAN 2.0, RS-485, RS-232, Ethernet 10/100Base-TX, IEEE 802.15.4 (ZigBee)

Вопросы по компиляторам "типа GCC"

Сообщение Shico » 23 июн 2008, 01:46

Ситуация такая: есть крохотная программа для стенда SDK-2.0 ("Hello World"). Так вот, как только к программе подключаются несколько стандартных h-ников (stdio.h, stdlib.h, stdarg.h) и вызывается, например, функция printf, компилятор GNU ARM выдает hex-файл размером более 100 Кб !!! А после компиляции того же самого проекта в Keil'е получается hex размером примерно 6 Кб !!! Разница потрясающая!

Я посмотрел по листингу - GNU ARM включил в код все, что только можно: функции для работы с динамической памятью, что-то про PLL и многое другое. В Keil'е же включается только то, что необходимо.

В чем может быть дело? Можно ли выкинуть все "ненужное" из hex-а и как это сделать?
"Раньше гусиными перьями писали вечные мысли, а теперь вечными перьями пишут гусиные мысли". В. Солоухин
Аватара пользователя
Shico
 
Сообщения: 301
Зарегистрирован: 06 апр 2008, 16:15
Откуда: Санкт-Петербург

Re: Вопросы по компиляторам "типа GCC"

Сообщение Интегральный вычислитель » 24 июн 2008, 10:59

Скорей всего дело не в компиляторе. Думаю, что тот C-runtime ( стандартная библиотека C ) который ты используешь является адаптацией glibc (GNU Lib C - логично, если в поставку GNU ARM включюат именно её). Эта реализация рассчитана на работу под операционкой, поддерживающей разделяемые библиотеки (динамическая компановка, *.lib.so).
Попоробуй использовать какие-нибудь другие реализации стандартной библиотеки С, к примеру:
uClibc (лежит в cvs ucLinux'a http://cvs.uclinux.org)
Diet Libc http://www.fefe.de/dietlibc/
sglibc , newlib
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

Re: Вопросы по компиляторам "типа GCC"

Сообщение invaisor » 24 июн 2008, 17:27

Раб Лампы писал(а):GNU Lib C - логично, если в поставку GNU ARM включюат именно её

Вообще в поставку GNUARM входит именно newlib, хотя да, вероятнее всего в данном случае была слинкована почему-то glibc.
Увидеть бы последовательность команд сборки, тогда б можно было сказать больше ;)
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Вопросы по компиляторам "типа GCC"

Сообщение NickBorisov » 24 июн 2008, 20:40

invaisor писал(а):Увидеть бы последовательность команд сборки, тогда б можно было сказать больше ;)


а разве это проблема?
Mess with the best, die like the rest. (c)
Аватара пользователя
NickBorisov
 
Сообщения: 115
Зарегистрирован: 04 май 2008, 18:21
Откуда: Санкт-Петербург

Re: Вопросы по компиляторам "типа GCC"

Сообщение Shico » 25 июн 2008, 00:38

NickBorisov писал(а):
invaisor писал(а):Увидеть бы последовательность команд сборки, тогда б можно было сказать больше ;)


а разве это проблема?

Особых проблем нет, кроме двух:
1. На работе есть интернет, но нет проекта с примером.
2. Дома есть проект с примером, но перебои с интернетом (проклятый провайдер :evil: ).

:)

Но вот интернет появился - попробую выложить пример...

SDK_2_0_UART_test_GNU.rar
Проблемный пример
(36.45 Кб) Скачиваний: 337

...кажется, получилось... :D
"Раньше гусиными перьями писали вечные мысли, а теперь вечными перьями пишут гусиные мысли". В. Солоухин
Аватара пользователя
Shico
 
Сообщения: 301
Зарегистрирован: 06 апр 2008, 16:15
Откуда: Санкт-Петербург

Re: Вопросы по компиляторам "типа GCC"

Сообщение Интегральный вычислитель » 16 июл 2008, 22:59

Ну что, кто нибудь попробовал uClibc или diet libc?

Вообщем я почитал немного про них... Все эти рантаймы предназначены для запуска под linux/ucLinux(без MMU), поэтому скажем функции серии printf будут поддерживать такие фичи как перенаправление потоков, запись в файл. Нет смысла сравнивать их с Keil вариантом, он сильно урезан и предназначен как раз для вывода текста в последовательный канал. Для gnu arm такую функцию можно написать самостоятельно, или достать какой-нибудь готовый вариант.
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

Re: Вопросы по компиляторам "типа GCC"

Сообщение Роман Химов » 16 июл 2008, 23:57

Интегральный вычислитель писал(а):Ну что, кто нибудь попробовал uClibc или diet libc?

Вообщем я почитал немного про них... Все эти рантаймы предназначены для запуска под linux/ucLinux(без MMU), поэтому скажем функции серии printf будут поддерживать такие фичи как перенаправление потоков, запись в файл. Нет смысла сравнивать их с Keil вариантом, он сильно урезан и предназначен как раз для вывода текста в последовательный канал. Для gnu arm такую функцию можно написать самостоятельно, или достать какой-нибудь готовый вариант.

Для работы на голом железе надо пробовать Newlib. Я с ним GCC собирал ручками, но попользовать не успел. uClibc и DietLibc это, да, уже для откормленных пингвинов.
--
Греби и улыбайся!
Всё будет хорошо. Готовьтесь...
Роман Химов
 
Сообщения: 53
Зарегистрирован: 06 май 2008, 11:55
Откуда: 10 км к востоку от Питера


Вернуться в SDK 2.0

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron