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

 
 
> Bootloader для Mega48
_Артём_
сообщение Mar 27 2012, 16:16
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Вечер добрый.
Есть задача под М48 и нужно при этом иметь возможность обновления программы.
Посмотрел документ от атмела (AVR112: TWI Bootloader for devices without boot section).
Реализовано так:
1. Переход на бут происходит с адреса 0 (раздельных областей для программы и загрузчика нет).
2. Выход из загрузчика:
Код
void (*FuncPtr) (void) = (void (*)(void)) ((LAST_INTVECT_ADDRESS + 2) / 2);    // Set up function pointer to address after last interrupt vector.
  FuncPtr ();


То есть точка входа для основной программы - это первый адрес после таблицы векторов. Но можно ли быть уверенным что это всегда так (для IAR)?
И ещё: насколько универсальны фунции самопрограммирования использованные в appn (ProcessPageErase, ProcessPageUpdate, Erase_One_Page)?Будут ли они работать на M8, M88? Кто-нибудь ими пользовался?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Artem_Petrik
сообщение Mar 31 2012, 19:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



ИМХО наиболее прямой подход - переписать cstartup под себя.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 31 2012, 19:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Artem_Petrik @ Mar 31 2012, 22:23) *
ИМХО наиболее прямой подход - переписать cstartup под себя.

Каким образом?
Это и непонятно.
Идеи нужны...
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Mar 31 2012, 19:31
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Цитата(_Артём_ @ Mar 31 2012, 22:26) *
Каким образом?
Это и непонятно.
Идеи нужны...

Ну самым обычным: находите, где в ИАРе лежит cstartup.asm (или как его там .a90? дома ИАР не стоит), копируете его к себе в папку с проектом, подключаете в проект (теперь вместо стандартного, будет использоваться он), и правите его как душе угодно.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 1 2012, 19:53
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Artem_Petrik @ Mar 31 2012, 22:31) *
Ну самым обычным: находите, где в ИАРе лежит cstartup.asm (или как его там .a90? дома ИАР не стоит), копируете его к себе в папку с проектом, подключаете в проект (теперь вместо стандартного, будет использоваться он), и правите его как душе угодно.


Подключил startup и добавил в него:
Код
    MODULE    ?START
    COMMON  START_SEGMENT:CODE:ROOT(1)

        EXTERN  ?C_STARTUP
        PUBLIC  ?APP_START_VECT

?APP_START_VECT:
    XJMP    ?C_STARTUP

    END

Go to the top of the page
 
+Quote Post



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

 


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


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