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

 
 
> Где бы взять исходники библиотек IAR 5.11 для ARM
savram
сообщение Jul 4 2008, 10:48
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 2-11-06
Пользователь №: 21 907



Работаю с LPC2138 в IAR 5.11, возникла проблема: static переменным не присваивается ноль при инициализации. Хотелось бы посмотреть как работает __iar_zero_init в библитеке rt4t_al.a. У меня evaluation версия с iar.com, там исходников нет... Говорят они есть в full версии, но где ее взять?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jul 5 2008, 07:36
Сообщение #2


Гуру
******

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



Цитата(savram @ Jul 4 2008, 12:48) *
..возникла проблема: static переменным не присваивается ноль при инициализации.

Не верю. Совсем не верю.
Цитата
Хотелось бы посмотреть как работает __iar_zero_init в библитеке rt4t_al.a.

А там смотреть нечего - несколько команд в цикле обнуляющие заданную область памяти. Весь вопрос в том, находится-ли переменная в этой области, а к этому "библиотеки" ни сном ни духом.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
gladov
сообщение Aug 30 2011, 11:21
Сообщение #3


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

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Цитата(zltigo @ Jul 5 2008, 11:36) *
Цитата

..возникла проблема: static переменным не присваивается ноль при инициализации.

Не верю. Совсем не верю.


Такая проблема есть. Сегодня наткнулся. Исследования показали следующее:

Допустим, есть массив:
static int BigArray[QuiteLargeValue] = 0;
Можно "=0" и убрать, разницы никакой.

В конфиге ICF имеем строку:
place in RAM_region { readwrite, block CSTACK, block HEAP };

Однозначно видно, что линкер пытается разложить блоки в регионе по убыванию размера. Так вот если массив оказывается большего размера, чем CSTACK или HEAP, то видим такую картину:
Код
"P2", part 1 of 5:                         0x3840
  .bss                zero     0x1000001c  0x3840  Array.r79 [1]
                             - 0x1000385c  0x3840

"P2", part 2 of 5:                         0x2480
  HEAP                         0x10003860  0x2000  <Block>
    HEAP              uninit   0x10003860  0x2000  <Block tail>
  CSTACK                       0x10005860   0x300  <Block>
    CSTACK            uninit   0x10005860   0x300  <Block tail>
  .iar.dynexit                 0x10005b60   0x180  <Block>
    .iar.dynexit      uninit   0x10005b60     0xc  cppinit.o [15]
    .iar.dynexit      uninit   0x10005b6c   0x174  <Block tail>
                             - 0x10005ce0  0x2480

"P2", part 3 of 5:                            0xc
  P2 s0                        0x10005ce0     0xc  <Init block>
    .data             inited   0x10005ce0     0x4  file1.r79 [4]
    .data             inited   0x10005ce4     0x4  file2.r79 [9]
    .data             inited   0x10005ce8     0x4  cppinit.o [15]
                             - 0x10005cec     0xc

"P2", part 4 of 5:                         0x217c
  .bss                zero     0x10005cec  0x1024  mem.r79 [9]

...


Наш блок Array попал в сегмент .bss, чего мы и хотели, однако, код для его инициализации не был сгенерирован линкером! Линкер начал забивать нулями область, начиная в данном случае с адреса 0x5cec. Если же уменьшить размер массива так, чтобы он оказался меньше кучи и стека, то он попадет к "остальным" членам .bss и все переменные проинициализируюутся.

Конечно, уменьшать массив это не выход, поэтому есть другой вариант обхода проблемы в конфиге линкера:
Код
place in RAM_region    { readwrite };
place in RAM_region    { block CSTACK, block HEAP };


Тогда сегмент .bss не будет разорван данными с другими атрибутами и инициализация пройдет нормально.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- savram   Где бы взять исходники библиотек IAR 5.11 для ARM   Jul 4 2008, 10:48
- - VAI   есть исходники библиотек от 4.20a и 4.11a. Подойду...   Jul 4 2008, 14:28
|- - savram   Цитата(VAI @ Jul 4 2008, 18:28) есть исхо...   Jul 6 2008, 22:38
|- - zltigo   Цитата(savram @ Jul 7 2008, 00:38) Вообще...   Jul 7 2008, 06:27
- - KRS   Цитата(VAI @ Jul 4 2008, 18:28) есть исхо...   Jul 4 2008, 15:34
- - IgorKossak   Цитата(savram @ Jul 4 2008, 13:48) Хотело...   Jul 5 2008, 12:28
- - VAI   ЦитатаПодойдут! http://www.rapidshare.ru/72327...   Jul 7 2008, 03:28
- - IgorKossak   По дизассемблеру там, в частности, следующее: Код_...   Jul 7 2008, 05:43
- - savram   Цитата(zltigo @ Jul 7 2008, 10:27) Ну что...   Jul 8 2008, 12:41
- - zltigo   1. static или не static по любому неинициализирова...   Jul 8 2008, 13:50
|- - AndrewN   Цитата(zltigo @ Jul 8 2008, 16:50) 2. bss...   Jul 8 2008, 16:38
|- - zltigo   Цитата(AndrewN @ Jul 8 2008, 18:38) Но не...   Jul 8 2008, 17:31
|- - IgorKossak   Цитата(AndrewN @ Jul 8 2008, 19:38) Но не...   Jul 8 2008, 18:12
|- - zltigo   Цитата(IgorKossak @ Jul 8 2008, 20:12) Co...   Jul 8 2008, 19:23
|- - aaarrr   Цитата(zltigo @ Jul 8 2008, 23:23) даже с...   Jul 8 2008, 20:01
|- - zltigo   Цитата(aaarrr @ Jul 8 2008, 22:01) Да и н...   Jul 8 2008, 20:13
|- - aaarrr   Цитата(zltigo @ Jul 9 2008, 00:13) Плавал...   Jul 8 2008, 20:18
|- - zltigo   Цитата(aaarrr @ Jul 8 2008, 22:18) А во-в...   Jul 8 2008, 20:32
|- - aaarrr   Цитата(zltigo @ Jul 9 2008, 00:32) Добавл...   Jul 8 2008, 20:42
||- - zltigo   Цитата(aaarrr @ Jul 8 2008, 22:42) Возмож...   Jul 8 2008, 20:51
|- - AndrewN   Кхм... Не очень я люблю цитировать Шекспира, но - ...   Jul 8 2008, 22:23
|- - zltigo   Цитата(AndrewN @ Jul 9 2008, 00:23) Мален...   Jul 9 2008, 06:43
- - aaarrr   Для свинства это все же слишком мелко. Продукт уни...   Jul 8 2008, 20:55
- - Alex03   ИМХО 1. Компилятор обязан поместить явно неинициал...   Jul 9 2008, 04:07
- - Alechek   Советую просто поставить последнюю версию IAR В 6....   Aug 31 2011, 10:27


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

 


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


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