Перейти к содержанию
    

VisualDSP++ 4.0 и ADSP-BF (и другие).

Народ, поделитесь опытом, кто как программит внешнуюю загрузочную флешку?

 

Путь в лоб: пишется программатор, при необходимости записать прошивку во флешь, грузим исполняемый программатора, грузим дамп прошивки в память, запускаем программатор. Этот путь пройден коллегами (для Шарка), все работает. Но как-то что-то тут, имхо, не то - должен быть, по идее, какой-то более прямой и формализованный способ. В доке ничего такого не нашел (может плохо искал, не пинайте :)).

 

В составе сабжевого пакета есть Flash Programmer. Там, вроде, оно все логично. Но, во-первых, я понял, оно только с китом работает? Во-вторых, что-то у меня пока оно не работает - шить, вроде, шьет, а перезагрузишь проц, там левая прога. Может просто какие-то нюансы, еще не разобрался. В любом случае непонятно, можно ли этим программером пользоваться для своих проектов, а не только для кита.

 

В общем, поделитесь опытом, кто как делает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мой опыт такой, хотя плотно к проекту на blackfin-ах, к сожалению, еще и не подошел, и посему где-то могу быть и не прав:

 

В ввиду отсутствия эмулятора :(, все всегда начинается с бутлоадера. По тому интефейсу какой есть: RS-232, USB, Ethernet, Wi-Fi. Впринципе все живет в своей части ПЗУ и всему остальному не мешает. Преимущества - простота апгрейда кода юзерами в процессе эксплуатации. Другое, при использовании скоростного интерфейса - скорость заливки образа, здесь с этим любой программатор или эмулятор будет в проигрыше. Преимущества этого, и как это потом влияет на скорость разработки, наверно объяснять не надо.

 

По сабжевому программатору посоветую посмотреть EE-239 "Running Programs from Flash on ADSP-BF533 Blackfin® Processors", там вроде все описано что надо делать чтобы работало.

Для использования его в своих проектах (не в ките) нужен любой отдельный эмулятор, только драйвер надо переписать под свой тип флеша. Там в примерах для разных китов можно выбрать и переработать наиболее подходящий.

 

Еще видел на blackfin.uclinux.org проект ихнего простого jtag через параллельный порт ПК, используемого как раз для программирования Flash на шине blackfin. Open source естественно. Тоже вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Flash Programmer именно так и делает - грузит в проц драйвер флеша, и прошивает через него. Более прямой и формализованный способ - только прошивать флешку внешним программатором :)

Кстати, драйвер вроде довольно просто делается, в хелпе в комплекте с VDSP есть описание.

У меня блекфин грузится с SPI Flash, которая прошивается самой прошивкой под управлением компа, в целом достаточно удобно. ИМХО если девайс связан с компом, удобнее перепрошивать своей программой чем использовать FlashProgrammer.

Что касается EE-239 "Running Programs from Flash on ADSP-BF533 Blackfin® Processors" - это очень медленно, лучше все-таки загрузчик использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже сейчас прикидываю, как мне запользовать BF-531. Прямая заливка программы в последовательный флэш через LPT-порт мне пока кажется наилучшим вариантом при автономном применении BF-531 и отсутствии JTAG. При неавтономном - по моему, удобнее всего грузить с HOST-процессора (что нибудь типа ATmega128) через SPI в режиме slave (как и сейчас у меня mega грузит ADSP2186 через хост-порт). Если по поводу BF-531 я в чем-то не прав - подскажите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У STM есть флешки, которые могут программироваться по JTAG. - Такая стоит в EZ-KIT на BF533. Название можно посмотреть в мануале на кит. К блекфину она подключена через паралл интерфейс, а залить можно простым житагом через ЛПТ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Flash Programmer именно так и делает - грузит в проц драйвер флеша, и прошивает через него. Более прямой и формализованный способ - только прошивать флешку внешним программатором :)

Этот более прямой способ требует отдельного аппаратного интерфейса к флешке. Чего не хочется.

 

Кстати, драйвер вроде довольно просто делается, в хелпе в комплекте с VDSP есть описание.

Написать прогу, которая будет шить флешку, не сложно. Главная проблема, откуда эта прога будет брать само содержание загрузочного образа? Вот коллеги просто складывают этот образ во внешнюю память по определенному адресу. А во FlashProgrammer'e он как-то берет его по JTAG'у. Но ведь протокол обмена через JTAG закрыт. Как быть?

 

У меня блекфин грузится с SPI Flash, которая прошивается самой прошивкой под управлением компа, в целом достаточно удобно. ИМХО если девайс связан с компом, удобнее перепрошивать своей программой чем использовать FlashProgrammer.

Если связан, то вполне способ. А если нет?

 

Еще пришла в голову мысль использовать средства автоматизации VDSP. Там ведь можно написать скрипт, который может производить разнообразные действия. К примеру, грузить прошивку программатора, потом загружать блок данных из внешнего файла (загрузочного образа) во внутреннюю память - эдак кил 16 можно легко записать, потом программатор зашивает этот блок во флешь и ждет следующего (по брейкпоинту, например) и т.д. пока все не зашьет. В общем, это пока идея, надо все проверять...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У STM есть флешки, которые могут программироваться по JTAG. - Такая стоит в EZ-KIT на BF533. Название можно посмотреть в мануале на кит.  К блекфину она подключена через паралл интерфейс, а залить можно простым житагом через ЛПТ.

Про это в курсе. Только это не то, чего хочется. Прошивка флеши - достаточно редкая, почти разовая операция. Городить для нее отдельный интефейс как-то некузяво, тем более, что один интерфейс уже и так есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы не поняли, у линуксоидов никаких проблем нет.

Если есть jtag, то можно и дергать любую ножку процессора, также как читать и писать любую параллельную или последовательных память, подключенную к нему.

 

раздел JTAG/Parallel Port - схема (hardware), но это не важно, в принципе подойдет любой

http://blackfin.uclinux.org/frs/?group_id=7&release_id=90

 

софт (source)

http://blackfin.uclinux.org/frs/?group_id=19&release_id=182

 

спецификаци jtag полностью, не та что официально (смотрите красные буквы)

http://blackfin.uclinux.org/docman/view.ph...g_emulation.pdf

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А во FlashProgrammer'e он как-то берет его по JTAG'у. Но ведь протокол обмена через JTAG закрыт. Как быть?

Еще пришла в голову мысль использовать средства автоматизации VDSP. Там ведь можно написать скрипт, который может производить разнообразные действия. К примеру, грузить прошивку программатора, потом загружать блок данных из внешнего файла (загрузочного образа) во внутреннюю память - эдак кил 16 можно легко записать, потом программатор зашивает этот блок во флешь и ждет следующего (по брейкпоинту, например) и т.д. пока все не зашьет. В общем, это пока идея, надо все проверять...

Flash Programmer именно это и делает - сначала загружает в проц ldr файл драйвера прошивки, запускает его и по определенному протоколу передает ему блоки данных которые нудно прошить. Для некоторых флешек драйвера уже есть, а если нет, то можно написать свой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А во FlashProgrammer'e он как-то берет его по JTAG'у. Но ведь протокол обмена через JTAG закрыт. Как быть?

Еще пришла в голову мысль использовать средства автоматизации VDSP. Там ведь можно написать скрипт, который может производить разнообразные действия. К примеру, грузить прошивку программатора, потом загружать блок данных из внешнего файла (загрузочного образа) во внутреннюю память - эдак кил 16 можно легко записать, потом программатор зашивает этот блок во флешь и ждет следующего (по брейкпоинту, например) и т.д. пока все не зашьет. В общем, это пока идея, надо все проверять...

Flash Programmer именно это и делает - сначала загружает в проц ldr файл драйвера прошивки, запускает его и по определенному протоколу передает ему блоки данных которые нудно прошить. Для некоторых флешек драйвера уже есть, а если нет, то можно написать свой драйвер, пишется он просто, знать протокол обмена через JTAG не нужно, протокол обмена с FlashProgrammer основан на том что в переменные по определенным адресам Flash Programmer пишет команды, а драйвер, когда их выполнит, должен перейти по определенному адресу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы не поняли, у линуксоидов никаких проблем нет.

Если есть jtag, то можно и дергать любую ножку процессора, также как читать и писать любую параллельную или последовательных память, подключенную к нему.

У линуксоидов может и нет. Но я не линуксоид, и у меня есть.

 

Все это выливается в дополнительное устройство. У меня уже есть айс. Получается, что его мало и надо городить для частной задачи еще что-то. Спасибо, этот путь понятен, он не очень привлекает. Уж проще тогда поставить флешь с JTAG'ом, которая в ките стоит, и шить ее через LPT, как советовали. Через ейный FlashLink. Но и этот путь не очень нравится - дополнительные устройства.

 

Кста, даже в предложенном случае не все радужно - флеши-то они разные бывают, поэтому программатор получится неуниверсальным...

 

Ладно, короче, понятно все... Спасибо всем за советы и участие. :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Прошу прощения за тупость, но не понял, что такое "один из MS"? Имелось в виду, что просто на шину разъем параллельный ставится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посути на плате ставится маленькая ПЛИС (altera, xilinx или все что вам нравится). На ней строится тупой дешифратор адреса, а сигнал BMS и (допустим) MS1 выбирают микросхему flash. Удобств такого подхода много, начиная от перепрограммирования во время исполнения, так и перепрограммирование от собственных интерфейсов. Единственное приходится жертвовать целым MS, или в любом случае частью его адресов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посути на плате ставится маленькая ПЛИС (altera, xilinx или все что вам нравится). На ней строится тупой дешифратор адреса, а сигнал BMS и (допустим) MS1 выбирают микросхему flash. Удобств такого подхода много, начиная от перепрограммирования во время исполнения, так и перепрограммирование от собственных интерфейсов. Единственное приходится жертвовать целым MS, или в любом случае частью его адресов.

А, понял - Вы имеете в виду, что вешается это на отдельный банк адресного пространства? У черного фина немножко другие сигналы и терминология, соответственно, отличается. Насколько понял, идея такая: внешнее устройство происит у проца шину, проц предоставляет, после этого по этой шине рулим флешкой как нужно. В общем, это, имхо, в смысле организации аппаратной части не очень отличается по идеологии от программирования флеши через ейный JTAG. С одной стороны, конечно, гибкости побольше и флешь с JTAG'ом не нужна. С другой стороны все-таки допольнительная микруха и разъем.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...