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

 
 
> Фича или полубага IAR 6.30 & ... 5.40 ?, __low_level_init -> PUSH {R7, LR} ... POP {R1, PC}
GetSmart
сообщение Aug 15 2012, 11:52
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Заюзав в проге __low_level_init (LPC17xx) заметил, что в начале функции стоит PUSH {R7, LR}, а в конце POP {R1, PC}. Проверял на IAR ARM 6.30 и на 5.40. Может быть это и не важно, т.к. на старте эти регистры ещё не прописывались, но всё-равно непонятно это "кривизна" или нет. Больше беспокоит хитрая задумка sm.gif

И ещё вопрос не в тему. Подскажите пожалуйста как в Си присвоить переменной начало или конец какого-либо сегмента?

Что-то вроде tmp = __sfb("ISTACK") не работает, т.к. ругается, что сегмент не определён. Хотя в линкере он и все другие, с которыми пробовал - есть. Проц 8051.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Aug 15 2012, 15:26
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr @ Aug 15 2012, 18:02) *
Явная кривизна, так что не беспокойтесь.

А за то, что компилер генерит неправильный пролог и эпилог с виду обычной функции - тоже не беспокоиться? Какая-то задумка там должна быть. Как минимум, что компилер генерит разные прологи/эпилоги в зависимости от имени функции. А ведь он должен просто подставить адрес этой обычной функции в свои low level функции и не использовать заглушку __low_level_init. Остальную логику как компилятору удаётся сделать ошибку я не понимаю.

И вообще, если эту функцию вызвать уже из тела проги, то может произойти "падение чёрного ястреба". И вроде никакого криминала со стороны программера. Просто желание в процессе работы заново проинициализировать что-то типа портов, PLL, внешней рамы и прочего. Хотя может и не упадёт, если R7 (R3-R12) в теле не меняется, а R0-R2 вроде как допускается изменять.

Сообщение отредактировал GetSmart - Aug 15 2012, 16:14


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:55
Рейтинг@Mail.ru


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