Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: impure_data
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
IgorKossak
Собрал тем и другим небольшой проект для Cortex-M3. Результат таков:
Код
CodeSourcery arm-2011.09-69-arm-none-eabi
section              size         addr
.isr_vector         0x10c    0x8000000
.text              0x37d4    0x800010c
.ARM.exidx            0x8    0x80038e0
.data                0xf8   0x20000000
.bss                0xb0c   0x200000f8
._usrstack          0x100   0x20000c04

Linaro gcc-arm-none-eabi-4_6-2012q1-20120316
section              size         addr
.isr_vector         0x10c    0x8000000
.text              0x380c    0x800010c
.ARM.exidx            0x8    0x8003918
.data               0x434   0x20000000
.bss                0xb0c   0x20000434
._usrstack          0x100   0x20000f40

Сразу обратил внимание на раздувание секции .data. Расследование показало, что это из-за массива impure_data. Почти килобайт отъело! Код не раздулся, а даже уменьшился, если учесть, что там лежат данные инициализации для всё того же impure_data.
На линаро вразумительного ответа не получил, обещали в версии 4.7 к концу года поправить. Гугление показало, что это недостаток newlib и ключами компиляции\сборки проекта делу не помочь. Похоже, что не все могут нормально библиотеку собрать, чтобы ею можно было пользоваться для контроллеров с маленькой оперативкой.
Должен сказать, что массив impure_data присутствует в обоих случаях (у меня всего одна однобайтовая обнуляемая в стартапе переменная, остальное - impure_data), но с CodeSourcery ещё можно как то жить. Результат же Linaro ни в какие ворота не лезет.
На Linaro польстился на будущее из-за наличия у них полных библиотек с аппаратной плавучкой.
Кто-нибудь сталкивался с проблемой этого пресловутого массива и как избежать его появления?
AHTOXA
Цитата(IgorKossak @ Jun 11 2012, 00:57) *
На Linaro польстился на будущее из-за наличия у них полных библиотек с аппаратной плавучкой.

А у klen-а не полные? (У него нет массива impure_data)
Сергей Борщ
QUOTE (IgorKossak @ Jun 10 2012, 21:57) *
Кто-нибудь сталкивался
Сталкивался. Стараюсь избегать функций, приводящих к его появлению. Если уж без них никак - мирюсь. Помнится, в одном случае он появлялся из-за обращения к errno в одной из моих функций и тогда удалось победить объявлением своей переменной errno. С библиотечными функциями такое не прокатывает - они уже скомпилированы исходя из того, что errno член этой самой структуры impure_data.
IgorKossak
Цитата(AHTOXA @ Jun 11 2012, 10:35) *
А у klen-а не полные? (У него нет массива impure_data)

Буду пробовать и этот вариант.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.