|
Все о ARM GCC4.3, Linker, ASM, C/C++, Windows/Linux. |
|
|
|
Dec 9 2008, 10:12
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Все больше прощаюсь с IAR. Разбираюсь с компановщиком. Документация на него не впечатлила  . Есть ли у кого готовый пример скрипта размещения констант по указанному адресу во Flash LPC2xxx или другого арма?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 9 2008, 16:28
|
Частый гость
 
Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463

|
Цитата(Vitaliy_ARM @ Dec 9 2008, 16:12)  Все больше прощаюсь с IAR. Разбираюсь с компановщиком. Документация на него не впечатлила  . Есть ли у кого готовый пример скрипта размещения констант по указанному адресу во Flash LPC2xxx или другого арма? может тут? http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/
|
|
|
|
|
Dec 9 2008, 18:35
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Dec 9 2008, 19:38)  Много полезне вместо демонстративного прощания с IAR тихо и навсегда попрощаться с дурной привычкой "размещения констант по указанному адресу во Flash". Ну а инструментарий у V5 IAR суть есть GNU-тый.... А если это настроечные константы прибора хранящиеся в флеш и требуется возможность их изменения/записи с помощью спец процедуры ? Как обойтись без абсолютных адресов ? Как сделать кратность записи странице флеш ?
|
|
|
|
|
Dec 9 2008, 19:28
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Dec 9 2008, 21:47)  Если у Вас флеши слишком много, что Вы можете отдать целый сегмент, то и отдайте его в конце. Флеши много не бывает. Ну конечно в конце, но это не всегда конец флеши, иногда это конец некоторого логического куска, ну там всякие бутлоадеры итд... Цитата А если нет, то по любому считать->отпатчитть-стереть->записать придется. Процедура занимающаяся этим изнутри и так знает где что лежит. А наружные патчеры и по сигнатуре найдут без проблем. А вот это очень может быть ненадежно..., там ведь с кодом может пересекаться и при аппаратном сбое умрет все... Цитата А втыкать некий кусок в фиксированное место это значит платить кусками неиспользуемого Flash, ибо линкер не сможет идально заполнить зачем-то созданые по Вашей прихоти пустоты. Это плата за надежность, поэтому ИМХО, фиксированное размещение данных(для отделения от всего остального) может быть очень даже оправданно.
|
|
|
|
|
Dec 9 2008, 22:57
|

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

|
Цитата(singlskv @ Dec 9 2008, 22:28)  Флеши много не бывает. Тогда зачем спрашивали о выравниванию на границу.. Цитата А вот это очень может быть ненадежно..., там ведь с кодом может пересекаться и при аппаратном сбое умрет все... Вы уж как-то определитесь, либо отдельный сегмент,либо будет с чем-то пересекаться.  . Но в любом случае нет ни малейшей необходимости заставлять линкер размещать Ваши данные по пришедшему Вам в голову произвольному адресу.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 10 2008, 10:56
|

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

|
Цитата(Harbour @ Dec 10 2008, 09:39)  не надо думать узкими категориями только своей задачи Это Вы кому? Цитата корректно это делается... Когда это НУЖНО, типа bootloader-a, то это несомненнно ДЕЛАЕТСЯ. Вопрос в том, что этого незачем делать без всякой на то надобности, как в заявленном случае.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 10 2008, 13:43
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(zltigo @ Dec 9 2008, 19:38)  Много полезне вместо демонстративного прощания с IAR тихо и навсегда попрощаться с дурной привычкой "размещения констант по указанному адресу во Flash". Ну а инструментарий у V5 IAR суть есть GNU-тый.... В моей задаче это просто не возможно. Бутлодер + Программа имеют две константы - мак адрес и ай пи адрес, строго расположенные в указанных местах. И то и то должно иметь доступ к этим ячейкам. Прощание с "дурной привычкой" не позволить сделать программу и бутлодер независымыми  .
Сообщение отредактировал Vitaliy_ARM - Dec 10 2008, 13:44
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 10 2008, 14:10
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

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

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Vitaliy_ARM @ Dec 10 2008, 15:43)  В моей задаче это просто не возможно. Бутлодер + Программа имеют две константы - мак адрес и ай пи адрес, строго расположенные в указанных местах. Как-то так. Выделяете регион памяти(CONFIG), потом складываете в него нужные сегменты (*.config) Код /* memory layout */ MEMORY { REMAP (rx) : ORIGIN = 0x00000000, LENGTH = 0x00000040 ROM (rx) : ORIGIN = 0x00000000, LENGTH = 128K - 8K CONFIG (rx) : ORIGIN = 128K - 8K, LENGTH = 8K RAM (rw) : ORIGIN = 0x40000000, LENGTH = 16K }
SECTIONS { ............. .config : { KEEP(*(.config)) } > CONFIG ........... Harbour: стоило подождать сутки, чтобы выложить одновременно  Но у меня оформлено тегами [ code ], [ /code ]
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|