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

 
 
 
Reply to this topicStart new topic
> glibc для ARM7, посоветуйте альтернативу
gmax
сообщение Dec 8 2005, 16:26
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 25-08-05
Из: Украина, Харьков
Пользователь №: 7 954



Посоветуйте альтернативу glibc. Основное требование - малый размер.
Спасибо
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 8 2005, 16:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Полагаю, что полезных альтернатив скорее всего нет. Буквально на днях с целью научиться чему полезному рассматривал исходники всех ARM C библиотек до которых мог дотянуться - все они как близнецы братья писаны на С без особых изысков :-(. ASMа считай нет. Посему и результат зависеть будет практически только от компилятора их компилирующего. А какие проблемы с размером? Неужели Ваша программа состоит исключительно из вызовов _разнообразных_ clib функций. Обычно сколь-нибудь заметного веса десяток используемых библиотечных функций не имееют.
Как паллиатив можно попробовать использовать исходики библиотеки для написания чего-либо облегченного, но работоспособного в Ваших конкретных условиях.
С целью попробовать повысить бвстродействие и потренироваться, наверное буду в начале следующего года переписывать на ASM (но под IAR) нескоторые библиотечные функции, начиная
с простейших типа memcpy(). Если,что найдете что ASMовское - сообщите пожалуйста.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 8 2005, 17:34
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



zltigo, что касается ИАРовских библиотек, то когда я смотрел в своё время исходники для версии 4.20, то уже тогда компилируя отдельные куски с высоким уровнем оптимизации приходил к выводу, что написать вручную на ассемблере короче и быстрее врядли удастся. Тем более, когда речь идёт о простых функциях типа memcpy().
Так вот уже тогда меня всё (или почти всё) устраивало.
Когда же вышла версия 4.30 и разработчики клялись, что существенно улучшили библиотеку, а особенно плавающую точку (ускорили почти вдвое!), и когда я собрав достаточно большой проект обнаружил, что он работает, то я понял, что от добра добра не ищут и вместо того, чтобы пытаться выжать дополнительные наносекунды, следует направить усилия на решение поставленных задач полностью (или почти полностью) доверяя компилятору.
Тем не менее, не спорю, что изучение исходников дало в плане опыта очень многое.
Ведь именно у мастеров и надо учиться.

Прошу прощения если не в тему.
Go to the top of the page
 
+Quote Post
makc
сообщение Dec 8 2005, 18:09
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



http://sources.redhat.com/newlib/


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Dec 8 2005, 18:22
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Практически все свободные библиотеки - newlib,dietlib,uClib - достаточно большие.
Например для функции sprintf() GCC linker добавляет из newlib-1.13.1 почти 34 kB
кода - и это без floating point support! С другой стороны,размер кода,добавляемого
для операций деления,относительно невелик и сравним с кодом библиотек коммерческих
компиляторов.
Поэтому выход видится такой - или применение lib от коммерческих компиляторов(для
IAR ARM можно найти исходники в И-нете),или применение "усеченных" версий для
"тяжелых" ф-ций(sprintf(),sscanf(),...)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 8 2005, 18:59
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(IgorKossak @ Dec 8 2005, 19:34) *
zltigo, ... написать вручную на ассемблере короче и быстрее врядли удастся. Тем более, когда речь идёт о простых функциях типа memcpy().

Я тоже подозреваю и НАДЕЮСЬ, что не удастся! Закрученнейшие ассемблерные тексты выдает
компилятор при высоком уровне оптимизации. Без оптимизации все в лоб, а оптимизированный -
руками писать замаешся. Эффективность сего с точки пока оценить не могу, но вид внушает надежды.
Хотя, конкретно, на счет memcpy() - ручками играя на пересылках слов+байтов полагаю превзойти.
Ну а плавучку переписывать это чистый садомазохизм, да и не нужна она мне на ARM.

Теперь ближе теме. Коллеге библиотеки, я думаю, действительно следует перекомпилировать для начала. Из прошлого опыта - их обычно собирают без оптимизационных изысков.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Dec 10 2005, 07:20
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



В свое время я поступал так (это ещё когда под Watcom-мом ) - критически важные
функции выделял в отдельную библиотеку, при нужде - дизассемблировал - перекомпилировал, или писал сам, или в данном случае - можно из чужих библиотек перенести - от CrossWorks, например, и в строке для линкера - первой была эта моя библиотека.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
Виктория
сообщение Dec 11 2005, 13:16
Сообщение #8


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Цитата(v_shamaev @ Dec 10 2005, 11:20) *
В свое время я поступал так (это ещё когда под Watcom-мом ) - критически важные
функции выделял в отдельную библиотеку, при нужде - дизассемблировал - перекомпилировал, или писал сам, или в данном случае - можно из чужих библиотек перенести - от CrossWorks, например, и в строке для линкера - первой была эта моя библиотека.


Вот-вот, я тоже, прежде всего за самостоятельную сборку библиотеки. Если ОС точно не используется - то задача тривиальная (оставьте только минимум библиотечных модулей для решения Ваших задач). Посмотрите какой из модулей тянет за собой большой хвост (так, например, упоминаемый sprintf требует все операции с плавающей точкой, а если, например float-деление больше нигде не используется - то может быть и sprintf пожертвовать, написав свою функцию преобразования по задаче и т.п.). Если же Вы используете в своей разработке операционную систему - то посложнее. Но и в этом случае можно найти "лишние детали" smile.gif в стандартной библиотеке.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th July 2025 - 13:35
Рейтинг@Mail.ru


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