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

 
 
> bootloadHID и Atmel Studio 6.2 на Atmega168PA
truppik
сообщение Feb 16 2015, 09:40
Сообщение #1


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

Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352



Доброго времени суток!

Взял bootloadHID.2012-12-08 портировал на Atmel Studio, чуть поправив некоторые неточности (особенно убило, что ошибка с #include "usbdrv.с" встречается во многих сторонних проектах и никто не правит это на #include "usbdrv.h"), единственное что смущает - есть функции с обьявлением USB_PUBLIC - а дальше если посмотреть, то это просто #define USB_PUBLIC static (более того, в другом файле просто стоит #define USB_PUBLIC без переназначения) - так вот, со static не компилировалось - убрал, все отлично.

Закоментил эти строки, скомпилировал еще раз и ...
//GICR = (1 << IVCE); /* enable change of interrupt vectors */
// GICR = (1 << IVSEL); /* move interrupts to boot flash section */
Залил в Atmega168PA с фьюзами как на скрине - определяется без проблем, утилита тоже видит девайс и даже типа заливает прошивку (но понятное дело она не заливает, ибо у нас не загрузчик, а просто как обычная прошивка, т.к. адрес начинается с 0х0 и сам в себя он не пишет) окей, значит теперь надо просто переместить наш загрузчик в памяти и что б заливалось корректно.

Добавляю в линковщик следующую строку и откоментируем те 2 строки, что разрешают перенос прерываний в область загрузчика:
-Wl,--section-start=.text=0x1c00
компилируем, в прошивке теперь адрес начинается с 0х1с00:
:101C00000C94720E0C94AA0E0C948F0E0C948F0EE2
:101C10000C948F0E0C948F0E0C948F0E0C948F0ED0
:101C20000C948F0E0C948F0E0C948F0E0C948F0EC0
.....
все верно!
Прошиваем в МК и тут же читаем, смотрим в прочитанный хекс, начало:
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
...
ну и наша прошивка на верном месте с адреса 0х1с00.

НО, она не работает.
Если быть точным, она запускается (проверял методом что PD3 дергал) и далее на чем то застопоривается, вывод PD1 почему то постоянно в 0 выставляется и все. Я предположил что то с прерываниями на новой серии МК - PA в конце. Ну да ладно думаю протестирую ка на старой atmega32A (что нашлось в загашнике с USB схемой) - чуть подредактировал прошивку, сначала проверил что с 0го адреса она стартует и корректно работает, далее провел модификацию для режима бутлоадера (сменил адрес на соотв. бутлоадеру 32й меге), прошил и тоже самое......

Я уже не знаю что не так. Пробовал портировать разные проекты от других людей, все компилируется и не работает схожим образом. Я что то упустил ? я далеко не хороший программист, помогите, кто сталкивался...что тут не так ?
Проект прикладываю так же.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  firmware_bootloader.zip ( 87.58 килобайт ) Кол-во скачиваний: 18
 


--------------------
never know best.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
truppik
сообщение Feb 16 2015, 16:52
Сообщение #2


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

Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352



Сегодня купил atmega328 без каких либо букв, залил бутлоадер с адреса 0х3800 с соответствующими фьюзами - та же самая проблема (я уже предположил что дело в PA \ P серии).
Ни у кого не возникало таких проблем ?


--------------------
never know best.
Go to the top of the page
 
+Quote Post
truppik
сообщение Feb 17 2015, 10:10
Сообщение #3


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

Группа: Свой
Сообщений: 81
Регистрация: 24-07-14
Из: NA
Пользователь №: 82 352



Вобщем, если кому интересно - моя ошибка тут проста.
Во фьюзах пишется значение начала загрузчика в словах - к примеру 0x1c00 и значит адрес его будет не 0x1c00 а *2 = 0х3800. Надо поменять значение в строке -Wl,--section-start=.text=0x3800 и все заработает.
И кст, этот проект в аттаче - Чистый вариант для Atmel Studio БЕЗ надобности ставить WinAVR.
Всем спасибо за помощь.


--------------------
never know best.
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Feb 22 2015, 16:46
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Прерывания переключать обязательно, если в основной проге не вернуть назад, изредка проглючивает, полная инициализация обязательна.
Советую ввести проверку адреса доступной области, чтобы бут не считали.
А разметки лучше всего тупо скопировать с инклюда на твой проц.

Меня удивил момент, по USART c использованием AES прошивка залетает куда быстрее, чем через STK500 by Petka laughing.gif

Сообщение отредактировал Павлик - Feb 22 2015, 16:48
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Mar 7 2015, 06:16
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Не поделитесь портированным в студию проектом?
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Mar 9 2015, 19:48
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



У меня он на asm написан, не оптимизировал, BOOTRST 2048 слов. AES-128 CBC.
Устроит?
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Mar 9 2015, 20:02
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Как он у вас работает? Тот проект, который вы выше упомянули, от усб работает. Автор мне помог его запустить, я залил. Работает. Но нужно пин на минус замыкать. Попробовал под себя подредактировать, вылез за 2 кб. То есть нужно уже 4 кб под бут отводить. А это не на каждый МК зальешь. Дальше я пока не разбирался.

Сообщение отредактировал demiurg1978 - Mar 9 2015, 20:02
Go to the top of the page
 
+Quote Post

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

 


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


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