subver 0 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба его код разместился в сегменте, отличном от CODE? Пользую IAR 4.30. В настройках проекта толком не могу найти, где он вообще эту библиотеку подключает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба его код разместился в сегменте, отличном от CODE? Месье очевидно знает толк в извращениях? Я тоже иногда упражняюсь, но для чего это могло-бы сгодится - не понял :-( Просветите? Прямой путь один - пересобрать библиотеку :-) c явным указанием желаемого имени через --segment (кстати, она располагается не только в CODE сегменте - не помешает?) Наглый - отпатчить, заменив CODE на другие 4 буквы. Другие пути маловероятны, но можно и подумать, если ЦЕЛЬ ИНТЕРЕСНОЙ БУДЕТ. В настройках проекта толком не могу найти, где он вообще эту библиотеку подключает. Ну а с этим вопросом Вы меня очень разочаровали :-( Кто-же такие дела "галочками в проекте" делает :-). Или все ручками, или отключить библиотеку вообще и далее в "меню" линкера дожна быть и дополнительная командная строка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
subver 0 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба Месье очевидно знает толк в извращениях? Я тоже иногда упражняюсь, но для чего это могло-бы сгодится - не понял :-( Просветите? Прямой путь один - пересобрать библиотеку :-) c явным указанием желаемого имени через --segment (кстати, она располагается не только в CODE сегменте - не помешает?) Наглый - отпатчить, заменив CODE на другие 4 буквы. Другие пути маловероятны, но можно и подумать, если ЦЕЛЬ ИНТЕРЕСНОЙ БУДЕТ. Ну а с этим вопросом Вы меня очень разочаровали :-( Кто-же такие дела "галочками в проекте" делает :-). Или все ручками, или отключить библиотеку вообще и далее в "меню" линкера дожна быть и дополнительная командная строка. В общем мне надо было чтоб один кусок кода (неизменяемый) имел возможность прошивать другой кусок кода, для этого я их разнес в разные сегменты, и назвал свой сегмент, который неизменяемый своими буквами. Ну да ладно, сделал уже все-равно по-другому. А по поводу пересобрать библиотеку - исходников у меня от нее нет. Тогда еще вопрос в догонку - можно ли выплоняя код в одном участке флеша прошивать при этом другой? А то у меня чего то процессор постоянно во всякие эксепшны проваливается, блин. (Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба Незачет обоим ;) Пользуем xlib и -------------------- RENAME-SEGMENT RENAME-SEGMENT objectfile old new [start] [end] Use RENAME-SEGMENT to rename all occurrences of a segment from the name old to new in the specified modules. Examples The following example renames all CODE segments to ROM in the file math.rnn: RENAME-SEG math CODE ROM -------------------------------------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба Незачет обоим ;) Пользуем xlib и Так я и прямо писал, что не претендую на момент написания письма на полное перечисление вариантов. Функция интересная. Редкая. Буду иметь ввиду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 13 мая, 2006 Опубликовано 13 мая, 2006 · Жалоба (Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь) Ну так уже и поязвить нельзя в том числе и НАД САМИМ СОБОЙ! :-) В общем мне надо было чтоб один кусок кода (неизменяемый) имел возможность прошивать другой кусок кода, для этого я их разнес в разные сегменты, и назвал свой сегмент, который неизменяемый своими буквами. Ну да ладно, сделал уже все-равно по-другому. Ну то, что по-другому это абсолютно правильно, ибо даже запихивание библиотеки в другой фиксированный сегмент приведет к лишним хлопотам по нарезке и ее перезакачке при не дай бог изменениях связаных с количеством используемых функций. Тем более, что библиотечные функции и не нужны для решения поставленной задачи, разве только что-то типа memcpy() которую Вы несомненно замените 2 строчками на С и еще получите при этом более эффективный код :-) Тогда еще вопрос в догонку - можно ли выплоняя код в одном участке флеша прошивать при этом другой? А то у меня чего то процессор постоянно во всякие эксепшны проваливается, блин. Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет. Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже. Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
subver 0 14 мая, 2006 Опубликовано 14 мая, 2006 · Жалоба Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет. Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже. Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили? Чип - AT91SAM7A3. Код который выполняется и прошивает флеш находится по адресам 0 - 0x8000, а прошиваемый участок - по адресам 0x8000 - до конца флеша. Вроде бы никакого криминала в этом не должно быть. Про прерывания: мне же нужно чтобы код выполнялся верно, а не чтобы процессор не переходил на обработчик прерывания :) Все прерывания от периферии я запретил, (Advanced Interrupt Controller регистр Iterrupt Disable Register установлен в 0xFFFFFFFF). Интересно, что при трассировании в отладчике, операции выполняются корректно и память пишется, а если запустить просто на выполнение, то проц слетает в Prefetch Abort. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
buletz 0 28 апреля, 2010 Опубликовано 28 апреля, 2010 · Жалоба Подскажите плз, каким образом использовать нижеприведенные опции для XLIB и куда их вставлять ? Если ставить в Extra options в закладке линкера IAR, то линкер ругается, пишет что RENAME-SEG файл не найден. Я так полагаю, что XLIB это не совсем линкер, (ведь линкер это XLINK), поэтому научите плз чайника, как юзать эту функцию.... PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера) Незачет обоим ;) Пользуем xlib и -------------------- RENAME-SEGMENT RENAME-SEGMENT objectfile old new [start] [end] Use RENAME-SEGMENT to rename all occurrences of a segment from the name old to new in the specified modules. Examples The following example renames all CODE segments to ROM in the file math.rnn: RENAME-SEG math CODE ROM -------------------------------------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 28 апреля, 2010 Опубликовано 28 апреля, 2010 · Жалоба Подскажите плз, каким образом использовать нижеприведенные опции для XLIB и куда их вставлять ? В командную строчку при запуске библиотекаря из консоли. PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера) Для поставленной цели сие нафиг не нужно. Загрузчик и приложение это ДВА РАЗНЫХ ПРОЕКТА. Вопрос по загрузчикам практически дежурный. В поиск. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться