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

 
 
7 страниц V  « < 3 4 5 6 7 >  
Reply to this topicStart new topic
> bootloader в IARe 3,10, Помогите разобраться как сделать
IgorKossak
сообщение Sep 4 2006, 12:12
Сообщение #61


Шаман
******

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



Если люди умеют пользоваться поиском по форуму и внимательно читают темы, то у них и так вопросы не возникнут.
Да и что, собственно, плохого в вопросах.
По поводу статьи - почему бы и нет. Но это наверное к админам.
Go to the top of the page
 
+Quote Post
_Alfred_
сообщение Aug 12 2007, 18:14
Сообщение #62


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-05
Пользователь №: 6 757



Хочу все же вернуться к вопросу о "принудительном размещении" фукций в определенных областях RWWS и NRWWS.
Еще больше интересует - возможно ли разместить функцию по определенному адресу?
Это необходимо для обеспечения возможности МК самостоятельно генерировать код для построения сигнала. Сигнал двоичный, но зависит от поведения пользователя, и достачточно высокой частоты - вариант с if не подходит по скорости.

Основная идея - разместить по определенному адресу "заглушку", которую МК будет сам перепрограммировать и передавать ей управление.

Так вот вопрос: Как разместить функцию по четко заданному адресу в RWWS?

Сообщение отредактировал _Alfred_ - Aug 12 2007, 18:15
Go to the top of the page
 
+Quote Post
arttab
сообщение Aug 13 2007, 02:16
Сообщение #63


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

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Если не хотите искать на форуме и посмотреть пример в текущем топике, то читайте хелп на IAR (он встроен в программу). Там и как значение и как функцию и группу функций (для группы задается область) разместить по адресу есть.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
_Alfred_
сообщение Aug 13 2007, 13:42
Сообщение #64


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-05
Пользователь №: 6 757



Цитата(arttab @ Aug 13 2007, 05:16) *
посмотреть пример в текущем топике

В примере весь код размещается в NRWWS. Там нет функциций размещенных в RWWS.

Цитата(arttab @ Aug 13 2007, 05:16) *
читайте хелп на IAR (он встроен в программу). Там и как значение и как функцию и группу функций (для группы задается область) разместить по адресу есть.

Со значением все ясно, я говорю о функциях.

В EWAVR_CompilerReference.pdf ниписано:
Цитата
Function placement into named segments
It is possible to place functions into named segments using either the @ operator or the
#pragma location directive. When placing functions into segments, the segment is
specified as a string literal.
Example
void f(void) @ "MYSEGMENT";
void g(void) @ "MYSEGMENT"
{
}
#pragma location="MYSEGMENT"
void h(void);

Добавил в файл lnkm16s.xcl (у меня mega16, memory - small) строки:
Код
-Z(CODE}MY_SOURCE=100-200
-Z(CODE}MY_MAIN=201-1BFF
-Z(CODE}MY_LOADER=1C00-1FFF

Пишу:
Код
...
void test(void) @ "MY_LOADER";
...

В результате:
Fatal Error[e72]: Segment MY_LOADER must be defined in a segment definition option (-Z, -b or -P)

Пишу:
Код
...
#pragma segment = "MY_LOADER"
void test(void) @ "MY_LOADER";
...

результат тот же.

Пишу в Options->Linker->Extra Options:
Код
-Z(CODE}MY_SOURCE=100-200
-Z(CODE}MY_MAIN=201-1BFF
-Z(CODE}MY_LOADER=1C00-1FFF

В результате:
Error[e102]: No such segment type: -Z(CODE}MY_SOURCE=100-200

Где-то какая-то мелочь, а какая - не пойму.
Go to the top of the page
 
+Quote Post
_Alfred_
сообщение Aug 13 2007, 22:03
Сообщение #65


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-05
Пользователь №: 6 757



Все, разобрался. Дело было как обычно в мельницах.

Если в Options->Linker->Extra Options поставить правильные скобки то все работает без проблем.
Go to the top of the page
 
+Quote Post
Len_OK
сообщение Dec 6 2007, 11:40
Сообщение #66


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



тут столько всего написано...Про функции самопрограммирования мне понятно(ну или может почти)...
Никак не могу понять как и что нужно настроить в ИАРе, чтобы все заработало.Мне нужно работать с 4 страницами во флеше меги 8.Читать могу, а вот записать не получается
Go to the top of the page
 
+Quote Post
_Alfred_
сообщение Dec 6 2007, 15:52
Сообщение #67


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-05
Пользователь №: 6 757



Цитата(Len_OK @ Dec 6 2007, 15:40) *
тут столько всего написано...Про функции самопрограммирования мне понятно(ну или может почти)...
Никак не могу понять как и что нужно настроить в ИАРе, чтобы все заработало.Мне нужно работать с 4 страницами во флеше меги 8.Читать могу, а вот записать не получается

Ничего особенного вроде как в настройках писать не пришлось - тип процессора, модель памяти (Small), фрмат генерируемого файла.
Еще я прописывал Options->Linker->Extra Options:
Код
-Z(CODE)MY_MAIN=200-4FFF
-Z(CODE)MY_SOURCE=5000-6F7F
-Z(CODE)MY_DELAYS=6F80-6FFF
-Z(CODE)MY_LOADER=7000-7FFF
но это что б размещать код по определенным адресам.

Для записи использовал пример из AVR109, файл fаlash.h и брал за основу функцию Update_Page(), написанную arttabом в bootloader_IAR.pdf.

Использовал IAR 4.11A, МК ATmega32.

Сообщение отредактировал _Alfred_ - Dec 6 2007, 16:11
Go to the top of the page
 
+Quote Post
Len_OK
сообщение Dec 7 2007, 07:36
Сообщение #68


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



Я уже могу писать, но почему-то только в конце загрузчика.Как сделать, так, чтобы выделить под запись 2 страницы перед областью загрузчика?
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Dec 7 2007, 14:37
Сообщение #69


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

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



Цитата(Len_OK @ Dec 7 2007, 10:36) *
Я уже могу писать, но почему-то только в конце загрузчика.Как сделать, так, чтобы выделить под запись 2 страницы перед областью загрузчика?

что имеется в виду под "концом загрузчика" и "перед областью загрузчика"?
Go to the top of the page
 
+Quote Post
_Alfred_
сообщение Dec 7 2007, 23:22
Сообщение #70


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 13-07-05
Пользователь №: 6 757



sergik_vrn
Наверное под "концом загрузчика" имеется ввиду конец NRWW section, а под "перед областью загрузчика" - RWW section.

Len_OK
В NRWW section писать не было необходимости - поэтому сказать ничего не могу, а вот с записью в RWW section проблемм не возникало - несколько раз менял расположение модифицируемой части и все было в порядке. Разве что в начале производилась запись не совсем туда, куда нужно, из-за того, что напутал где адрес в байтах, а где в словах. Может Вы тоже наступили на эта грабли?
Go to the top of the page
 
+Quote Post
Len_OK
сообщение Dec 10 2007, 10:52
Сообщение #71


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



всё никак не получается
пишу Options->Linker->Extra Options:
-Z(CODE)main = 01C0-1B00
-Z(CODE)loader = 1C26-1FFF

а мне в ответ:

Error[e12]: Unable to open file '= 01C0-1B00'
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 10 2007, 13:02
Сообщение #72


Шаман
******

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



Цитата(Len_OK @ Dec 10 2007, 12:52) *
всё никак не получается
пишу Options->Linker->Extra Options:
-Z(CODE)main = 01C0-1B00
-Z(CODE)loader = 1C26-1FFF

а мне в ответ:

Error[e12]: Unable to open file '= 01C0-1B00'

Пробелы лишние (а лучше все) поубирайте.
Go to the top of the page
 
+Quote Post
Len_OK
сообщение Dec 10 2007, 13:26
Сообщение #73


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



извините конечно!!! Но что это за ошибка?Подскажите,PLZ!!!! unsure.gif

Error[e16]: Segment CODE (size: 0x40c align: 0x1) is too long for segment definition. At least 0x32 more
bytes needed. The problem occurred while processing the segment placement command
"-Z(CODE)CODE=1C26-1FFF", where at the moment of placement the available memory ranges were
"CODE:1c26-1fff"
Reserved ranges relevant to this placement:
CODE:1c26-1fff CODE
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 10 2007, 15:40
Сообщение #74


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Len_OK @ Dec 10 2007, 15:26) *
извините конечно!!! Но что это за ошибка?Подскажите,PLZ!!!!
Вроде ясно написано - получившийся сегмент CODE не влезает в отведенное для него место. Не хватает 0x32 байт


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Len_OK
сообщение Dec 10 2007, 15:53
Сообщение #75


Участник
*

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986



спасибо, я уже разобралась.Невнимательна немного!
Go to the top of the page
 
+Quote Post

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

 


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


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