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

 
 
 
Reply to this topicStart new topic
> Как можно так хитро слинковать DLIB, чтобы
subver
сообщение May 13 2006, 07:38
Сообщение #1


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

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



его код разместился в сегменте, отличном от CODE?

Пользую IAR 4.30.

В настройках проекта толком не могу найти, где он вообще эту библиотеку подключает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 13 2006, 09:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(subver @ May 13 2006, 10:38) *
его код разместился в сегменте, отличном от CODE?

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

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

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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
subver
сообщение May 13 2006, 10:19
Сообщение #3


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

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



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


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

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


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

(Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь)
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 13 2006, 12:30
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Незачет обоим 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
--------------------------------------------


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 13 2006, 12:56
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ May 13 2006, 15:30) *
Незачет обоим wink.gif
Пользуем xlib и

Так я и прямо писал, что не претендую на момент написания письма на полное перечисление вариантов. Функция интересная. Редкая. Буду иметь ввиду.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 13 2006, 13:16
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата
(Упреждая саркастические усмешки месье zltigo - я с армами только-только знакомлюсь)

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

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

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

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

Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет.
Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже.
Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
subver
сообщение May 14 2006, 05:05
Сообщение #7


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

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



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


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

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


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


Интересно, что при трассировании в отладчике, операции выполняются корректно и память пишется, а если запустить просто на выполнение, то проц слетает в Prefetch Abort.
Go to the top of the page
 
+Quote Post
buletz
сообщение Apr 28 2010, 10:07
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 4-07-06
Из: Moscow
Пользователь №: 18 554



Подскажите плз, каким образом использовать нижеприведенные опции для 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
--------------------------------------------
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 28 2010, 14:29
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

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

Для поставленной цели сие нафиг не нужно. Загрузчик и приложение это ДВА РАЗНЫХ ПРОЕКТА.
Вопрос по загрузчикам практически дежурный. В поиск.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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