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

 
 
> Bootloader на AVRGCC
_Артём_
сообщение Mar 19 2012, 20:32
Сообщение #1


Гуру
******

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



Здраствуйте.
Пробую написать boot на GCC (m128).
Ввёл такой код:

CODE

#include <avr/boot.h>
#include <avr/io.h>

__attribute__ ((section (".bootloader"))) int main(void)
{
PORTC=0x15;
PORTE=0x53;
volatile unsigned long Count=10;
unsigned short page_number;
unsigned char FlashPage[SPM_PAGESIZE];
for (unsigned short i=0; i<SPM_PAGESIZE; i++) {FlashPage[i]=i&255;}

for (page_number=0; page_number<496; page_number++) {
FlashPage[0]=page_number&255;
uint16_t i;
uint32_t page=page_number;
uint8_t *buf=FlashPage;
page*=SPM_PAGESIZE;

// Disable interrupts.

boot_rww_enable ();


boot_page_erase (page);
boot_spm_busy_wait (); // Wait until the memory is erased.

for (i=0; i<SPM_PAGESIZE; i+=2) {
// Set up little-endian word.

uint16_t w = *buf++;
w += (*buf++) << 8;

boot_page_fill (page + i, w);
}

boot_page_write (page); // Store buffer in flash page.
boot_spm_busy_wait(); // Wait until the memory is written.

// Reenable RWW-section again. We need this if we want to jump back
// to the application after bootloading.

boot_rww_enable ();
}
}

Откомпилировал и появились вопросы.
1) В AvrStudio код расположился начиная от адреса 0, несмотря на объявление main как __attribute__ ((section (".bootloader"))). Очевидно что-то требуется указать дополнительно. Что и где?
В AtmelStudio 6 код расположился начиная с адресов 0x1F000, что правильно, но непонятно почему не 0x1F800 или какой другой вариант из 3 оставшихся (пока не понял эту студию).
2) В обоих случаях в начале кода присутствует таблица векторов, которая не нужна в данном случае. Как её убрать?

Спасибо.
Go to the top of the page
 
+Quote Post



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

 


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


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