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

 
 
> 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
 
Start new topic
Ответов
Yaumen
сообщение Jun 30 2010, 14:32
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Для организации загрузки программы написал несколько классов, которые должны использоваться в бутлоадере (AES шифрование, подсчет CRC и т.д.). Написал собственно загрузчик, но теперь осталось правильно все это скомпоновать.

Как сделать, чтобы определенные объекты классов компилировались с 0-го сектора (загрузчик), а остальные скажем со 2-го сектора (пользовательская программа)?

Вычитал, что это решается с помощью scatter, нашел где он настраивается в Keil, но там вроде можно всю программу сместить, а как сделать частями, ума не приложу.
Была идея сделать 2 разных проекта, один загрузчик и разместить его с 0-го сектора (и использовать далее во всех остальных проектах его без изменения). А второй проект это пользовательская программа, которая всегда начинается со 2-го сектора. Есть еще плюсы, у этого метода, но главные минусы в том, что:
- всегда надо четко и, самое главное, в ручную оговаривать точки входа в пользовательскую программу (включая вектора прерываний) и загрузчик, потому что при компиляции они не будут знать о существовании друг друга;
- хотелось быть часть однотипного кода по работе с интерфейсами, USB, CAN и UART разместить в загрузчике, чтобы не дублировать их в двух программах. Но тут встает та же проблема, ручного указания адресов методов и самое главное ручное резервирование памяти, которое используют объекты классов интерфейсов, чтобы компилятор пользовательской программы туда ничего не назначил.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 30 2010, 15:52
Сообщение #3


Гуру
******

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



Цитата(Yaumen @ Jun 30 2010, 17:32) *
Была идея сделать 2 разных проекта, один загрузчик и разместить его с 0-го сектора (и использовать далее во всех остальных проектах его без изменения). А второй проект это пользовательская программа, которая всегда начинается со 2-го сектора.
Правильное решение. Программы независимы, нет возможности развивая программу случайно сделать ее несовместимой с уже выпущенными и разлетевшимися по стране загрузчиками.
Цитата(Yaumen @ Jun 30 2010, 17:32) *
- всегда надо четко и, самое главное, в ручную оговаривать точки входа в пользовательскую программу (включая вектора прерываний) и загрузчик, потому что при компиляции они не будут знать о существовании друг друга;
Вход в загрузчик - по адресу 0. В приложение (после ремапа) - тоже по адресу 0. Адрес фиксирован, не меняется.
Цитата(Yaumen @ Jun 30 2010, 17:32) *
- хотелось быть часть однотипного кода по работе с интерфейсами, USB, CAN и UART разместить в загрузчике, чтобы не дублировать их в двух программах. Но тут встает та же проблема, ручного указания адресов методов
сделайте таблицу переходов, расположите ее раз и навсегда в фиксированном месте.
Цитата(Yaumen @ Jun 30 2010, 17:32) *
и самое главное ручное резервирование памяти, которое используют объекты классов интерфейсов, чтобы компилятор пользовательской программы туда ничего не назначил.
Расположите их в начале ОЗУ, сразу за отремапленой таблицей векторов. А приложению уменьшите количество ОЗУ на этот размер.

Но это тоже не лучшее решение - а найдете вы потом (через год) багу в этом коде, которая не мешает загрузчику, но не дает работать приложению. И что - отзывать все выпущенные приборы на перешивку загрузчика? Или писать очередное обновление, которое перепишет загрузчик с ненулевой вероятностью сбоя питания в этот момент и все - устройство надо возвращать. Пусть лучше дублируются, но загрузчик и приложение будут совершенно автономны.


--------------------
На любой вопрос даю любой ответ
"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
alvy
сообщение Jul 1 2010, 03:21
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 8-05-09
Из: Томск
Пользователь №: 48 809



Цитата(Сергей Борщ @ Jun 30 2010, 22:52) *
сделайте таблицу переходов, расположите ее раз и навсегда в фиксированном месте.

