AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
06.09.2014, 09:04
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Бутлоадер на мега8
Пытаюсь что либо писать во флэш и получаю чистую только значения FF.
Проект в архиве. Там же протеусовский проектик для теста. Фьюзы H-DA, L-D4.
В вызове функции записи boot_program_page указан адресс со здвигом. Экспериментальным путем установил (правда в симуляции), что пишет в адрес умноженный на 2. Поэтому и сдвиг сделал.
Пробовал и без сдвига на реальном кристалле - эффект тот же.
Где накосячил разобраться не могу.
__________________
|
|
|
|
06.09.2014, 13:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,031
Сказал спасибо: 3,032
Сказали Спасибо 3,205 раз(а) в 2,175 сообщении(ях)
|
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.
|
|
|
|
06.09.2014, 15:07
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Бутлоадер на мега8
Уррра! Заработало!
1. Функции *_safe реализованы в хэдере */boot.h и их отличие от обычных, что перед этим они ждут установки флага SPMEN. Проще говоря у них тотже код, только пере вызовом добавлен boot_spm_busy_wait().
2. Это все оформленно в виде макросов, как и все остальные функции boot_*.
3. Документация к данному случаю не имеет никакого значения. После исправления косяка в виде размера переменной адреса (должна быть 32 бита) все заработало замечательно. Я написал, что адрес нужно ДЕЛИТЬ. Но после исправления работает и без деления.
__________________
|
|
|
|
06.09.2014, 16:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Бутлоадер на мега8
Сообщение от svd71
|
После исправления косяка в виде размера переменной адреса (должна быть 32 бита)
|
Это почему вдруг? На АВР всегда был 16-битный адрес, или я что-то пропустил?
|
|
|
|
06.09.2014, 22:58
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Бутлоадер на мега8
я непросто так думал, а был уверен, что замена uint32_t на uint16 _t абсолютно никак не скажется - ведь регистр все равно 16ти разрядный. Тем более тесты показывали в симуляторах, что все идет по плану.
Подозреваю, что это какой-то косячек от avr-gcc. может быть что то связанное со знаковыми и беззнаковыми типами.
__________________
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 19:59.
|
|