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

 
 
> Bootloader для MSP430, как написать бутлоадер для МСП430
asket
сообщение Oct 15 2007, 10:09
Сообщение #1


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

Группа: Участник
Сообщений: 91
Регистрация: 24-08-06
Из: Москва
Пользователь №: 19 809



Я в этом деле новичок, недавно начал заниматься этой деятельностью, мне поручили написать Bootloader. Задача: имеется шина, будь это COM-порт или собственная шина, не важно какая, нужно по данной шине закачать с компьютера прошивку и залить его во флеш в целях ее обновления, вопрос: как это сделать это по умному? Кто и что посоветует? Может примерчик какой-нить.. К сожалению в отличии от других процев у MSP430 встроенных бутлоадеров я так понимаю нету. Компилятор IAR 3.42.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Oct 11 2011, 23:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Нет, Сергей, как сделать "перемещаемые" вектора прерываний я лично понимаю. Для пользовательского приложения "аппаратные" вектора прерываний как таковые вообще не используются. Пишутся лишь функции-обработчики прерываний, адреса которых "раскладываются" в таблицу переходов, расположенную в ОЗУ.
У ТС же возник вопрос по совмещению двух проектов/прошивок в одном кристалле и вызове одного из другого. Как я понял, ты предлагаешь замещать вектор сброса тем, который генерируется при компиляции именно бутлоадера. А то содержимое вектора RESET, которое компилируется в пользовательском приложении из прошивки выкинуть, использовав его лишь как адрес для старта приложения. Так?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 12 2011, 06:14
Сообщение #3


Гуру
******

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



QUOTE (rezident @ Oct 12 2011, 02:16) *
Нет, Сергей, как сделать "перемещаемые" вектора прерываний я лично понимаю. Для пользовательского приложения "аппаратные" вектора прерываний как таковые вообще не используются. Пишутся лишь функции-обработчики прерываний, адреса которых "раскладываются" в таблицу переходов, расположенную в ОЗУ.
Верно. И раскладывает их туда загрузчик перед тем, как запустить приложение. И берет он их из таблицы, которая расположена в фиксированном месте приложения. И таблицей этой является содержимое сегмента INTVEC приложения.
QUOTE (rezident @ Oct 12 2011, 02:16) *
У ТС же возник вопрос по совмещению двух проектов/прошивок в одном кристалле и вызове одного из другого. Как я понял, ты предлагаешь замещать вектор сброса тем, который генерируется при компиляции именно бутлоадера. А то содержимое вектора RESET, которое компилируется в пользовательском приложении из прошивки выкинуть, использовав его лишь как адрес для старта приложения. Так?
Зачем же выбрасывать и замещать? Пусть он лежит в таблице векторов приложения. Тогда загрузчик точно будет знать, откуда его брать. Вот смотрите, я в сообщении №26 давал пример. Вот структура таблицы векторов приложения, т.е. полное содержимое сегмента INTVEC приложения:
CODE
__attribute__ ((section(".app_vectors"))) struct
{
    void *Vectors[INT_VECTORS_COUNT - 1];
    void (*ResetVector)();
} Application;
Тут и все вектора прерываний и вектор сброса.

Вот загрузчик копирует эту таблицу в ОЗУ, в то место, откуда берут адреса функции-трамплины:
CODE
        uint_fast8_t i = INT_VECTORS_COUNT - 1; // do not copy reset vector
        while(i--)
        {
            InterruptVectors[i] = Application.Vectors[i];
        }

А вот из этой же таблицы берется адрес, на который надо перейти для старта приложения:
CODE
Application.ResetVector();


А "железный" вектор RESET указывает на старт загрузчика. Тогда и приложение знает, как запустить загрузчик - адрес его точки входа всегда лежит в ячейках по адресу 0xFFFE.


--------------------
На любой вопрос даю любой ответ
"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

