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

 
 
> Где бы взять исходники библиотек 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
VAI
сообщение Jul 4 2008, 14:28
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



есть исходники библиотек от 4.20a и 4.11a.
Подойдут?


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 4 2008, 15:34
Сообщение #3


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(VAI @ Jul 4 2008, 18:28) *
есть исходники библиотек от 4.20a и 4.11a.
Подойдут?

Насколько я понимаю, не подойдут. Они там здорово поменяли стартап.

Цитата(savram @ Jul 4 2008, 14:48) *
Работаю с LPC2138 в IAR 5.11

А вы отключите штатную инициализацию сегментов.
В своем ICF файле и инициализируйте сегменты сами.
типа
do not initialize { section .bss };
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2008, 07:36
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
IgorKossak
сообщение Jul 5 2008, 12:28
Сообщение #5


Шаман
******

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



Цитата(savram @ Jul 4 2008, 13:48) *
Хотелось бы посмотреть как работает __iar_zero_init ю...

Запустите симулятор и посмотрите пошагово по дизассемблеру.
В библиотеке этой функции может не быть (по крайней мере в версии 4.42 нет), т. к. это intrinsic функция, т. е. генерится инлайново самим компилятором, а в стартапе только вызывается, исходного текста там нет.
Go to the top of the page
 
+Quote Post
savram
сообщение Jul 6 2008, 22:38
Сообщение #6





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



Цитата(VAI @ Jul 4 2008, 18:28) *
есть исходники библиотек от 4.20a и 4.11a.
Подойдут?


Подойдут! Надо узнать, что это за функция и написать ее самому.
Вообще, это не единственная проблема с этой библиотекой. Изначально не работали прерывания IRQ, пришлось внести изменения cstartup.s (исходник есть) и подключить файл к проекту. Заработало. Правда полностью отключить библиотеку не могу, ругается, что нет __iar_zero_init (она как раз в библиотеке и лежит). На этом фоне не работает инициализация staticов... вот такая ерунда!
Go to the top of the page
 
+Quote Post
VAI
сообщение Jul 7 2008, 03:28
Сообщение #7


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

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Подойдут!

http://www.rapidshare.ru/723273
http://slil.ru/25962831
заархивировал последним winrar-ом.
Пароль на архив Без пароля.
Кому не понятно, смотреть пароль под моей кошкой http://www.v572028.narod.ru/

md5:
1b69d69bc383c42c1bda53a02ecb1c51 *lib.rar


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 7 2008, 05:43
Сообщение #8


Шаман
******

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



По дизассемблеру там, в частности, следующее:
Код
__iar_zero_init:
Region$$Table$$Limit:
  00000150  E3520000  CMP          R2, #0x0
  00000154  012FFF1E  BXEQ         LR
  00000158  E3A01000  MOV          R1, #0x0
  0000015C  E4801004  STR          R1, [R0], #+4
  00000160  E2522004  SUBS         R2, R2, #0x4
  00000164  1AFFFFFC  BNE          0x00015C
  00000168  E12FFF1E  BX           LR

Программа такая:
Код
int main()
{
  static int MyVar;
  return MyVar;
}

Оптимизация выключена, инициализация происходит как надо.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 7 2008, 06:27
Сообщение #9


Гуру
******

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



Цитата(savram @ Jul 7 2008, 00:38) *
Вообще, это не единственная проблема с этой библиотекой....

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
savram
сообщение Jul 8 2008, 12:41
Сообщение #10





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



Прикрепленный файл  icf.zip ( 706 байт ) Кол-во скачиваний: 111
Цитата(zltigo @ Jul 7 2008, 10:27) *
Ну что я могу сказать - после таких заявлений проблемы явно не в библиотеке, и чем Вы раньше допустите мысль, что искать нужно у себя, тем лучше.


С этим-то проблем совсем ни каких нет, это первая мысль, которая возникает. Конечно, наивно винить IAR в своих бедах. Но проблема-то не исчезает...

IgorKossak - спасибо, буду разбираться.

Я вынужден не использовать static переменные, вместо этого инициализирую глобальные переменные в mainе. Все работает, но это не красиво как-то.

Вот пример:

В main.c есть такая строка

static int static_variable1[10];

Потом в main делаю проверку - массив не инициализирован, содержит случайные значения.

Вот что написано в *.map:

Section Kind Address Size Object
------- ---- ------- ---- ------
.bss zero 0x40002468 0x28 main.o [1]

Из чего делаю вывод, что переменная лежит в bss по адресу 0x40002468 (это RAM).
Делаю предположение, что "zero" - директива линкеру инициализировать область нулями.
Это только мое предположение, если я не прав, пожалуйста, дайте мне знать.

ICF прилагаю, там тоже вроде все чисто.

Буду очень признателен, если кто-нибудь даст совет где еще покопать.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 8 2008, 13:50
Сообщение #11


Гуру
******

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



1. static или не static по любому неинициализированвнные переменные попадают в bss
2. bss инициализируется нулями, если только специально не постараться.
3. с дуру у V5 sad.gif даже проверил.
3. точка.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Jul 8 2008, 16:38
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



Цитата(zltigo @ Jul 8 2008, 16:50) *
2. bss инициализируется нулями, если только специально не постараться.


= IAR (стр 43 (67) ODARM_1.pdf). Но не каждый транслятор так делает:

\begin{excerpt:link=http://focus.ti.com/lit/ug/spnu151d/spnu151d.pdf}
5.12 Initializing Static and Global Variables in TIABI and TI ARM9 ABI Modes

The ANSI/ISO C standard specifies that global (extern) and static variables without explicit initializations
must be initialized to 0 before the program begins running. This task is typically done when the program is
loaded. Because the loading process is heavily dependent on the specific environment of the target
application system, the compiler itself makes no provision for preinitializing variables at run time. It is up to
your application to fulfill this requirement.
\end{excerpt}

--
AN
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 8 2008, 17:31
Сообщение #13


Гуру
******

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



Цитата(AndrewN @ Jul 8 2008, 18:38) *
Но не каждый транслятор так делает:

Каждый, который отвечает стандарту "так делает". Не отвечающие стандарту компиляторами не являются и меня не интересуют в принципе smile.gif.
Возможность намеренно отключть (полностью или частично)у компилятора может быть (в том числе и у IAR они есть), но по умолчанию, без специальных телодвижений, "неинициализированные данные" инициализированы 0.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 8 2008, 18:12
Сообщение #14


Шаман
******

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



Цитата(AndrewN @ Jul 8 2008, 19:38) *
Но не каждый транслятор так делает:

Подтверждаю, не каждый.
Code Composer Studio от TI в своё время подвёл меня этим
Цитата
By default, the .bss section and sections defined with the .usect directive have no raw data (they are uninitialized). They occupy space in the memory map but have no actual contents.

Но, повторяю, у IAR с инициализацией полный порядок.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 8 2008, 19:23
Сообщение #15


Гуру
******

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



Цитата(IgorKossak @ Jul 8 2008, 20:12) *
Code Composer Studio от TI...

Этот "компостер" и сейчас совершенно сырой компилятор sad.gif, даже странно, что TI c мрачным упроством продолжает его продвигать в массы, правда наряду с вполне рабочим IAR smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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