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

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Bootloader или загрузчик, расскажите по подробней...
Anatrulij
сообщение Apr 24 2009, 10:06
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Расскажите какие функции выполняет встроенный bootloader и как написать свой(и где он будет находиться). (ядро LPC2468/78)

З.Ы. когда на форумах вспоминуют про Bootloader и про загрузчик - то имеют ввиду одно и тоже?

Сообщение отредактировал Anatrulij - Apr 24 2009, 10:09
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Apr 24 2009, 10:14
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(Anatrulij @ Apr 24 2009, 13:06) *
Расскажите какие функции выполняет встроенный bootloader и как написать свой(и где он будет находиться). (ядро LPC2468/78)

Уйму раз на форуме писали.
Например здесь и здесь. Пооиск - рулииит. Для google используйте тэг:
Код
site:electronix.ru

Цитата
З.Ы. когда на форумах вспоминуют про Bootloader и про загрузчик - то имеют ввиду одно и тоже?

Да.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 24 2009, 14:17
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



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

И провильно ли я понял: в самом начале я прошиваю программу(bootloader), а уже эта программа(если надо) по нужным адресам записывает другую программу(основную)?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Apr 24 2009, 14:52
Сообщение #4


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(Anatrulij @ Apr 24 2009, 17:17) *
В данных ссылках я не увидел где конкретно находиться системный(или как он там называется) загружчик(по какому адресу) и как он влияет на работу программы(что он вообще делает, если я сам пишу загрузчик).

Где поместите, там и будет. Обычно в начале флеша. Практически - никак не влияет. Обычно загрузчик только обновляет основную программу. Загрузчик запускается по включению питания или по переходу из основной программы.
Цитата
И провильно ли я понял: в самом начале я прошиваю программу(bootloader), а уже эта программа(если надо) по нужным адресам записывает другую программу(основную)?

Провильно. Впрочем, можно склеить их на этапе hex-файлов, и прошивать вместе (при первой прошивке пустого контроллера).
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 24 2009, 15:31
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Я под системным загрузчиком имел в виду загрузчик который идет вместе с контроллером - прошитый там навсегда(а может и нет)? Есть ли такой(где то здесь на форуме упоминали об таком)?

Сообщение отредактировал Anatrulij - Apr 24 2009, 16:01
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 24 2009, 21:19
Сообщение #6


Гуру
******

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



Цитата(Anatrulij @ Apr 24 2009, 18:31) *
Есть ли такой(где то здесь на форуме упоминали об таком)?
Есть такой. И описан он не на форуме, а (неожиданно, правда?) в LPC24xx User Manual, раздел: LPC24XX Flash memory programming firmware.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 24 2009, 21:26
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



А по какому адресу он расположен, и какие его функции?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 24 2009, 22:29
Сообщение #8


Гуру
******

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



Цитата(Anatrulij @ Apr 25 2009, 00:26) *
А по какому адресу он расположен, и какие его функции?
Это все описано в том самом мануале. Сомневаюсь, что кто-то из участников форума захочет перевести его для вас.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 28 2009, 11:02
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



На этом этапе мне пока все понятно.
Как я понял загрузчики - однотипные програмки.

Копнем теперь глубже - реализация загрузчика. Каким образом мне проверять есть ли во флеше рабочая прошивка?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2009, 11:26
Сообщение #10


Гуру
******

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



Цитата(Anatrulij @ Apr 28 2009, 14:02) *
Копнем теперь глубже - реализация загрузчика. Каким образом мне проверять есть ли во флеше рабочая прошивка?
Посчитать ее контрольную сумму.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 28 2009, 11:42
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



Из загрузчика я считаю контрольную сумму записанной во флеше программы, а потом сравниваю ее с контрольной суммой до этого посчитаную (и где-то записаной во флеше). Правильно ли я понял?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Apr 28 2009, 12:11
Сообщение #12


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Цитата(Anatrulij @ Apr 28 2009, 14:42) *
Из загрузчика я считаю контрольную сумму записанной во флеше программы, а потом сравниваю ее с контрольной суммой до этого посчитаную (и где-то записаной во флеше). Правильно ли я понял?

Да, конечно. Удобно положить контрольную сумму сразу после тела программы.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 28 2009, 12:49
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



HARMHARM >> Да, конечно. Удобно положить контрольную сумму сразу после тела программы.

А от куда загрузчик знает где конец программы?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2009, 16:48
Сообщение #14


Гуру
******

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



Цитата(Anatrulij @ Apr 28 2009, 15:49) *
А от куда загрузчик знает где конец программы?
Есть несколько путей:
1) Он может считать контрольную сумму всей доступной приложению памяти. В последней ячейке будет контрольная сумма.
2) В приложении по заранее оговоренному адресу хранится его размер.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Apr 29 2009, 13:07
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437



А где в стартапе указано адрес начала программы, адрес начала бутлоадера?
я нашел вот такой код:
Код
Vectors         LDR     PC, Reset_Addr
      
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                           ; Reserved Vector
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0120]    ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0                     ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
SWI_Handler     B       SWI_Handler
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
IRQ_Handler     B       IRQ_Handler
FIQ_Handler     B       FIQ_Handler

но ни где больше переменные не упоминаються(то есть нет присвоения им каких-либо значений)

З.Ы. а есть описание кода в стартапе или описание того, как грамотно сделать стартап?
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:16
Рейтинг@Mail.ru


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