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

 
 
> Размещения одной и тойже прошивки по разным адресам флеш, как разместить код в произвольной области флеш?
TanT
сообщение Feb 19 2009, 03:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Доброго времени суток, столкнулся с необходимостью размещения одной и тойже прошивки по разным адресам флешки, да ещё чтобы работало. Есть код скомпилённый начиная с адресса, пусть 0х00001000 его требуется разместить по адресамм начиная с 0х00048000. Можно это организовать? Если можно, что для этого и где требуется поправить? Что-то я совсем в этом вопросе плаваю.


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TanT
сообщение Feb 19 2009, 05:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 22-11-05
Из: Россия->Омск
Пользователь №: 11 210



Хм... засада ещё в том, что кроме кода у меня ничего нет.
Все мучения для осуществления удалённой смены прошивки. Флешка может хранить две копии прошивки. Удалённая сторона, которая посылает новую прошивку не знает куда (по какому из двух возможных адресов) положит её мой загрузчик, а он будет складыват соответственно в область свободную от исполняемого кода. Таким образом как не компили не угадаешь. Разбираться надо на месте, тобишь в бутлоадере.
Можно, конечно, опросить сначала мою LPC2378 где, что у неё лежит и как она себя чувствует, а потом уже слать прошивку, но это совсем последний вариант.


--------------------
Если вы не можете объяснить что-то шестилетнему ребенку, значит, вы сами этого не понимаете.
Альберт Эйнштейн
Go to the top of the page
 
+Quote Post
amw
сообщение Feb 19 2009, 07:31
Сообщение #3


Знающий
****

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



Цитата(TanT @ Feb 19 2009, 07:44) *
Хм... засада ещё в том, что кроме кода у меня ничего нет.
Все мучения для осуществления удалённой смены прошивки. Флешка может хранить две копии прошивки. Удалённая сторона, которая посылает новую прошивку не знает куда (по какому из двух возможных адресов) положит её мой загрузчик, а он будет складыват соответственно в область свободную от исполняемого кода. Таким образом как не компили не угадаешь. Разбираться надо на месте, тобишь в бутлоадере.
Можно, конечно, опросить сначала мою LPC2378 где, что у неё лежит и как она себя чувствует, а потом уже слать прошивку, но это совсем последний вариант.

Вам нужно просто разместить или исполнять с разного адреса один и тот-же бинарик?
Если второе - то нужно скомпилить с position independent code - для gcc опция -fPIC.
И стартап нужно написать правильно, без привязки к конкретным адресам, а вычисляя их по время выполнения.
Куда прошивку будет ложить бутлоадер - это ему (бутлоадеру) придется решать. Он на то и бутлоадер, чтобы знать что и где у него лежить и куда писать новую прошивку.

Цитата(A. Fig Lee @ Feb 19 2009, 05:53) *
лихко! (теоретицки) на практике у меня так и не получилось.
то есть в линкер скрипте там опция есть "AT":

например:
Код
SECTIONS
{
     . = 0;                              /* set location counter to address zero  */

    startup : { *(.startup)} >flash     /* the startup code goes into FLASH */


     .text :                             /* collect all sections that should go into FLASH after startup  */
     {
        *(.text)                        /* all .text sections (code)  */
        *(.rodata)                      /* all .rodata sections (constants, strings, etc.)  */
         *(.rodata*)                     /* all .rodata* sections (constants, strings, etc.)  */
        *(.glue_7)                      /* all .glue_7 sections  (no idea what these are) */
        *(.glue_7t)                     /* all .glue_7t sections (no idea what these are) */
        _etext = .;                     /* define a global symbol _etext just after the last code byte */
    } >ram AT>flash                            /* put all the above into RAM and copy in FLASH */


код должен скомпилится для локейшен RAM, но записатся во FLASH.

онако - фигушки, VMA и LMA один и тот же - RAM.

На практике нужно стартап написать так, чтобы он не использовал абсолютной адресации и скопировал себя (т.е. всу прошивку) в RAM.


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


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(TanT @ Feb 19 2009, 09:44) *
Флешка может хранить две копии прошивки.


Если не нужно, чтобы работали обе версии - можно копировать новую на место старой.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TanT   Размещения одной и тойже прошивки по разным адресам флеш   Feb 19 2009, 03:40
- - A. Fig Lee   Цитата(TanT @ Feb 18 2009, 22:40) Доброго...   Feb 19 2009, 03:53
- - TanT   ЦитатаВам нужно просто разместить или исполнять с ...   Feb 19 2009, 08:26
|- - MrYuran   Цитата(TanT @ Feb 19 2009, 11:26) В IAR е...   Feb 19 2009, 08:55
- - scifi   А как такой вариант: посылать 2 версии прошивки, а...   Feb 19 2009, 08:41
- - TanT   ЦитатаЕсли не нужно, чтобы работали обе версии - м...   Feb 19 2009, 08:45
|- - meister   Цитата(TanT @ Feb 19 2009, 12:45) В устро...   Feb 19 2009, 08:52
|- - AlexandrY   Вам нужен просто elfloader. Все компилеры под ARM ...   Feb 19 2009, 08:56
- - TanT   ЦитатаА как такой вариант: посылать 2 версии проши...   Feb 19 2009, 08:54
- - TanT   ЦитатаКак вариант переключения с одной прошивки на...   Feb 19 2009, 09:06
|- - meister   Цитата(TanT @ Feb 19 2009, 13:06) А потом...   Feb 19 2009, 09:12
|- - TanT   Цитата(meister @ Feb 19 2009, 13:12) Флэш...   Feb 19 2009, 10:20
- - TanT   Ууу, сколько уже времени прошло. Загрузчик я сдела...   Mar 31 2009, 05:19


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

 


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


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