roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 дек 2024, 01:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 16:31 
Не в сети

Зарегистрирован: 26 сен 2010, 18:03
Сообщения: 36
Откуда: Луганск, ЛНР
Добрый день всем! недавно подсел на atmel и решил разобраться полностью с этим зверем, решил написать свой велосипед, ой бутлоадер. Но к сожелению в протеус не пишутся страницы, то есть вроде бы все делаю по мануалам, а записуется страница в область программной памяти с FF коммандами, моих команд сохраненных в временной странице как бы и нету. Вот кусок кода с области bootloadera, кто знает в чем беда, направте в нужное русло пожалуйста.

Код:
commandWriteChip:

        clr     ZH ; 0 адресс страницы
        clr     ZL
                                                ; SPMEN – разрешает вызов команды SPM в следующих 4х тактах
                                                ; PGERS – команда на очистку страницы флеша
        ldi     R17, (1<<PGERS) | (1<<SPMEN)    ; в R17 передаётся параметр в регистр SPMCR
        call    commandSPM
        ldi     R17, (1<<RWWSRE) | (1<<SPMEN)   ; ре-инициализация страницы
        call    commandSPM
; выше я по идее очистил страницу программной памяти, в которую буду писать

        ldi     R18, 0x20                       ; количество слов в странице (32)
        ldi     ZH, 0b00000000                 ;
        ldi     ZL, 0b00000000                 ;

     asddd:
; ниже 4 комманды которые прописуются в регистр r0:r1 и в итоге они должны быть записаны в страницу
        ldi     r16, 0xA0   
        mov     r1, r16
        ldi     r16, 0xBB   
        mov     r0, r16

        adiw ZH:ZL, 2 ; инкремент адресса позиции слов

        ldi     R17, (1<<SPMEN)    ; в R17 передаётся параметр в регистр SPMCR
        call    commandSPM     ; собственно запись во временую страницу

        dec     R18
        brne    asddd

;ниже идет запись временной страницы в память программы по адреессу начиная с 0x20

        ldi     ZH, 0b00000000
        ldi     ZL, 0b00010000

                                                ; PGERS – команда на очистку страницы флеша
        ldi     R17, (1<<PGWRT) | (1<<SPMEN)    ; в R17 передаётся параметр в регистр SPMCR
        call    commandSPM
        ldi     R17, (1<<RWWSRE) | (1<<SPMEN)   ; ре-инициализация страницы
        call    commandSPM




до записи в программе идет:

Код:
0000: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0020: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................

после стирания


Код:
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF 00 00 FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................


после записи


Код:
0000: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0040: 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0050: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
0060: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................



вот как бы показывается что оно стирает, а моих данных не пишит, так же пробовал писать страницу не на 0х20 адресс, а на 0х00, затертый мною до этого.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 22:06 
Не в сети

Зарегистрирован: 26 сен 2010, 18:03
Сообщения: 36
Откуда: Луганск, ЛНР
неужели никто не писал свой загрузчик?(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 22:18 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
наверно надо архив с проектами приложить и версии ПО указать

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 23:03 
Не в сети

Зарегистрирован: 26 сен 2010, 18:03
Сообщения: 36
Откуда: Луганск, ЛНР
вот собственно проект, ISUS PROTEUS 7.7 SP2
Сам код находится в atmega8515.asm файле, то есть микроконтролер (U2 - atmega8515-2.asm ) передает информацию контроллеру U1 о том что нужно записать флеш.
Начало процедуры по адрессу 0x1828.


Вложения:
ATMEGA8515.rar [51.59 КиБ]
Скачиваний: 0
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 23:18 
Не в сети
Аватара пользователя

Зарегистрирован: 25 июл 2009, 16:35
Сообщения: 104
Откуда: Ессентуки
прог. языки: ASM , Lisp , C# :)
ФИО: Алексей
Не вижу инициализации стека, без неё вызовы не работают. И защиту надо прикрутить что бы бут на себя не писАл.

_________________
Алокоголизм - излечим, пьянство - нет.
Peace-death.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 23:26 
Не в сети

Зарегистрирован: 26 сен 2010, 18:03
Сообщения: 36
Откуда: Луганск, ЛНР
1. ммм что за инициализация стека?))
ldi r16, low(RAMEND)
out spl, r16
ldi r16, high(RAMEND)
out sph, r16
если это, то вроде и без неё работали вызовы подпрограмм и возвращались обратно.
2. ну сначала бы просто мне чето кудато набрасать чтобы работало, а потом я и с делаю ограничения на запись)


Последний раз редактировалось wiskas 12 мар 2012, 23:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 23:27 
Не в сети
Аватара пользователя

Зарегистрирован: 25 июл 2009, 16:35
Сообщения: 104
Откуда: Ессентуки
прог. языки: ASM , Lisp , C# :)
ФИО: Алексей
Ну вот стандартная процедура
Код:
ldi R16, low(RAMEND)
out SPL, R16
ldi R16, high(RAMEND)
out SPH, R16

_________________
Алокоголизм - излечим, пьянство - нет.
Peace-death.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не пишит страницы в avr bootloader (proteus)
СообщениеДобавлено: 12 мар 2012, 23:44 
Не в сети

Зарегистрирован: 26 сен 2010, 18:03
Сообщения: 36
Откуда: Луганск, ЛНР
все равно гад не пишет(


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 14


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO