IgorKossak 0 4 сентября, 2006 Опубликовано 4 сентября, 2006 · Жалоба Если люди умеют пользоваться поиском по форуму и внимательно читают темы, то у них и так вопросы не возникнут. Да и что, собственно, плохого в вопросах. По поводу статьи - почему бы и нет. Но это наверное к админам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Alfred_ 0 12 августа, 2007 Опубликовано 12 августа, 2007 (изменено) · Жалоба Хочу все же вернуться к вопросу о "принудительном размещении" фукций в определенных областях RWWS и NRWWS. Еще больше интересует - возможно ли разместить функцию по определенному адресу? Это необходимо для обеспечения возможности МК самостоятельно генерировать код для построения сигнала. Сигнал двоичный, но зависит от поведения пользователя, и достачточно высокой частоты - вариант с if не подходит по скорости. Основная идея - разместить по определенному адресу "заглушку", которую МК будет сам перепрограммировать и передавать ей управление. Так вот вопрос: Как разместить функцию по четко заданному адресу в RWWS? Изменено 12 августа, 2007 пользователем _Alfred_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 13 августа, 2007 Опубликовано 13 августа, 2007 · Жалоба Если не хотите искать на форуме и посмотреть пример в текущем топике, то читайте хелп на IAR (он встроен в программу). Там и как значение и как функцию и группу функций (для группы задается область) разместить по адресу есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Alfred_ 0 13 августа, 2007 Опубликовано 13 августа, 2007 · Жалоба посмотреть пример в текущем топике В примере весь код размещается в NRWWS. Там нет функциций размещенных в RWWS. читайте хелп на 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 Где-то какая-то мелочь, а какая - не пойму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Alfred_ 0 13 августа, 2007 Опубликовано 13 августа, 2007 · Жалоба Все, разобрался. Дело было как обычно в мельницах. Если в Options->Linker->Extra Options поставить правильные скобки то все работает без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Len_OK 0 6 декабря, 2007 Опубликовано 6 декабря, 2007 · Жалоба тут столько всего написано...Про функции самопрограммирования мне понятно(ну или может почти)... Никак не могу понять как и что нужно настроить в ИАРе, чтобы все заработало.Мне нужно работать с 4 страницами во флеше меги 8.Читать могу, а вот записать не получается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Alfred_ 0 6 декабря, 2007 Опубликовано 6 декабря, 2007 (изменено) · Жалоба тут столько всего написано...Про функции самопрограммирования мне понятно(ну или может почти)... Никак не могу понять как и что нужно настроить в ИАРе, чтобы все заработало.Мне нужно работать с 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. Изменено 6 декабря, 2007 пользователем _Alfred_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Len_OK 0 7 декабря, 2007 Опубликовано 7 декабря, 2007 · Жалоба Я уже могу писать, но почему-то только в конце загрузчика.Как сделать, так, чтобы выделить под запись 2 страницы перед областью загрузчика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergik_vrn 0 7 декабря, 2007 Опубликовано 7 декабря, 2007 · Жалоба Я уже могу писать, но почему-то только в конце загрузчика.Как сделать, так, чтобы выделить под запись 2 страницы перед областью загрузчика? что имеется в виду под "концом загрузчика" и "перед областью загрузчика"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Alfred_ 0 7 декабря, 2007 Опубликовано 7 декабря, 2007 · Жалоба sergik_vrn Наверное под "концом загрузчика" имеется ввиду конец NRWW section, а под "перед областью загрузчика" - RWW section. Len_OK В NRWW section писать не было необходимости - поэтому сказать ничего не могу, а вот с записью в RWW section проблемм не возникало - несколько раз менял расположение модифицируемой части и все было в порядке. Разве что в начале производилась запись не совсем туда, куда нужно, из-за того, что напутал где адрес в байтах, а где в словах. Может Вы тоже наступили на эта грабли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Len_OK 0 10 декабря, 2007 Опубликовано 10 декабря, 2007 · Жалоба всё никак не получается пишу Options->Linker->Extra Options: -Z(CODE)main = 01C0-1B00 -Z(CODE)loader = 1C26-1FFF а мне в ответ: Error[e12]: Unable to open file '= 01C0-1B00' Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 10 декабря, 2007 Опубликовано 10 декабря, 2007 · Жалоба всё никак не получается пишу Options->Linker->Extra Options: -Z(CODE)main = 01C0-1B00 -Z(CODE)loader = 1C26-1FFF а мне в ответ: Error[e12]: Unable to open file '= 01C0-1B00' Пробелы лишние (а лучше все) поубирайте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Len_OK 0 10 декабря, 2007 Опубликовано 10 декабря, 2007 · Жалоба извините конечно!!! Но что это за ошибка?Подскажите,PLZ!!!! :unsure: 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 10 декабря, 2007 Опубликовано 10 декабря, 2007 · Жалоба извините конечно!!! Но что это за ошибка?Подскажите,PLZ!!!!Вроде ясно написано - получившийся сегмент CODE не влезает в отведенное для него место. Не хватает 0x32 байт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Len_OK 0 10 декабря, 2007 Опубликовано 10 декабря, 2007 · Жалоба спасибо, я уже разобралась.Невнимательна немного! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться