Sergey529 0 16 января, 2012 Опубликовано 16 января, 2012 · Жалоба Добрый вечер! Подскажите кто-нибудь, как залить готовый проект из Framework, например для работы с GPIO, в плату EVK1100? В режим бутлоадера я попал, FLIP установлен. Но когда начал заливать проект, бутлоадер перестал запускаться.. Где-то читал про файл trampoline, который находится в папке ASM проекта. Что с ним делать? Убрать? Вообщем - как корректно запрограммировать проц на плате через бутлоадер? Есть еще 2-я плата, и не хочется запороть загрузчик в ней.. JtagICE mk 2 не скоро получу :( П.с. работаю через AVR32 Studio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacvvn 0 25 января, 2012 Опубликовано 25 января, 2012 (изменено) · Жалоба Добрый вечер! Подскажите кто-нибудь, как залить готовый проект из Framework, например для работы с GPIO, в плату EVK1100? В режим бутлоадера я попал, FLIP установлен. Но когда начал заливать проект, бутлоадер перестал запускаться.. Где-то читал про файл trampoline, который находится в папке ASM проекта. Что с ним делать? Убрать? Вообщем - как корректно запрограммировать проц на плате через бутлоадер? Есть еще 2-я плата, и не хочется запороть загрузчик в ней.. JtagICE mk 2 не скоро получу :( П.с. работаю через AVR32 Studio. -Если вы используете проект-пример, то там этот трамплин уже есть, если создаете проект штатными средствами студии, то там трамплин добавляется автоматом. Качаете документ AVR UC3 A0, A1, A3, B0, B1 USB DFU Bootloader, читаете и шьете свой проект. Командная строка будет иметь примерно такой вид: batchisp -device at32uc3a1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer вашапрога.elf program verify start reset 0 -заранее набираете в консоли командную строку(или bat файл создатете), отключаете плату от питания, нажимаете кнопку джойстика, втыкаете в плату usb кабель, винда находит драйвер, отпускаете джойстик, в консоли нажимаете ввод, чтобы запустить набранную ранее команду, в случае успеха получаете примерно такое: ................ Running batchisp 1.2.5 on Wed Jan 25 13:46:25 2012 AT32UC3A1256 - USB - USB/DFU Device selection....................... PASS Hardware selection..................... PASS Opening port........................... PASS Reading Bootloader version............. PASS 1.0.3 Erasing................................ PASS Selecting FLASH........................ PASS Blank checking......................... PASS 0x00000 0x3ffff Parsing ELF file....................... PASS ваша прога.elf Programming memory WARNING: The user program and the bootloader overlap! Programming memory..................... PASS 0x00000 0x04fdb Verifying memory....................... PASS 0x00000 0x04fdb Starting Application................... PASS RESET 0 Summary: Total 11 Passed 11 Failed 0 если все прошло так, отключаете юсб кабель, подключаете питание и наслаждаетесь :) ............................................. в случае неуспеха получите примерно такое Running batchisp 1.2.5 on Wed Jan 25 13:49:02 2012 AT32UC3A1256 - USB - USB/DFU Device selection....................... PASS Hardware selection..................... PASS Opening port........................... FAIL Could not open USB device. ISP done. - то, что загрузчик не запускается не значит, что он стерт - могли сбить настройки запуска бутлодера в user page. А вообще, без отладчика тяжело :( Накидал маленькую утилиту(под 4 дотнет), которая все это делает сама, в папке usb драйвера для dfu. Работает как есть, претензии не принимаются :) fwLoader.rar usb.rar Изменено 25 января, 2012 пользователем vacvvn Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey529 0 25 января, 2012 Опубликовано 25 января, 2012 · Жалоба -Если вы используете проект-пример, то там этот трамплин уже есть, если создаете проект штатными средствами студии, то там трамплин добавляется автоматом. Качаете документ AVR UC3 A0, A1, A3, B0, B1 USB DFU Bootloader, читаете и шьете свой проект. Командная строка будет иметь примерно такой вид: batchisp -device at32uc3a1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer вашапрога.elf program verify start reset 0 -заранее набираете в консоли командную строку(или bat файл создатете), отключаете плату от питания, нажимаете кнопку джойстика, втыкаете в плату usb кабель, винда находит драйвер, отпускаете джойстик, в консоли нажимаете ввод, чтобы запустить набранную ранее команду, в случае успеха получаете примерно такое: ................ Running batchisp 1.2.5 on Wed Jan 25 13:46:25 2012 AT32UC3A1256 - USB - USB/DFU Device selection....................... PASS Hardware selection..................... PASS Opening port........................... PASS Reading Bootloader version............. PASS 1.0.3 Erasing................................ PASS Selecting FLASH........................ PASS Blank checking......................... PASS 0x00000 0x3ffff Parsing ELF file....................... PASS ваша прога.elf Programming memory WARNING: The user program and the bootloader overlap! Programming memory..................... PASS 0x00000 0x04fdb Verifying memory....................... PASS 0x00000 0x04fdb Starting Application................... PASS RESET 0 Summary: Total 11 Passed 11 Failed 0 если все прошло так, отключаете юсб кабель, подключаете питание и наслаждаетесь :) ............................................. в случае неуспеха получите примерно такое Running batchisp 1.2.5 on Wed Jan 25 13:49:02 2012 AT32UC3A1256 - USB - USB/DFU Device selection....................... PASS Hardware selection..................... PASS Opening port........................... FAIL Could not open USB device. ISP done. - то, что загрузчик не запускается не значит, что он стерт - могли сбить настройки запуска бутлодера в user page. А вообще, без отладчика тяжело :( Накидал маленькую утилиту(под 4 дотнет), которая все это делает сама, в папке usb драйвера для dfu. Работает как есть, претензии не принимаются :) Вобщем разобрался несколько дней назад, собираю проект вручную. И еще во вкладке Program, оказывается, в параметре offset надо было указать значение 0x80000000F. Сейчас все работает и прошивается. Vacvvn, спасибо за очередной совет! Как-нибудь попробую! :cheers: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RA3PKJ 0 28 июня, 2013 Опубликовано 28 июня, 2013 · Жалоба Вопрос к vacvvn по поводу Накидал маленькую утилиту(под 4 дотнет), которая все это делает сама, в папке usb драйвера для dfu. Работает как есть, претензии не принимаются Скажите пожалуйста, есть ли новая версия вашей утилиты fwLoader? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vacvvn 0 22 июля, 2013 Опубликовано 22 июля, 2013 (изменено) · Жалоба Вопрос к vacvvn по поводу Скажите пожалуйста, есть ли новая версия вашей утилиты fwLoader? Новой версии нет. Утилита сделана на коленке, в лоб. Вот исходники на С#(под MS Visual Studio), модифицируйте на здоровье. fwLoader.zip Изменено 22 июля, 2013 пользователем vacvvn Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RA3PKJ 0 22 июля, 2013 Опубликовано 22 июля, 2013 · Жалоба Спасибо большое! Попробую разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 8 ноября, 2013 Опубликовано 8 ноября, 2013 · Жалоба Вот как это сделал это наш человек в Linux :) с уже скомпилированным гексоидом sudo dfu-programmer at32uc3a3256 erase sudo dfu-programmer at32uc3a3256 flash /media/mmc/STDIO_USB_EXAMPLE1.hex --debug 5 --suppress-bootloader-mem sudo dfu-programmer at32uc3a3256 start Сначала качаеца файл zadig (Windows Driver Installer library for USB devices - это нужно для windows) потом dfu-utils - для прошивки. В linux все драйвера есть В виндовс на одном из компов вылетает в синий экран - поэтому не могу показать что пишет на каждую команду. в linux все OK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neznaika 0 6 сентября, 2019 Опубликовано 6 сентября, 2019 · Жалоба Всем привет! Пытаюсь разобраться с загрузчиком на at32uc3a0512. Получилось его прошить, даже удается с его помощью обновлять прошивку. Задался вопросом попадания в него из приложения. Воспользовался одним из примеров Atmel, где они лихо загружают прошивки по установленным адресам FLASH с помощью функции jumpAddress(BOOT_SECTION). Сделал аналогичную запись у себя в приложении и запускаю функцию по нажатию клавиши: #define BOOT_SECTION 0x80000000 void jumpAddress(unsigned int address); { asm("icall r12");} Компилирую проект в Atmel Studuo 7 и зашиваю прошивку через загрузчик. По нажатию клавиши получаю reset приложения. А казалось бы должен по указанному адресу попасть в загрузчик. Как я понял из документации загрузчик начинается с адреса 0х80000000, а приложение с 0x80002000. Вход в загрузчик при условии высокого уровня на одном из пинов. При нажатии клавиши, он у меня висит на питании. Объясните невежде, где я заблуждаюсь ив корне не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 6 сентября, 2019 Опубликовано 6 сентября, 2019 · Жалоба 6 часов назад, Neznaika сказал: По нажатию клавиши получаю reset приложения... Может, все-таки, железка обрабатывает событие входа в загрузчик немного хитрее, чем простым опросом ножки? Таким образом, в загрузчик Вы входите, но он, не видя условий обновления ПО, передает управление на приложение, заставляя Вас думать, что перезапускается основное ПО. Цитата { asm("icall r12");} Не совсем понимаю, зачем icall. Разве какой-нибудь прыжок (ijmp) не будет здесь более правильным? На худой конец заведите, например, сторожевой таймер и переходите в загрузчик по его срабатыванию. Это будет работать, наверное, на всех МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neznaika 0 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба Да, я сам думаю, что заход в загрузчик есть, но почему не реагирует на состояние ноги входа в него не понимаю. После включения питания и после внешнего ресета с кнопки я в него захожу, а после прыжка на 0х80000000 нет, странно. К сожалению нет проекта загрузчика, пробую его сейчас как то раздобыть в инете, но пока безуспешно. Я сам толком не понимаю, что это - { asm("icall r12");} , взял из примерочного проекта, стоял к нему комментарий о сохранении адреса в регистре R12. Визуально - преобразование команды ассемблера в С++, но это приводит к ресету приложения. В одной из веток видел, что перейти по адресу можно с помощью функции AppMain(), определенной как: APP_FLASH_ADR=0x80000000; void (*AppMain)(void)=((void(*)(void))APP_FLASH_ADR); Но результат аналогичен выше упомянутому способу - ресет приложения, без задержки в загрузчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба 2 часа назад, Neznaika сказал: Но результат аналогичен выше упомянутому способу - ресет приложения, без задержки в загрузчике. Инструкция icall - это косвенный вызов подпрограммы. Загружаете адрес функции в R12 и передаете управление по этому адресу. По поводу загрузчика: скорее всего, в этом МК есть регистр, отражающий причину сброса (по питанию, программный/аппаратный сброс, сброс по WDT и т.д.), и загрузчик проверяет валидность режима сброса перед опросом ножки МК. Сбрасывайте по WDT и не забивайте голову ненужными догадками Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neznaika 0 9 сентября, 2019 Опубликовано 9 сентября, 2019 · Жалоба Да, попытался сбросить WDT... Результат тот же) Сброс приложения... Нет входа в загрузчик... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться