Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Мне тоже :) Мега168, 3В, бутлодырь, WDT -off, BOD -off. После прошивки "main" секции flash,

Отправлено Гудвин 10 мая 2008 г. 11:27
В ответ на: ;) отправлено Aleksey75 10 мая 2008 г. 11:00

выполняю это:

cli();
/* Enable change of Interrupt Vectors */
MCUCR = 1; //(IVCE);
/* Move interrupts to Main */
MCUCR = 0;//(IVSEL);
asm volatile("jmp 0");

Работает это дело уже тысячах устройств с самым разнообразным способом загрузки - и по usart, и с таблеток даллас, и по ethernet, и даже по RFID (индутивная спязь).
А тут, сцуко, наткнулся на такую шнягу:
Гружу с SD карточки (быстро):

while (blkcnt)
{
WORD page = cnt<<7;
boot_page_erase(page);
boot_spm_busy_wait();
for (i=0; i<SPM_PAGESIZE; i+=2)
{
// Set up little-endian word.
union temp w;
w.byte[0] = buf[wbufaddr++];
w.byte[1] = buf[wbufaddr++];
boot_page_fill(page + i, w.word);
}
boot_page_write(page); // Store buffer in flash page.
boot_spm_busy_wait(); // Wait until the memory is written.

cnt++;
blkcnt--;
}


, передаю управление по адресу 0

Если на месте "asm volatile("jmp 0");" вставить "while(1);", то при дальнейшем чтении памяти программатором, вижу, что флэш то, что и должно быть - записанная бутлодырем прога.
Подцепил дракон по DW - если установить бряк на ""asm volatile("jmp 0")", то следующий шаг в отладчике кажет нормальный вектор по адресу 0 и все работает... Если ставлю бряк на адресу 0 - туда не попадает...

Может я заработался? :)
Или GCC кривит (но в ассемблерном листинге все ОК)...







Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сложите три и три:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru