Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: BF-533 STAMP
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
3HaK
Кто нибудь со STAMP ом работал?? Прошивать нужно через JTAG или можно через COM.
При попытке прошить в VisualDSP выдает:
Loading: "F:\ADSP-BF533-STAMP\kernel\images\linux.dxe"...
No ELF section .processor found; assuming ADSP-BF533.
Load complete.
jojo
Свои программы прошиваю через JTAG (EMU-AD) через plugin VDSP и драйвер соотв. ПЗУ.
3HaK
Цитата(jojo @ Apr 4 2006, 14:26) *
Свои программы прошиваю через JTAG (EMU-AD) через plugin VDSP и драйвер соотв. ПЗУ.

а схема есть??
3HaK
я просто не знаю с какой стороны к нему подходитьsad.gif расчитывал что его можно через ком программировать sad.gif
jojo
Схемы нет, это коммерческий эмулятор.
Где-то пробегала схема эмулятора от отладочной платы, кажется, EZKit для 21160 и VID/PID константы к ней. Через нее тоже можно шить ПЗУ Blackfina.

Само ПЗУ, то, которое в BGA - можно шить через uboot, прошитый на фабрике. Сложнее будет, если этот uboot затереть. Тогда, наверное, надо из сериального ПЗУ загрузиться (его нет на плате и я не смотрел, допускает ли схема такую погрузку). А дальше все понятно.
appsoft
STAMP поставляется с прошитой ucLinux. Если прошивка присутствует, то подключаем COM порт к внешней Linux машине запускаем терминал, включаем плату и видим в терминале приветствие и командную строку ucLinux. С помощью утилиты UBoot грузим свой проект в ОЗУ и выполняем. Если появляется желание прошить свой проект во flash, грузим проект программатор (он есть в примерах) и даем ему команду шить flash. ucLinux при этом будет затерт и о следующих прошивках надо позаботится самому. Если же ucLinux уже стерт то загрузить программатор в ОЗУ можно только через JTAG или внешнюю последовательную flash. Есть еще вариант загрузки в SPI slave mode, я делал для этого переходник с LPT порта (см. режимы загрузки в AD-шном app note EE240).
dxp
Цитата(jojo @ Apr 4 2006, 19:26) *
Свои программы прошиваю через JTAG (EMU-AD) через plugin VDSP и драйвер соотв. ПЗУ.

Подскажите, пожалуйста, где лежит описание на драйвер? Ну, т.е. для своей ПЗУхи, я так понимаю, надо свой драйвер написать. И написать его надо в соответствии с определенныи требованиями, чтобы плагин с драйвером правильно взаимодействовал.
jojo
На EZKIT с BF537 стоит ПЗУ, как на STAMP. Поэтому драйвер подходит к STAMP почти без изменений. Только флаги в определенное состояние я ставил, чтобы ПЗУ было выбрано, а не сеть. Но вроде там резисторы есть подтягивающие возле этих флагов, может, лишнее делал.

А спецификацию я не видел, может, она и есть где. Драйвер выложу на днях в сети, на всякий случай.
3HaK
Вчера весь день продолбался...оказалось шнурок комовский не рабочий sad.gif

Подскажите с чего лучше начать освоение
appsoft
Драйвер для 533 EZ Lite лежит в "VDSP4\Blackfin\Flash Programmer Drivers\ADSP-BF533 EZ-kit Lite". На EZ Lite применены STM-овские PSD = flash+FPGA, а на STAMP стоит тоже STM-овская flash 4МВ. По сути - этот драйвер обычная программа для BF, которая сначала загружается по JTAG, затем запускается и получает по JTAG команды и буфера с данными для записи, синхронизируясь с верхним процессом с помощью макроса-точки останова.
appsoft
Система команд у PSD4256 на EZ Lite такаяже, как у M29W320DB на STAMP. Для доступа к flash на STAMP PF0 и PF1 должны быть в 0, они туда притянуты резисторами R22, R23 (STAMP v1.0), так что драйвер должен подойти без переделки. Но чтобы им воспользоваться в STAMP надо иметь эмулятор. Если эмулятора нет и вы не любитель Linux проще работать с EZ Lite...
dxp
Цитата(appsoft @ Apr 5 2006, 15:53) *
Драйвер для 533 EZ Lite лежит в "VDSP4\Blackfin\Flash Programmer Drivers\ADSP-BF533 EZ-kit Lite". На EZ Lite применены STM-овские PSD = flash+FPGA, а на STAMP стоит тоже STM-овская flash 4МВ. По сути - этот драйвер обычная программа для BF, которая сначала загружается по JTAG, затем запускается и получает по JTAG команды и буфера с данными для записи, синхронизируясь с верхним процессом с помощью макроса-точки останова.

Про это все в курсе. Вопрос в том, как написать свой драйвер для более другой ПЗУ, нежели та, которая стоит в китах. Для этого должны быть где-то документированы требования к драйверу - типа, какие функции он должен иметь, как взаимодействовать и т.д.

В общем, проблему программирования флеши я решил, но не с помощью встроенного плагина, а более другим способом. Просто стало интересно, неужели что-то пропустил и не увидел спецификацию драйвера. Ну, и в любом случае интересно, как у них там организовано это дело (чтобы со своим вариантом сравнить - должно быть в принципе так же).
appsoft
Цитата(dxp @ Apr 5 2006, 13:58) *
Цитата(appsoft @ Apr 5 2006, 15:53) *

Драйвер для 533 EZ Lite лежит в "VDSP4\Blackfin\Flash Programmer Drivers\ADSP-BF533 EZ-kit Lite". На EZ Lite применены STM-овские PSD = flash+FPGA, а на STAMP стоит тоже STM-овская flash 4МВ. По сути - этот драйвер обычная программа для BF, которая сначала загружается по JTAG, затем запускается и получает по JTAG команды и буфера с данными для записи, синхронизируясь с верхним процессом с помощью макроса-точки останова.

Про это все в курсе. Вопрос в том, как написать свой драйвер для более другой ПЗУ, нежели та, которая стоит в китах. Для этого должны быть где-то документированы требования к драйверу - типа, какие функции он должен иметь, как взаимодействовать и т.д.

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


Если посмотреть на исходник драйвера BF533EzFlash.c, лежащий в указаном выше каталоге, то видны функции: WriteFlash, ReadFlash, PollToggleBit, EraseFlash.
Начало EraseFlash выглядит так:

