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

 
 
> Все о ARM GCC4.3, Linker, ASM, C/C++, Windows/Linux.
Vitaliy_ARM
сообщение Dec 9 2008, 10:12
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Все больше прощаюсь с IAR.

Разбираюсь с компановщиком. Документация на него не впечатлила 07.gif . Есть ли у кого готовый пример скрипта размещения констант по указанному адресу во Flash LPC2xxx или другого арма?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Dec 9 2008, 16:38
Сообщение #2


Гуру
******

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



Цитата(Vitaliy_ARM @ Dec 9 2008, 13:12) *
Все больше прощаюсь с IAR.

Много полезне вместо демонстративного прощания с IAR тихо и навсегда попрощаться с дурной привычкой "размещения констант по указанному адресу во Flash". Ну а инструментарий у V5 IAR суть есть GNU-тый....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 10 2008, 13:43
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(zltigo @ Dec 9 2008, 19:38) *
Много полезне вместо демонстративного прощания с IAR тихо и навсегда попрощаться с дурной привычкой "размещения констант по указанному адресу во Flash". Ну а инструментарий у V5 IAR суть есть GNU-тый....


В моей задаче это просто не возможно. Бутлодер + Программа имеют две константы - мак адрес и ай пи адрес, строго расположенные в указанных местах. И то и то должно иметь доступ к этим ячейкам. Прощание с "дурной привычкой" не позволить сделать программу и бутлодер независымыми sad.gif .

Сообщение отредактировал Vitaliy_ARM - Dec 10 2008, 13:44


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 10 2008, 13:53
Сообщение #4


Гуру
******

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



Цитата(Vitaliy_ARM @ Dec 10 2008, 16:43) *
Прощание с "дурной привычкой" не позволить сделать программу и бутлодер независымыми sad.gif .

Примерно в аналогичных случаях в фиксированном месте boot (сразу после векторов) размещаю УКАЗАТЕЛЬ на находящийся в произвольном месте блок общих данных. Boot, естественно, линкуется в конкретное место, но это единственная по любому необходимая привязка к адресам - сущности более не плодятся.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 10 2008, 14:10
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(zltigo @ Dec 10 2008, 16:53) *
Примерно в аналогичных случаях в фиксированном месте boot (сразу после векторов) размещаю УКАЗАТЕЛЬ на находящийся в произвольном месте блок общих данных. Boot, естественно, линкуется в конкретное место, но это единственная по любому необходимая привязка к адресам - сущности более не плодятся.


Ага, а как тогда с ай пи адресами и маками? Вместе с загрузчиком зашиваются адреса по умолчанию. Программа должна перешивать и то и другое. А загрузчик должен это использовать, так как абгрейд должен осуществляться по одним и тем же адресам.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 10 2008, 14:51
Сообщение #6


Гуру
******

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



Цитата(Vitaliy_ARM @ Dec 10 2008, 17:10) *
Ага, а как тогда....

C точностью до наоборот, в этом случае расположите указатель в самом начале загружаемого кода.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 17 2008, 11:53
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(zltigo @ Dec 10 2008, 17:51) *
C точностью до наоборот, в этом случае расположите указатель в самом начале загружаемого кода.


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


Цитата(Сергей Борщ @ Dec 10 2008, 17:16) *
Как-то так. Выделяете регион памяти(CONFIG), потом складываете в него нужные сегменты (*.config)[code]/* memory layout */


Вроде бы прояснилось. smile.gif


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 19 2009, 11:25
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Генерирование отладочной информации в коде процессора - подскажите, что это такое и с чем его едят?
Где можно почитать об этом (строчки в скрипте компоновщика)?
Код
/* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment       0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug           0 : { *(.debug) }
  .line            0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo   0 : { *(.debug_srcinfo) }
  .debug_sfnames   0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges   0 : { *(.debug_aranges) }
  .debug_pubnames  0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info      0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev    0 : { *(.debug_abbrev) }
  .debug_line      0 : { *(.debug_line) }
  .debug_frame     0 : { *(.debug_frame) }
  .debug_str       0 : { *(.debug_str) }
  .debug_loc       0 : { *(.debug_loc) }
  .debug_macinfo   0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }


Сообщение отредактировал Vitaliy_ARM - Jan 19 2009, 11:27


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
amw
сообщение Jan 20 2009, 07:35
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Vitaliy_ARM @ Jan 19 2009, 13:25) *
Генерирование отладочной информации в коде процессора - подскажите, что это такое и с чем его едят?
Где можно почитать об этом (строчки в скрипте компоновщика)?
Код
/* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment       0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug           0 : { *(.debug) }
  .line            0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo   0 : { *(.debug_srcinfo) }
  .debug_sfnames   0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges   0 : { *(.debug_aranges) }
  .debug_pubnames  0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info      0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev    0 : { *(.debug_abbrev) }
  .debug_line      0 : { *(.debug_line) }
  .debug_frame     0 : { *(.debug_frame) }
  .debug_str       0 : { *(.debug_str) }
  .debug_loc       0 : { *(.debug_loc) }
  .debug_macinfo   0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }

Это отрывок скрипта линкера. Он указывает, куда линкер будет ложить отладочную информацию в исполняемый файл.
Генерируется она компилятором, при использовании ключа -g с опциями. Например (варианты)
Код
gcc -g main .o main.c
gcc -g3 main .o main.c
gcc -ggdb main .o main.c
gcc -gdwarf-2 main .o main.c

Линкуется потом обычным способом (линкеру не имеет особых флагов для отладочной информации).
После этого можно спокойно отлаживать программу с помощью gdb.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Jan 20 2009, 09:38
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(amw @ Jan 20 2009, 10:35) *
Это отрывок скрипта линкера. Он указывает, куда линкер будет ложить отладочную информацию в исполняемый файл.
Генерируется она компилятором, при использовании ключа -g с опциями. Например (варианты)
Код
gcc -g main .o main.c
gcc -g3 main .o main.c
gcc -ggdb main .o main.c
gcc -gdwarf-2 main .o main.c

Линкуется потом обычным способом (линкеру не имеет особых флагов для отладочной информации).
После этого можно спокойно отлаживать программу с помощью gdb.


Да, уже разобрался. Есть еще некоторые непонятности.
Как я понимаю OpenOCD уже научился поддерживать J-Link и еще кучу всяких Jtag. Но для этого надо ли его пересобрать? Кто-нибудь пользуется связкой Eclipse+GCC+OpenOCD+J-Link?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vitaliy_ARM   Все о ARM GCC4.3   Dec 9 2008, 10:12
- - oll   Цитата(Vitaliy_ARM @ Dec 9 2008, 16:12) В...   Dec 9 2008, 16:28
|- - singlskv   Цитата(zltigo @ Dec 9 2008, 19:38) Много ...   Dec 9 2008, 18:35
||- - zltigo   Цитата(singlskv @ Dec 9 2008, 21:35) А ес...   Dec 9 2008, 18:47
||- - singlskv   Цитата(zltigo @ Dec 9 2008, 21:47) Если у...   Dec 9 2008, 19:28
||- - zltigo   Цитата(singlskv @ Dec 9 2008, 22:28) Флеш...   Dec 9 2008, 22:57
|- - Сергей Борщ   Цитата(Vitaliy_ARM @ Dec 10 2008, 15:43) ...   Dec 10 2008, 14:16
- - Harbour   не надо думать узкими категориями только своей зад...   Dec 10 2008, 06:39
|- - VslavX   Цитата(Harbour @ Dec 10 2008, 08:39) корр...   Dec 10 2008, 08:38
|- - zltigo   Цитата(Harbour @ Dec 10 2008, 09:39) не н...   Dec 10 2008, 10:56
- - Harbour   вот примерчик из моего проекта под atmel : script...   Dec 10 2008, 14:15
- - Harbour   Sorry, если что   Dec 10 2008, 14:24
- - Doka   Цитата(Vitaliy_ARM @ Jan 20 2009, 13:38) ...   Apr 8 2009, 08:21


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 03:11
Рейтинг@Mail.ru


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