|
|
  |
Как можно так хитро слинковать DLIB, чтобы |
|
|
|
May 13 2006, 09:42
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
May 13 2006, 10:19
|

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

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

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

|
Незачет обоим  Пользуем 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 --------------------------------------------
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 13 2006, 13:16
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
May 14 2006, 05:05
|

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

|
Цитата(zltigo @ May 13 2006, 20:16)  Если под "участком" подразумевается разные СЕГМЕНТЫ, то скорее да, чем нет. Точный ответ зависит от конкретного чипа. В используемых мною LPC и STR можно. В ATMELовских - тоже. Ну а вылеты, не сочтите за сарказм, для начала все прерывания-то запретили? Чип - AT91SAM7A3. Код который выполняется и прошивает флеш находится по адресам 0 - 0x8000, а прошиваемый участок - по адресам 0x8000 - до конца флеша. Вроде бы никакого криминала в этом не должно быть. Про прерывания: мне же нужно чтобы код выполнялся верно, а не чтобы процессор не переходил на обработчик прерывания  Все прерывания от периферии я запретил, (Advanced Interrupt Controller регистр Iterrupt Disable Register установлен в 0xFFFFFFFF). Интересно, что при трассировании в отладчике, операции выполняются корректно и память пишется, а если запустить просто на выполнение, то проц слетает в Prefetch Abort.
|
|
|
|
|
Apr 28 2010, 10:07
|

Участник

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

|
Подскажите плз, каким образом использовать нижеприведенные опции для XLIB и куда их вставлять ? Если ставить в Extra options в закладке линкера IAR, то линкер ругается, пишет что RENAME-SEG файл не найден. Я так полагаю, что XLIB это не совсем линкер, (ведь линкер это XLINK), поэтому научите плз чайника, как юзать эту функцию.... PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера) Цитата(Rst7 @ May 13 2006, 16:30)  Незачет обоим  Пользуем 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 --------------------------------------------
|
|
|
|
|
Apr 28 2010, 14:29
|

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

|
Цитата(buletz @ Apr 28 2010, 12:07)  Подскажите плз, каким образом использовать нижеприведенные опции для XLIB и куда их вставлять ? В командную строчку при запуске библиотекаря из консоли. Цитата PS. Цель - необходимость такая же как и у автора поста (чтото вроде самопального бутлоадера) Для поставленной цели сие нафиг не нужно. Загрузчик и приложение это ДВА РАЗНЫХ ПРОЕКТА. Вопрос по загрузчикам практически дежурный. В поиск.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|