BlackFin Booter

Программно-аппаратный комплекс BlackFin Booter предназначен для загрузки исполняемого кода из загрузочных файлов *.ldr в ЦСП Blackfin через последовательный интерфейс. Большинство ЦСП Blackfin могут производить загрузку исполняемого кода через интерфейс SPI в режиме подчиненного, в этом режиме загрузкой управляет некий хост, в качестве которого может выступать другой микроконтроллер или, как в нашем случае, обычный ПК, оснащенный аппаратной частью Blackfin Booter. Описание режимов загрузки можно найти в Application Note EE240v03 BF533 Booting Process от Analog Devices.

 Железо

Аппаратная часть BlackFin Booter выполнена на микросхеме FTD245R(см. Рисунок 1), также, возможно выполнение аппаратной части и на микросхемах FTD232R, FTD245B, FTD232B, для последних двух придется изменить схему, т.к. у них другая цоколевка.

Рисунок 1.

FTD245R работает в режиме bit bang, при этом соответствие выходных линий следующее:

  • D0 – выход MOSI
  • D1 – выход CLK
  • D2 – выход CS, который подается на вход SPISS у Blackfin-а
  • D4 – вход HWAIT

Частота сигнала CLK задается из программы, но из-за особенностей шины USB она не влияет на скорость загрузки, но установка частоты CLK меньше 1000 (бит/с) замедляет процесс загрузки. Максимальная частота CLK зависит также от частоты задающего генератора, с которым работает Blackfin. Например, для системы, где CCLK = 333 МГц, SCLK = 66.6 МГц, максимальная скорость составит 1МГц. Для ускорения загрузки используется пакетная передача данных по USB, пакет данных соответствует передаче 2х байт полезной информации.
Вкратце процесс загрузки происходит следующим образом. Загрузочный LDR-файл передается по линии MOSI, защелкивание данных во входном регистре Blackfin-а происходит по спаду сигнала CLK. Каждый байт передается старшим битом вперед. Сигналом HWAIT Blackfin может приостановить загрузку, установив высокий уровень на этом выводе. В этом случае хост должен приостановить передачу данных до тех пор, пока Blackfin не установит низкий уровень на линии HWAIT. Во время всего процесса загрузки на линии CS должен присутствовать низкий уровень (см. рис. 2).

Рисунок 2. Временная диаграмма цикла загрузки в режиме SPI
 

Программа

Для Blackfin Booter-а была написана простая программа (см. вложенный файл). После запуска программа выглядит следующим образом (см. рис.3). Для начала нужно выбрать загружаемый файл, это делается кнопкой “Open File”. Тип файла, бинарный или ASCII, определяется автоматически, формат Intel Hex не поддерживается.
После выбора файла становится доступной кнопка “Boot”, а имя файла отображается в заголовке окна программы. Кнопкой “Boot”, как ясно из ее названия, запускается процесс загрузки. После начала загрузки кнопка “Boot” меняет свое название на “Stop”, теперь нажатие на нее позволяет прервать процесс загрузки.
Селектор “Clock rate” установлен на 100000 бит/сек по умолчанию, если используется длинный кабель для подключения к целевой системе, то можно попробовать уменьшить это значение.

Рисунок 3.

 

ПредпросмотрAttachmentSize
setup.exe1.17 МБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

После добавления инит кода

После добавления инит кода программа перестает компилироваться. Пишет, что нехватает секции в памяти.?? Непонятно. Проблема присутствует и в VDSP4.5, и в VDSP5.0. Приведенный инит код даже не компеллируется. Добавить этот код просто нереально, а без него загруженная в проц программа не запускается. Она должна без него запускаться, но инит код, зашитый в проце глючный и надо подставлять свой (так говорят про Шарки). Ответный флаг всегда возникает на PF8, в VDSP 4.5 выбрать его расположение нельзя. Похоже автор рекламирует свою платку.

Какой-то на редкость не

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

Вы попробуйте проверить эту методику на како-либо проекте из примеров. В VDSP есть уже скомпилированные инит-коды, вы можете использовать любой из них для проверки. Да и код приведенный в статье, тоже взят из примеров, поставляемых с VDSP.

И где Вы нашли упоминание какой-либо платы которую можно рекламировать как свою?

Ответили мне Атмеловцы. В

Ответили мне Атмеловцы. В общем, инит код добавлять обязательно надо, только когда программа грузиться во внешнюю память. Если хватает кеша, то он не обязателен, хоть и полезен. Не компиллировался код, тк в примере он для BF533, а  у меня программа под 532. Оказывается, у них где то разная адресация.

Прошивка должна быть только в Бинари. Для отладки советую отправлять первые 10 байт заголовка - в ответ вы должны получить установленный в ноль, указанный вами флаг. Подтяжку к земле на этот флаг, как нарисовано в ЕЕ240 ставить нельзя. Вы не увидите первой реакции ДСПшки. Подтяжку надо к "1" (как на их временных диаграммах).

В опциях выбирать СПиАй слейв не обязательно. У вас просто тогда флага не будет. Если грузите медленно или без инит кода, то и на флаг можно не смотреть. Так что ЛДРка из обычной флешки вполне может быть загружена в этом режиме.

У меня контроллер загоняет 128КБ за 1,8с без учета флага. Сама же программа занимает 10КБ и запускается еще до того, как контроллер выплюнет все эти данные. Ноль блок есть, но он успевает прописаться, а вот с инит кодом надо будет еще на флаг смотреть.

Насчет pull-down странно,

Насчет pull-down странно, может они какую-то новую ревизию процессора выпустили? У меня без pull-down резистора на HWAIT ничего не работало, правда я сперва туда вообще никакого резистора не поставил, при этом сигнал на этой линии всегда имел высокий уровень.

Если вы грузите процессор из флешки, то конечно вам надо использовать режим SPI-master, но целью данного проекта было протестировать загрузку BlackFin от хост-процессора и попутно обеспечить механизм отладочной загрузки без необходимости перешивать флешь-память или программу в хост-процессоре.

Кстати, не Атмеловцы, а Аналоговцы :).

Да, Аналоговцы. Флаг, после

Да, Аналоговцы. Флаг, после того как ДСП скушает заголовок, конфигурируется как выход и выдает активную "1" либо активный "0". 

ДСП гружу из АРМа. У АРМа быстрая флешка и АРМ определяется как ЮСБ драйв. Просто копирую на ЮСБ драйв прошивку ДСП (если надо обновить) и прошивку АРМа (если надо обновить). Подаю Ресет и АРМ запускается по новой прошивке, удерживая Ресет ДСПшке. Потом заливает в ДСПшку ее прошивку из своей флешки. Такой процесс старта занимает 2с. А копирование прошивак на ЮСБ драйв и того меньше. :)

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании