Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как можно так хитро слинковать DLIB, чтобы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
subver
его код разместился в сегменте, отличном от CODE?

Пользую IAR 4.30.

В настройках проекта толком не могу найти, где он вообще эту библиотеку подключает.
zltigo
Цитата(subver @ May 13 2006, 10:38) *
его код разместился в сегменте, отличном от CODE?

Месье очевидно знает толк в извращениях? Я тоже иногда упражняюсь, но для чего это могло-бы
сгодится - не понял :-( Просветите?

Прямой путь один - пересобрать библиотеку :-) c явным указанием желаемого имени через
--segment
(кстати, она располагается не только в CODE сегменте - не помешает?)
Наглый - отпатчить, заменив CODE на другие 4 буквы.
Другие пути маловероятны, но можно и подумать, если ЦЕЛЬ ИНТЕРЕСНОЙ БУДЕТ.

Цитата
В настройках проекта толком не могу найти, где он вообще эту библиотеку подключает.

Ну а с этим вопросом Вы меня очень разочаровали :-(
Кто-же такие дела "галочками в проекте" делает :-). Или все ручками, или отключить библиотеку
вообще и далее в "меню" линкера дожна быть и дополнительная командная строка.
subver
Цитата(zltigo @ May 13 2006, 16:42) *
Месье очевидно знает толк в извращениях? Я тоже иногда упражняюсь, но для чего это могло-бы
сгодится - не понял :-( Просветите?
Прямой путь один - пересобрать библиотеку :-) c явным указанием желаемого имени через
--segment
(кстати, она располагается не только в CODE сегменте - не помешает?)
Наглый - отпатчить, заменив CODE на другие 4 буквы.
Другие пути маловероятны, но можно и подумать, если ЦЕЛЬ ИНТЕРЕСНОЙ БУДЕТ.
Ну а с этим вопросом Вы меня очень разочаровали :-(
Кто-же такие дела "галочками в проекте" делает :-). Или все ручками, или отключить библиотеку
вообще и далее в "меню" линкера дожна быть и дополнительная командная строка.


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

А по поводу пересобрать библиотеку - исходников у меня от нее нет.


Тогда еще вопрос в догонку - можно ли выплоняя код в одном участке флеша прошивать при этом другой?
А то у меня чего то процессор постоянно во всякие эксепшны проваливается, блин.

(Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь)
Rst7
Незачет обоим wink.gif

Пользуем 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
Цитата(Rst7 @ May 13 2006, 15:30) *
Незачет обоим wink.gif
Пользуем xlib и

Так я и прямо писал, что не претендую на момент написания письма на полное перечисление вариантов. Функция интересная. Редкая. Буду иметь ввиду.
zltigo
Цитата
(Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь)

Ну так уже и поязвить нельзя в том числе и НАД САМИМ СОБОЙ! :-)

Цитата(subver @ May 13 2006, 13:19) *
В общем мне надо было чтоб один кусок кода (неизменяемый) имел возможность прошивать другой кусок кода, для этого я их разнес в разные сегменты, и назвал свой сегмент, который неизменяемый своими буквами. Ну да ладно, сделал уже все-равно по-другому.

Ну то, что по-другому это абсолютно правильно, ибо даже запихивание библиотеки в другой
фиксированный сегмент приведет к лишним хлопотам по нарезке и ее перезакачке при не дай бог
изменениях связаных с количеством используемых функций. Тем более, что библиотечные функции и не нужны для решения поставленной задачи, разве только что-то типа memcpy() которую Вы несомненно замените 2 строчками на С и еще получите при этом более эффективный код :-)

Цитата
Тогда еще вопрос в догонку - можно ли выплоняя код в одном участке флеша прошивать при этом другой?
А то у меня чего то процессор постоянно во всякие эксепшны проваливается, блин.

Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет.
Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже.
Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили?
subver
Цитата(zltigo @ May 13 2006, 20:16) *
Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет.
Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже.
Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили?


Чип - AT91SAM7A3.
Код который выполняется и прошивает флеш находится по адресам 0 - 0x8000, а прошиваемый участок - по адресам 0x8000 - до конца флеша. Вроде бы никакого криминала в этом не должно быть.

Про прерывания: мне же нужно чтобы код выполнялся верно, а не чтобы процессор не переходил на обработчик прерывания smile.gif


Все прерывания от периферии я запретил, (Advanced Interrupt Controller регистр Iterrupt Disable Register установлен в 0xFFFFFFFF).


Интересно, что при трассировании в отладчике, операции выполняются корректно и память пишется, а если запустить просто на выполнение, то проц слетает в Prefetch Abort.
buletz
Подскажите плз, каким образом использовать нижеприведенные опции для XLIB
и куда их вставлять ? Если ставить в Extra options в закладке линкера IAR, то
линкер ругается, пишет что RENAME-SEG файл не найден.

Я так полагаю, что XLIB это не совсем линкер, (ведь линкер это XLINK), поэтому
научите плз чайника, как юзать эту функцию....

PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера)

Цитата(Rst7 @ May 13 2006, 16:30) *
Незачет обоим wink.gif

Пользуем 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
Цитата(buletz @ Apr 28 2010, 12:07) *
Подскажите плз, каким образом использовать нижеприведенные опции для XLIB
и куда их вставлять ?

В командную строчку при запуске библиотекаря из консоли.
Цитата
PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера)

Для поставленной цели сие нафиг не нужно. Загрузчик и приложение это ДВА РАЗНЫХ ПРОЕКТА.
Вопрос по загрузчикам практически дежурный. В поиск.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.