Всем привет
Плата в режиме BPI Config
http://www.xilinx.com/support/documentatio...707_Eval_Bd.pdf( Страница 80 )
1.1 Берем проект для Xilinx VC707 - BIST
http://www.xilinx.com/products/boards-and-...l#documentation1.2 Скачиваем, смотрим внутри на наличие внутри ядра AXI_EMC в режиме Linear Flash
1.3 Собираем bit файл
system_wrapper.bit 1.4 Экспортируем hdf в SDK
1.5 В SDK создаем бутлоадер. Задаем оффсет
1.6 Создаем в SDK прошивку download.bit - инициализируем файл BRAM в
system_wrapper.bit бутлоодером
1.7 Генерим SREC файл из того что хотим сделать нашим приложением
1.8 Открываем опять Вивадо, собираем mcs файл
Код
Addr1 Addr2 Date File(s)
0x00000000 0x007B616F Mar 25 14:22:08 2016 D:/Users/vinogradovk/rdf0195-vc707-bist-c-2015-1/bins/download.bit
0x02000000 0x0209B29F Mar 25 12:22:55 2016 D:/Users/vinogradovk/rdf0195-vc707-bist-c-2015-1/bins/lwip_echo_server.srec
1.9 Загружаем mcs файл во флэшку
Дальше начинаются чудеса
2.1. Плата по прежнему в режиме "грузись с флэшки"
2.2 Дергаем питание и смотрим в консоль
Код
SREC Bootloader
Loading SREC image from flash @ address: 62000000
ERROR: Error while reading an SREC line from flash
2.3 То есть плиса прошилась, бутлоадер оказался в памяти BRAM, но не смог прочитать SREC
2.4 Оставляя плису прошитой, открываем SDK, запускаем бутлоадер из SDK на платформе
2.5 Ставим точку останова перед началом чтения памяти и открываем смотрелку памяти из SDK memory
2.6 Видим фигу - по адресу 0x60000000, где лежит битфайл с которого плиса только что грузилась, лежат нули. Остальные памяти, например DDR3 через МИГ видны и доступны
Исключаем чудеса
3.1 Открываем Hw_Manager, берем файл
download.bit грузим его в ПЛИС и О ЧУДО
Код
SREC Bootloader
Loading SREC image from flash @ address: 62000000
Executing program starting at address: 00000000
-----lwIP TCP echo server ------
TCP packets sent to port 6001 will be echoed back
Start PHY autonegotiation
3.2 Запускаем на прошитой через JTAG плисе любое приложение, ставим останов
3.3 В SDK инструменте Memory видим битник прошивки плис по адресу 0x600000 и SREC приложения по адресу 62000000
Выводы
Если ПЛИСа была загружена с BPI FLASH, то доступа к этой BPI FLASH у нее уже нет Как такое может быть?
И как это победить?
Чем плиса залитая из флэшки отличается от плисы залитой с jtag?
Помню была ситуация когда ножка SCK для SPI конфигурационной флэшки была доступна после ухищирений, но ведь тут в ПЛИСу заливаются абсолютно одинаковые битфайлы, отличающиеся путем попадания в ПЛИСу.
Положение джамперов на плате не меняется, всегда в режиме "грузись с BPI"