Сообщений в этой теме
- asket   Bootloader для MSP430   Oct 15 2007, 10:09
- - VAI   ЦитатаК сожалению в отличии от других процев у MSP...   Oct 15 2007, 10:36
|- - asket   Цитата(VAI @ Oct 15 2007, 14:36) Плохо по...   Oct 15 2007, 11:12
- - rezident   asket, вы сначала разберитесь как внутрипрограммно...   Oct 15 2007, 12:11
|- - asket   Цитата(rezident @ Oct 15 2007, 16:11) ask...   Oct 15 2007, 12:50
- - VAI   Нашел на http://tech.groups.yahoo.com/group/msp430...   Oct 15 2007, 13:21
|- - asket   Цитата(VAI @ Oct 15 2007, 17:21) Нашел на...   Oct 15 2007, 13:56
|- - rezident   Цитата(asket @ Oct 15 2007, 19:56) И еще ...   Oct 15 2007, 18:40
|- - asket   Цитата(rezident @ Oct 15 2007, 22:40) Дык...   Oct 19 2007, 08:10
|- - asket   Неужели останусь без ответа и привета?   Oct 19 2007, 14:56
|- - gotty   Цитата(asket @ Oct 19 2007, 11:10) Окей, ...   Oct 22 2007, 06:19
|- - asket   Еще такой вопрос по поводу сегментации флеш-памяти...   Oct 23 2007, 13:27
|- - gotty   Цитата(asket @ Oct 23 2007, 16:27) Еще та...   Oct 23 2007, 14:16
|- - asket   Цитата(gotty @ Oct 23 2007, 18:16) Можно ...   Oct 23 2007, 15:48
|- - NoName   Цитата(asket @ Oct 23 2007, 17:48) Это мн...   Nov 1 2007, 13:39
- - SSerge   Узнать размер именно функции нельзя. Но можно указ...   Oct 19 2007, 19:16
- - CAHTA_1939   я тут в msp430x1xx_user_guide прочитал что флеш па...   Oct 29 2007, 20:36
|- - rezident   Цитата(CAHTA_1939 @ Oct 30 2007, 01:36) я...   Oct 29 2007, 20:53
- - АДИКМ   Если Вам надо быстрое блочное программирование, то...   Oct 30 2007, 13:13
- - KARLSON   Здравствуйте. Собрался писать загрузчик. Т.к. в MS...   Oct 5 2011, 07:31
|- - rezident   Цитата(KARLSON @ Oct 5 2011, 12:31) - чт...   Oct 5 2011, 17:26
- - KARLSON   При двух проектах, ведь будет две функции main(); ...   Oct 10 2011, 05:20
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 10 2011, 08:20) А пр...   Oct 10 2011, 06:57
- - KARLSON   И так. Создаю пример. Вопрос: правильно ли прописа...   Oct 10 2011, 11:34
|- - rezident   Цитата(KARLSON @ Oct 10 2011, 16:34) И та...   Oct 10 2011, 19:44
|- - Сергей Борщ   QUOTE (rezident @ Oct 10 2011, 22:44) Boo...   Oct 11 2011, 06:12
|- - rezident   Цитата(Сергей Борщ @ Oct 11 2011, 11:12) ...   Oct 11 2011, 15:08
|- - Сергей Борщ   QUOTE (rezident @ Oct 11 2011, 18:08) В в...   Oct 11 2011, 17:32
|- - rezident   Цитата(Сергей Борщ @ Oct 11 2011, 22:32) ...   Oct 11 2011, 17:59
|- - Сергей Борщ   QUOTE (rezident @ Oct 11 2011, 20:59) Дык...   Oct 11 2011, 22:32
- - KARLSON   А что делает запись ((void(*)() )0x2200)();? Если ...   Oct 12 2011, 12:42
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 12 2011, 15:42) А чт...   Oct 12 2011, 13:07
- - KARLSON   Захотел я сделать прошивку с переходами между прил...   Oct 13 2011, 06:35
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 13 2011, 09:35) Кста...   Oct 13 2011, 15:56
- - Kurt   Мои пять копеек. Вариант, если в устройстве есть в...   Oct 21 2011, 04:49


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

 


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


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