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

 
 
> Как добавить DFU загрузчик в существующий проект?
DeadCodder
сообщение May 17 2012, 06:44
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 4-10-10
Пользователь №: 59 904



Есть существующий рабочий проект (at32uc3a3256) загрузчик в котором изначально не планировался, а теперь вот возникла такая необходимость.
Подскажите, как прикрутить DFU загрузчик. Проблема, насколько я понимаю, избитая, но тем не менее не нашел решения.
Прошиваю руками загрузчик - он работает, шьет (из AVR32 Studio) и благополучно затирается.

Про trampoline знаю, но как его правильно добавить?

Для полноты - asf v2.8.1, AVR32 Studio Core Version: 2.6.0.201009140840.
Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Prof2008
сообщение Jan 20 2014, 04:51
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 29-07-08
Пользователь №: 39 268



К сожалению, предыдущий пост оказался ошибочный. В реале, линкер вставлял код бинарника совсем не туда куда хотелось, а работало потому что код загрузчика уже был прописан ранее. После полного стирания чипа, разумеется, все перестало работать.
Пришел к другому варианту инжектирования кода бинарника в код проекта, только пришлось использовать дополнительную утилиту конвертирования bin в массив данных asm.


Сам же код trampoline_uc3.s82 выглядит следующим образом:
Код
#include "trampoline_uc3.h"

  RSEG  SSTACK:DATA:NOROOT(2)

  // This must be linked @ 0x80000000 if it is to be run upon reset.
  RSEG  RESET:CODE:NOROOT(1)

  PUBLIC  __trampoline

__trampoline:
  // Здесь был переход на собственнй код:
  //rjmp    program_start
  //...теперь вставлен код бутлоадера DFU:
#include "at32uc3a3-isp.s82"


  ORG PROGRAM_START_OFFSET
program_start:
  // Initialize the stack pointer.
  lddpc   sp, ??SPS
  // Jump to the C runtime startup routine.
  lddpc   pc, ??cmain


// Constant data area.

  ALIGN 2

??SPS:
  DC32  SFE(SSTACK) & ~3

  EXTERN  ?main
??cmain:
  DC32  ?main

  END


где файл at32uc3a3-isp.s82 получен путем конвертирования:
bin2asm.exe at32uc3a3-isp.bin at32uc3a3-isp.s82


В настройках проекта для линкера также указывается точка входа в код:
Entry symbol имеет значение __trampoline

Желаю всем успехов!
Прикрепленные файлы
Прикрепленный файл  bin2asm.7z ( 64.6 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post



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

 


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


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