ERROR_CODE EraseFlash()
{
ERROR_CODE ErrorCode = NO_ERR; // tells us if there was an error erasing flash

// *****Flash A*****

// erase contents in Main Flash Array
WriteFlash( 0x0AAA, 0xaa );
WriteFlash( 0x0554, 0x55 );
WriteFlash( 0x0AAA, 0x80 );
WriteFlash( 0x0AAA, 0xaa );
WriteFlash( 0x0554, 0x55 );
WriteFlash( 0x0AAA, 0x10 );

// poll until the command has completed
ErrorCode = PollToggleBit(0x0000);

// only erase if we didn't fail the previous erase
if( ErrorCode == NO_ERR )
{
// erase contents in Boot Flash Array
WriteFlash( 0x200AAA, 0xaa );
WriteFlash( 0x200554, 0x55 );
WriteFlash( 0x200AAA, 0x80 );
WriteFlash( 0x200AAA, 0xaa );
WriteFlash( 0x200554, 0x55 );
WriteFlash( 0x200AAA, 0x10 );

// poll until the command has completed
ErrorCode = PollToggleBit(0x200000);
}

Исходя из этого, драйвер можно адаптировать не вникая в его структуру и интерфейс. Меняем адреса/значения перекомпилируем драйвер и вперед. Максимальные изменения могут потребоваться если flash пишется блоком, например как AT29xxxx. Тогда придется заглянуть в функцию уровнем выше: WriteData, и адаптировать ее.
dxp
Цитата(appsoft @ Apr 5 2006, 21:48) *
Если посмотреть на исходник драйвера BF533EzFlash.c, лежащий в указаном выше каталоге, то видны функции: WriteFlash, ReadFlash, PollToggleBit, EraseFlash.
Начало EraseFlash выглядит так:

ERROR_CODE EraseFlash()
{
ERROR_CODE ErrorCode = NO_ERR; // tells us if there was an error erasing flash

WriteFlash( 0x200AAA, 0x10 );
...
// poll until the command has completed
ErrorCode = PollToggleBit(0x200000);
}

Исходя из этого, драйвер можно адаптировать не вникая в его структуру и интерфейс. Меняем адреса/значения перекомпилируем драйвер и вперед. Максимальные изменения могут потребоваться если flash пишется блоком, например как AT29xxxx. Тогда придется заглянуть в функцию уровнем выше: WriteData, и адаптировать ее.

Понятно, спасибо. Т.е. все-таки не документировано, надо по аналогии делать. Функции функциями, а взаимодействие надо, имхо, все же четко представлять. Имхо, более правильно свой плагин написать или внешний клиент (как я и сделал).
3HaK
Цитата(appsoft @ Apr 5 2006, 10:08) *
... Есть еще вариант загрузки в SPI slave mode, я делал для этого переходник с LPT порта (см. режимы загрузки в AD-шном app note EE240).

а существует ли вообще возможность закрузки программ через Com-port (RS232) который стоит на плате рядом с ethernet разьемом?
И может быть еще ворианты загрузки?
например ethernet потому что програматора нет есть только BF-533-STAMP
appsoft
Цитата(3HaK @ Apr 6 2006, 13:56) *
а существует ли вообще возможность закрузки программ через Com-port (RS232) который стоит на плате рядом с ethernet разьемом?
И может быть еще ворианты загрузки?
например ethernet потому что програматора нет есть только BF-533-STAMP

Варианты аппаратной загрузки BF533: параллельная flash (на stamp в ней зашит ucLinux), последовательная flash на SPI, и по SPI с HOST контроллера (SPI slave mode). Загрузили свою программу в одном из этих режимов - остальной код грузите откуда хотите, хоть по RS232, хоть по Ethernet. Если у вас только STAMP советую сначала убедится что на нем запускается ucLinux и воспользоваться его загрузчиком UBoot. Как правило это подразумевает, что загруженная программа будет выполняться под ucLinux. Но это не обязательно. Никто не мешает вновь запущенному процессу не возвращать управление ядру, переопределить вектора прерывания, и записать на место ucLinux свой код (для начала только в ОЗУ, а не во flash), и передать этому коду управление. После сброса платы опять стартует ucLinux, так и отлаживаете свой код.
3HaK
Цитата(appsoft @ Apr 6 2006, 15:29) *
....Если у вас только STAMP советую сначала убедится что на нем запускается ucLinux и воспользоваться его загрузчиком UBoot. Как правило это подразумевает, что загруженная программа будет выполняться под ucLinux. Но это не обязательно. Никто не мешает вновь запущенному процессу не возвращать управление ядру, переопределить вектора прерывания, и записать на место ucLinux свой код (для начала только в ОЗУ, а не во flash), и передать этому коду управление. После сброса платы опять стартует ucLinux, так и отлаживаете свой код.


ucLinux на STAMPе установлен и запускается...пока не могу поднять ethernet.
Пожалуйста можно поподробнее про UBoot.
Он должен быть установлен и запускаеться на самом BlackFine или на машине к которой подключен STAMP???
Нет ли каких либо документов или ссылок по Cygvin (он как то криво работает... не могу собрать ядро...вернее само ядро собираеться а файл Linux.dxe не создаеться) или лучше не мучиться и нормальный linux поставить??
jojo
>или лучше не мучиться и нормальный linux поставить??

Есть ощущение, что хорошо будет, если код собирать в VisualDSP++ 4.0 и загружать через SPI. Для начала. В Application Notes есть об этом кое-что. Без всяких линуксов и ucLinuxов вообще.
triplex
Цитата(appsoft @ Apr 5 2006, 10:08) *
STAMP поставляется с прошитой ucLinux. Если прошивка присутствует, то подключаем COM порт к внешней Linux машине запускаем терминал, включаем плату и видим в терминале приветствие и командную строку ucLinux. С помощью утилиты UBoot грузим свой проект в ОЗУ и выполняем. Если появляется желание прошить свой проект во flash, грузим проект программатор (он есть в примерах) и даем ему команду шить flash. ucLinux при этом будет затерт и о следующих прошивках надо позаботится самому. Если же ucLinux уже стерт то загрузить программатор в ОЗУ можно только через JTAG или внешнюю последовательную flash. Есть еще вариант загрузки в SPI slave mode, я делал для этого переходник с LPT порта (см. режимы загрузки в AD-шном app note EE240).


Скажите, загружаемый проект должен быть dxe или ldr? Он должен быть скомпилирован под VisDSP или под linux? С какого адреса ОЗУ надо производить загрузку?
DRUID3
Цитата(3HaK @ Apr 7 2006, 15:24) *
ucLinux на STAMPе установлен и запускается...пока не могу поднять ethernet.
Пожалуйста можно поподробнее про UBoot.
Он должен быть установлен и запускаеться на самом BlackFine или на машине к которой подключен STAMP???

Это загрузчик по типу GRUB или LILO но для встраиваемых систем (особенности архитектур, гибкость сборки и конфигурации). Набираете uboot в Googl'е и читаете.

Цитата(3HaK @ Apr 7 2006, 15:24) *
Нет ли каких либо документов или ссылок по Cygwin (он как то криво работает... не могу собрать ядро...вернее само ядро собираеться а файл Linux.dxe не создаеться) или лучше не мучиться и нормальный linux поставить??

??? эээ...это Вы чем вообще его вообще собираете? И что пытаетесь получить? Почему *.dxe?
Зайдите сюда, и скачайте компилер GCC blackFin для win32. Но я к сожалению им никогда не пользовался, ничего не подскажу. Но если там "все так же" - в makefile'е указывайте путь где он у Вас лежит и будет Вам счастье...

P.S.: прошу прощения не посмотрел на дату поста rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.