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

 
 
> Bootloader для ATtiny461, что-то не получается...
ivainc1789
сообщение Jan 27 2010, 08:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



Девайс на ATtiny461 расположен в труднодоступном месте. Хотелось бы обновлять flash и eeprom, устанавливать lock bits дистанционно через интерфейс USI. Пишу в IAR EWAVR v5.40. Как правильно оформить бутлоадер для такого кристалла?
Так как памяти всего 4к допустимо ли размещать бутлоадер совместно с осн программой и расположить его в самом конце памяти. Расположить его там вроде нет проблем, но как оформить передачу управления ему при старте с адреса 0x000? Как это оформить в IAR и именно для ATtiny461, где средства self-programming ограничены?
Ясно, что запускать саму программу с адреса 0x000 и в ней принимать решение о старте бутлоадера нельзя, т. к. возможен неудачный апгрейд прошивки и соотв. полная неоперабельность девайса по сбросу.
В IAR в настройках конфига линкера есть некая возможность изменить точку старта программы, но как этим пользоваться я даже в помощи не нашел, есть только короткое описание в руководстве к IDE...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр Куличо...
сообщение Jan 27 2010, 23:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



а в чем смысл установки лок-битов через usi? Ведь если Вы запрграммировали их одни раз, то после перепрограммироания бутлоадером они останутся неизменными, т.е. их повторно программироват не нужно. Эти биты запрещают чтение и запись в/из флеша только в режимаж High-voltage и Serial Programming mode. А на самопрограммирование они не влияют. Точно также, как самопрограммирование не влияет на них.
Цитата
Ясно, что запускать саму программу с адреса 0x000 и в ней принимать решение о старте бутлоадера нельзя, т. к. возможен неудачный апгрейд прошивки и соотв. полная неоперабельность девайса по сбросу.

Можно сделать следующим образом.
Бутлоадер расположить в самом начале программы, сразу после векторов прерываний.
После бутлоадера на границе страницы будет располагаться точка входа в приложение. Она должна быть постоянна. Пускай ee адрес будет равен APPSTART.
Таблицу векторов прерываний жестко прописать следующим образом:
нулевой вектор - на старт бутлоадера, в котором принимается решение о запуске программы.
во всех последующих векторах прописать переход на APPSTART байт/слов вперед. На авр-асме это будет выглядеть следующим образом:
Код
.ORG 0x00
rjmp  BootStart
rjmp  APPSTART+1
rjmp  APPSTART+2
rjmp  APPSTART+3
.........
rjmp  APPSTART+17
rjmp  APPSTART+18

BootStart:
      // if ( crc(application) == 0) && app.startEnabled )
      //   goto APPSTART
      //    
.................
// Далее выравнивание на границу страницы
dummy:
.equ PAGESIZE_W = PAGESIZE/2
.equ PS_W = LOG2(PAGESIZE_W)
.ORG ((dummy+PAGESIZE_W-1)>>PS_W)<<PS_W
APPSTART:

В коде бутлоадера позаботится о том, чтобы он не переписал сам себя.
Естественно, что бутлоадер не должен использовать прерывания.

Основная программа (application) при этом будет иметь почти обычный вид.
Но в директивах к векторам нужно будет добавить значение APPSTART
#pragma vector=0x14+APPSTART
или переопределить эти самые векторы (так вроде универсальней)
В настройках линкера нужно будет позаботиться о том, чтобы остальное приложение разместилось под областью прерываний
Так же как-то нужно указать новое место вектора прерывания по сбросу. Как это сделать не знаю, но для обычных бутлоадеров это делалось всегда. Возможно, достаточно в xcl-файле изменить границы сегмента INTVEC.

Р.S. В правках xcl-файла я не особо силен, поэтому конкретных вещей предлагать не стану. Разве что никто уже ничего не поскажет. Хотя там, на первый взгляд, нет ничего сложного.
Go to the top of the page
 
+Quote Post



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

 


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


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