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

 
 
> ATMega: Bootloader & LOCKBITs, можно ли записать страницу перед началом BootSection
Warlord
сообщение Feb 3 2009, 09:50
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Приветствую! Ситуация следующая: ATMega1281, Написал BootLoader. BOOTSZ=01, соотвесно код начинается с адреса 0x1F800. Прошиваю, ставлю LOCKBIT BLB1 Mode 3 - запрет SPM и LPM в BootSection.
Далее BootLoader пишет рабочую программу с адреса 0x0000 скажем по адрес 0x48FF и потом пытается записать одну страницу с контрольной суммой по адресу 0x1F700, т.е. предыдущую началу BootSection. Результатом является запись на странице по адресу 0x4900, хотя адрес записи указываю как константу.
Код
    __AddrToZ24ByteToSPMCR_SPM((void __farflash *)0x1F700, 0x05);

Максимальный адрес по которому страница пишется правильно - это 0x1EF00.
Код
    __AddrToZ24ByteToSPMCR_SPM((void __farflash *)0x1EF00, 0x05); // program

Возникает странный промежуток c 0x1EF00 по 0x1F800 где SPM пишет страницу по неверному адресу. Если LOCKBIT - неактивны, т.е. защиты нет, то всё нормально.
Пробовал сделать BOOTSZ=00, начало BootSection - 0x1F000 - ситуация повторяется. При LOCKBIT BLB1 Mode 3 максимальный адрес на который пишется страница - 0x1E700. Опять странный промежуток.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
defunct
сообщение Feb 3 2009, 11:25
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Если чем-то поможет:
на m128 и m162 с такими параметрами LOCK'ов как у Вас запись в NRWW работает правильно.


Цитата
Опять странный промежуток.

Может где-то ошибка с адресами.

PS: Хотел приатачить пример, да что-то форум не дает sad.gif или у меня эксплорер выступает...
Go to the top of the page
 
+Quote Post
SysRq
сообщение Feb 3 2009, 17:31
Сообщение #3


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168





При BOOTSZ=01 адрес начала BLS равен (0xF800 в словах)*2 = 0x1F000 в байтах от начала flash.
При BOOTSZ=00 адрес начала BLS равен (0xF000 слов)*2 = 0x1E000 в байтах от начала flash.

А у вас не так unsure.gif
Go to the top of the page
 
+Quote Post
Warlord
сообщение Feb 4 2009, 08:08
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 23-09-05
Из: Москва
Пользователь №: 8 874



Спасибо огромное smile.gif Как всегда путаница с этими словами..
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th August 2025 - 12:26
Рейтинг@Mail.ru


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