Можно с этого места поподробнее? rolleyes.gif Т.е. саму идею понял, но как это все должно выглядеть - не совсем
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Anatrulij   Bootloader или загрузчик   Apr 24 2009, 10:06
- - HARMHARM   Цитата(Anatrulij @ Apr 24 2009, 13:06) Ра...   Apr 24 2009, 10:14
- - Anatrulij   В данных ссылках я не увидел где конкретно находит...   Apr 24 2009, 14:17
|- - HARMHARM   Цитата(Anatrulij @ Apr 24 2009, 17:17) В ...   Apr 24 2009, 14:52
|- - Anatrulij   Я под системным загрузчиком имел в виду загрузчик ...   Apr 24 2009, 15:31
|- - Сергей Борщ   Цитата(Anatrulij @ Apr 24 2009, 18:31) Ес...   Apr 24 2009, 21:19
- - Anatrulij   А по какому адресу он расположен, и какие его функ...   Apr 24 2009, 21:26
|- - Сергей Борщ   Цитата(Anatrulij @ Apr 25 2009, 00:26) А ...   Apr 24 2009, 22:29
- - Anatrulij   На этом этапе мне пока все понятно. Как я понял за...   Apr 28 2009, 11:02
|- - Сергей Борщ   Цитата(Anatrulij @ Apr 28 2009, 14:02) Ко...   Apr 28 2009, 11:26
- - Anatrulij   Из загрузчика я считаю контрольную сумму записанно...   Apr 28 2009, 11:42
|- - HARMHARM   Цитата(Anatrulij @ Apr 28 2009, 14:42) Из...   Apr 28 2009, 12:11
- - Anatrulij   HARMHARM >> Да, конечно. Удобно положить кон...   Apr 28 2009, 12:49
|- - Сергей Борщ   Цитата(Anatrulij @ Apr 28 2009, 15:49) А ...   Apr 28 2009, 16:48
- - Anatrulij   А где в стартапе указано адрес начала программы, а...   Apr 29 2009, 13:07
|- - HARMHARM   Цитата(Anatrulij @ Apr 29 2009, 16:07) А ...   Apr 29 2009, 13:21
- - Anatrulij   А линкер это тоже отдельный фалик прикрученный к п...   Apr 29 2009, 13:57
|- - HARMHARM   Цитата(Anatrulij @ Apr 29 2009, 16:57) А ...   Apr 29 2009, 14:08
- - Anatrulij   я пишу на Keil   Apr 29 2009, 14:15
|- - HARMHARM   Цитата(Anatrulij @ Apr 29 2009, 17:15) я ...   Apr 29 2009, 14:18
|- - defunct   Цитата(Anatrulij @ Apr 29 2009, 17:15) я ...   Apr 29 2009, 14:25
- - Anatrulij   defunct>>для RVDS компилятора - см scatter f...   Apr 30 2009, 05:41
- - sergeeff   А Reset_Addr - это метка первой команды вашего boo...   Apr 30 2009, 05:55
|- - Anatrulij   Цитата(sergeeff @ Apr 30 2009, 08:55) Воо...   Apr 30 2009, 06:01
- - Anatrulij   Что-то я не могу найти в Кейле, где указывается с ...   Apr 30 2009, 09:24
|- - HARMHARM   Цитата(Anatrulij @ Apr 30 2009, 12:24) Чт...   Apr 30 2009, 11:36
- - Anatrulij   А где в scatter file указан адрес начала программи   Apr 30 2009, 11:42
|- - HARMHARM   Цитата(Anatrulij @ Apr 30 2009, 14:42) А ...   Apr 30 2009, 14:12
- - Anatrulij   А как с бутлоадера передать управление на загружен...   Apr 30 2009, 14:33
|- - HARMHARM   Цитата(Anatrulij @ Apr 30 2009, 17:33) А ...   Apr 30 2009, 18:49
- - Anatrulij   А для Keil?   May 1 2009, 07:32
|- - sergeeff   Цитата(Anatrulij @ May 1 2009, 10:32) А д...   May 1 2009, 10:15
- - Anatrulij   После окончания работы функции, куда передается уп...   May 1 2009, 10:50
|- - sergeeff   Цитата(Anatrulij @ May 1 2009, 13:50) Пос...   May 1 2009, 11:11
|- - Anatrulij   Цитата(sergeeff @ May 1 2009, 14:11) Так ...   May 2 2009, 11:25
|- - HARMHARM   Цитата(Anatrulij @ May 2 2009, 14:25) я п...   May 2 2009, 11:53
|- - Anatrulij   Цитата(HARMHARM @ May 2 2009, 14:53) Есть...   May 2 2009, 12:10
|- - HARMHARM   Цитата(Anatrulij @ May 2 2009, 15:10) Мож...   May 3 2009, 19:27
- - Anatrulij   Спасибо за ссылку. Сложновато пока для меня. может...   May 4 2009, 11:38
|- - zltigo   Цитата(Anatrulij @ May 4 2009, 14:38) или...   May 4 2009, 11:48
|- - Anatrulij   Цитата(zltigo @ May 4 2009, 14:48) Значит...   May 4 2009, 12:08
- - sergeeff   Никак не могу понять, что же вам не понятно? Сами ...   May 7 2009, 08:53
|- - Anatrulij   Цитата(sergeeff @ May 7 2009, 11:53) Ника...   May 7 2009, 11:38
|- - Сергей Борщ   Цитата(Anatrulij @ May 7 2009, 14:38) я к...   May 8 2009, 07:34
|- - Anatrulij   Был отвлечен другим делом, теперь можно вернуться ...   Jun 12 2009, 07:32
- - sergeeff   Для начала, считайте, что у вас пока одна единстве...   May 7 2009, 18:01
|- - Anatrulij   Цитата(sergeeff @ May 7 2009, 21:01) Для ...   May 7 2009, 19:34
- - Anatrulij   В IAP указано что можно писать до 4kB, а как быть ...   Jun 12 2009, 08:35
|- - SasaVitebsk   Цитата(Anatrulij @ Jun 12 2009, 11:35) В ...   Jun 12 2009, 10:54
|- - Anatrulij   Цитата(SasaVitebsk @ Jun 12 2009, 13:54) ...   Jun 12 2009, 11:08
|- - HARMHARM   Цитата(Anatrulij @ Jun 12 2009, 14:08) Из...   Jun 13 2009, 06:08
|- - Anatrulij   Цитата(HARMHARM @ Jun 13 2009, 09:08) Сек...   Jun 13 2009, 11:26
|- - HARMHARM   Цитата(Anatrulij @ Jun 13 2009, 14:26) Ес...   Jun 13 2009, 12:08
|- - Anatrulij   Цитата(HARMHARM @ Jun 13 2009, 15:08) Нет...   Jun 13 2009, 13:28
- - Anatrulij   Во флеш хочу писать блоками по 4кБ, для этого мне ...   Jun 17 2009, 07:42
|- - HARMHARM   Цитата(Anatrulij @ Jun 17 2009, 10:42) Во...   Jun 17 2009, 08:37
||- - Anatrulij   Цитата(HARMHARM @ Jun 17 2009, 11:37) Име...   Jun 17 2009, 08:40
|- - zltigo   Цитата(Anatrulij @ Jun 17 2009, 10:42) Ка...   Jun 17 2009, 14:50
|- - Anatrulij   Цитата(zltigo @ Jun 17 2009, 17:50) Не пи...   Jun 17 2009, 19:01
|- - zltigo   Цитата(Anatrulij @ Jun 17 2009, 22:01) Я ...   Jun 17 2009, 21:22
|- - Anatrulij   Цитата(zltigo @ Jun 18 2009, 00:22) Зачем...   Jun 18 2009, 05:47
|- - HARMHARM   О, да!   Jun 18 2009, 13:38
- - Anatrulij   Ложу я прошивку с помощью бутлоадера(сам он находи...   Jun 23 2009, 12:51
|- - Anatrulij   Цитата(Anatrulij @ Jun 23 2009, 15:51) мо...   Jun 24 2009, 06:19
- - Nixon   Вот только перейдете вы по этому адресу в user-mod...   Jun 24 2009, 07:29
|- - Anatrulij   Цитата(Nixon @ Jun 24 2009, 10:29) Вот то...   Jun 24 2009, 07:53
- - Nixon   Что именно тут комментировать? Вы вызываете SWI пр...   Jun 24 2009, 09:13
|- - Anatrulij   Цитата(Nixon @ Jun 24 2009, 12:13) Что им...   Jun 24 2009, 10:12
|- - Yaumen   Цитата(Сергей Борщ @ Jun 30 2010, 18:52) ...   Jul 1 2010, 05:30
- - Сергей Борщ   Цитата(alvy @ Jul 1 2010, 06:21) Можно с ...   Jul 1 2010, 09:40
- - Yaumen   Цитата(Сергей Борщ @ Jul 1 2010, 12:40) П...   Jul 1 2010, 10:56
- - Сергей Борщ   Цитата(Yaumen @ Jul 1 2010, 13:56) Имелос...   Jul 1 2010, 11:35
- - Yaumen   Цитата(Сергей Борщ @ Jul 1 2010, 14:35) Т...   Jul 1 2010, 12:20
- - MrYuran   Цитата(Yaumen @ Jul 1 2010, 16:20) Т.е., ...   Jul 1 2010, 12:34
- - Сергей Борщ   Цитата(Yaumen @ Jul 1 2010, 15:20) Т.е., ...   Jul 1 2010, 14:20


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

 


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


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