Цитата(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, и адаптировать ее.