Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 06.09.2014, 09:04  
svd71
Временная регистрация
 
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
svd71 на пути к лучшему
По умолчанию Бутлоадер на мега8

Пытаюсь что либо писать во флэш и получаю чистую только значения FF.

Проект в архиве. Там же протеусовский проектик для теста. Фьюзы H-DA, L-D4.
В вызове функции записи boot_program_page указан адресс со здвигом. Экспериментальным путем установил (правда в симуляции), что пишет в адрес умноженный на 2. Поэтому и сдвиг сделал.
Пробовал и без сдвига на реальном кристалле - эффект тот же.
Где накосячил разобраться не могу.
Вложения:
Тип файла: rar m8sim.rar (63.2 Кб, 37 просмотров)
Реклама:
__________________
svd71 вне форума  
Непрочитано 06.09.2014, 13:40  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,922
Сказал спасибо: 2,985
Сказали Спасибо 3,162 раз(а) в 2,146 сообщении(ях)
ForcePoint на пути к лучшему
Стрелка Re: Бутлоадер на мега8

Сообщение от svd71 Посмотреть сообщение
Пытаюсь что либо писать во флэш и получаю чистую только значения FF.
Если используются прерывания - начните с раскомментирования этоих кусков в boot_program_page:
Код:
.....
        //uint8_t sreg;
        // Disable interrupts.
        //sreg = SREG;
        //cli();
.....
.....
        // Re-enable interrupts (if they were ever enabled).
        //SREG = sreg;
Почему - TFM. Инструкция работы с памятью программ (SPM) лимитирована по времени.

Кстати, что-то не вижу в исходниках реализацию функций boot_page_erase_safe, boot_page_fill_safe , boot_page_write_safe и boot_rww_enable ().

Сообщение от svd71 Посмотреть сообщение
В вызове функции записи boot_program_page указан адресс со здвигом. Экспериментальным путем установил (правда в симуляции), что пишет в адрес умноженный на 2. Поэтому и сдвиг сделал.
Пробовал и без сдвига на реальном кристалле - эффект тот же.
Где накосячил разобраться не могу.
А чего экспериментировать, если в документации на контроллер и в комментариях всё расписано, почему умножается на два.

P.S. Как вариант можете сравнить этот код с кодом начального загрузчика от AVR Butterfly - http://www.atmel.com/images/AVR109.zip.
ForcePoint вне форума  
Непрочитано 06.09.2014, 15:07  
svd71
Временная регистрация
 
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
svd71 на пути к лучшему
По умолчанию Re: Бутлоадер на мега8

Уррра! Заработало!

1. Функции *_safe реализованы в хэдере */boot.h и их отличие от обычных, что перед этим они ждут установки флага SPMEN. Проще говоря у них тотже код, только пере вызовом добавлен boot_spm_busy_wait().

2. Это все оформленно в виде макросов, как и все остальные функции boot_*.

3. Документация к данному случаю не имеет никакого значения. После исправления косяка в виде размера переменной адреса (должна быть 32 бита) все заработало замечательно. Я написал, что адрес нужно ДЕЛИТЬ. Но после исправления работает и без деления.
__________________
svd71 вне форума  
Непрочитано 06.09.2014, 16:46  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Бутлоадер на мега8

Сообщение от svd71 Посмотреть сообщение
После исправления косяка в виде размера переменной адреса (должна быть 32 бита)
Это почему вдруг? На АВР всегда был 16-битный адрес, или я что-то пропустил?
niXto вне форума  
Непрочитано 06.09.2014, 22:58  
svd71
Временная регистрация
 
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
svd71 на пути к лучшему
По умолчанию Re: Бутлоадер на мега8

я непросто так думал, а был уверен, что замена uint32_t на uint16 _t абсолютно никак не скажется - ведь регистр все равно 16ти разрядный. Тем более тесты показывали в симуляторах, что все идет по плану.

Подозреваю, что это какой-то косячек от avr-gcc. может быть что то связанное со знаковыми и беззнаковыми типами.
__________________
svd71 вне форума  
 

Закладки

Метки
atmega8, bootloader, proteus, uart
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ШИМ, синусоида на Мега8? diglook Микроконтроллеры, АЦП, память и т.д 60 12.09.2016 11:46
Бутлоадер Attiny85, как? svad0 Микроконтроллеры, АЦП, память и т.д 12 06.12.2011 15:50
Мега8 + Акселерометр putmannn Микроконтроллеры, АЦП, память и т.д 2 29.11.2011 16:13
Бутлоадер в стиле "Спектрума" MasterMushi Микроконтроллеры, АЦП, память и т.д 66 28.01.2011 13:45
Бутлоадер Bf4 Микроконтроллеры, АЦП, память и т.д 5 17.12.2010 20:12


Часовой пояс GMT +4, время: 11:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot