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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
Jhohn
сообщение Sep 14 2010, 14:21
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(IJAR @ Sep 14 2010, 18:09) *
Так, я кажется понял - Вы либо Fuse биты исправте на начало секции загрузчика с 0xF000 или
в xcl файле укажите правильный адрес начала FLASH (0xFC00) и все что это тянет за собой


Извиняюсь, тот файл, что подсунул, это уже с экспериментами был.

Изменил адреса.
Прерывания, как прежде сваливаются не понятно куда. Проверяю следующим образом: в прерывании мигание светотдиода, при разрешении этого прерывания программа выходит с главного цикла (в главном цикле мигание с значительно меньшей частотой чем в прерывании). При переносе кода в начало памяти прерывания проходят успешно - светодиод мигает часто.

Файл линковки: с адреса 0хFC00
Файл *.hex - генерируемый с iar
Файл чтения памяти из микроконтроллера.

Сообщение отредактировал Jhohn - Sep 14 2010, 14:23
Прикрепленные файлы
Прикрепленный файл  lnkusb647s.txt ( 5.84 килобайт ) Кол-во скачиваний: 85
Прикрепленный файл  series6_7_usb_software_library_template.txt ( 2.33 килобайт ) Кол-во скачиваний: 30
Прикрепленный файл  FC00.txt ( 180.01 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
IJAR
сообщение Sep 14 2010, 14:33
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



Цитата(Jhohn @ Sep 14 2010, 18:21) *
Извиняюсь, тот файл, что подсунул, это уже с экспериментами был.

Изменил адреса.
Прерывания, как прежде сваливаются не понятно куда. Проверяю следующим образом: в прерывании мигание светотдиода, при разрешении этого прерывания программа выходит с главного цикла (в главном цикле мигание с значительно меньшей частотой чем в прерывании). При переносе кода в начало памяти прерывания проходят успешно - светодиод мигает часто.

Файл линковки: с адреса 0хFC00
Файл *.hex - генерируемый с iar
Файл чтения памяти из микроконтроллера.

Только что проверил Ваш hex файл в симуляторе AVR STUDIO
при стрте программы с адреса 0xFC00 - прерывания
прекрасно генерится и приходит на 0x7E02(word) или 0xFC04 (byte)
У Вас точно Fuse битами установлено начало загрузчика с адреса 0x7E00 ???


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Sep 14 2010, 14:46
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(IJAR @ Sep 14 2010, 18:33) *
Только что проверил Ваш hex файл в симуляторе AVR STUDIO
при стрте программы с адреса 0xFC00 - прерывания
прекрасно генерится и приходит на 0x7E02(word) или 0xFC04 (byte)

Спасибо большое. Это хорошая информация.

Цитата(IJAR @ Sep 14 2010, 18:33) *
У Вас точно Fuse битами установлено начало загрузчика с адреса 0x7E00 ???


Да. "boot Flash size=1024 words start address=$7E00"
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Sep 16 2010, 13:53
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(IJAR @ Sep 14 2010, 18:33) *
У Вас точно Fuse битами установлено начало загрузчика с адреса 0x7E00 ???


Решил проблему
Fuses:
"boot Flash size=512 words start address=$7F00" бут должен начинаться с $FC00 = 2*$7E00
"boot Flash size=1024 words start address=$7E00" бут должен начинаться с $F800 = 2*$7С00
"boot Flash size=2048 words start address=$7C00" бут должен начинаться с $F000 = 2*$7800
"boot Flash size=4096 words start address=$7800"

Почему именно так прошиваются фьюзы, так и не понял. Только в этом случае прерывания пошли успешно.
Go to the top of the page
 
+Quote Post
xelax
сообщение Sep 16 2010, 14:37
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Потому что в линкере адресация байтовая, а при установке фьюзов адресация пословная указывается.
для avr 1 word = 2 bytes.

отсюда адрес из линкерного скрипта делите пополам и получаете адрес который предлагает AVRStudio при установки фьюзов.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Sep 16 2010, 18:10
Сообщение #21


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(xelax @ Sep 16 2010, 18:37) *
Потому что в линкере адресация байтовая, а при установке фьюзов адресация пословная указывается.
для avr 1 word = 2 bytes.

отсюда адрес из линкерного скрипта делите пополам и получаете адрес который предлагает AVRStudio при установки фьюзов.

Об этом уже где-то писал Сергей Борщ. Может пора это в FAQ?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Sep 17 2010, 06:01
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(xelax @ Sep 16 2010, 18:37) *
Потому что в линкере адресация байтовая, а при установке фьюзов адресация пословная указывается.
для avr 1 word = 2 bytes.

отсюда адрес из линкерного скрипта делите пополам и получаете адрес который предлагает AVRStudio при установки фьюзов.


Все верно, об этом писал arttab в "bootloader_IAR.pdf" см. тему ( http://electronix.ru/forum/index.php?showt...8301&st=45)

Проделаю, вышесказанное xelax:

"адрес из линкерного скрипта делите пополам"
0xF000 / 2 = 0x7800

"получаете адрес который предлагает AVRStudio при установки фьюзов"
т.е. выставлять должен "boot Flash size=4096 words start address=$7800" при адресе в линкере 0xF000.

Именно так как вы описали я и выставлял fuses, и при этом прерывания не проходили.

Мне не понятно следующее (выставив fuses как описано ниже прерывания стали проходить нормально) :

Fuses:
"boot Flash size=512 words start address=$7F00" адрес в линкере (бут должен начинаться с) $FC00 = 2*$7E00
"boot Flash size=1024 words start address=$7E00" адрес в линкере (бут должен начинаться с) $F800 = 2*$7С00
"boot Flash size=2048 words start address=$7C00" адрес в линкере (бут должен начинаться с) $F000 = 2*$7800
"boot Flash size=4096 words start address=$7800"


AVRStudio 4.18 build 700
IAR C/C++ Compiler for AVR 5.50.0 (5.50.0.50277)

Сообщение отредактировал Jhohn - Sep 17 2010, 09:45
Go to the top of the page
 
+Quote Post
Jhohn
сообщение Oct 4 2010, 09:40
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 12-11-08
Пользователь №: 41 579



Цитата(Jhohn @ Sep 17 2010, 10:01) *
Мне не понятно следующее (выставив fuses как описано ниже прерывания стали проходить нормально) :

Fuses:
"boot Flash size=512 words start address=$7F00" адрес в линкере (бут должен начинаться с) $FC00 = 2*$7E00
"boot Flash size=1024 words start address=$7E00" адрес в линкере (бут должен начинаться с) $F800 = 2*$7С00
"boot Flash size=2048 words start address=$7C00" адрес в линкере (бут должен начинаться с) $F000 = 2*$7800
"boot Flash size=4096 words start address=$7800"

AVRStudio 4.18 build 700
IAR C/C++ Compiler for AVR 5.50.0 (5.50.0.50277)


После решения более насущных проблем в другом проекте, взявшись с новыми силами, решил-таки в чем был косяк.
Посылка: вышеописанная цитата не укладывается в логику - значит есть ошибка.
Решение: сравнил биты размера (BOOTSZ1, BOOTSZ0) как их отображает (расшифровывает) AvrStudio, c тем как расшифровывает datasheet T90usb647.pdf и прозрел разницу: 1111493779.gif

AvrStudio: [BOOTSZ1, BOOTSZ0] - [1, 1] - "boot Flash size=512 words start address=$7F00"
datasheet: [BOOTSZ1, BOOTSZ0] - [1, 1] - "Boot Size = 512", "Boot Reset Address (Start Boot Loader Section) = 0x7E00"
и т.д.

AVRStudio 4.18 build 700
AVRStudio 4.18 build 716


В общем, размер указывается правильно (это видно выше: boot Flash size=512) от него и нужно отталкиваться:

Размер_лоадера = 512 words = 1024 byte
Вся_флеш = 65536 byte
Стартовый_адрес_лоадера = Вся_флеш - Размер_лоадера = 65536 - 1024 = 64512 byte = 0xFC00 = 2 * 0x7E00

Сообщение отредактировал Jhohn - Oct 4 2010, 09:43
Go to the top of the page
 
+Quote Post

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

 


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


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