READBACK, или чтение прошивки из флэш-ПЗУ.

В микросхемах ПЛИС типа FPGA, в серии Spartan 3, например, отсутствует энергонезависимая внутренняя память для хранения конфигурации.
Но, это ничего, ведь для хранения конфигурации ПЛИС можно использовать внешнюю микросхему флэш-ПЗУ из обвязки ПЛИС,например, xcf01s, xcf02s и тп. Указанные микросхемы хранят 1 и 2 Мбит конфигурации ПЛИС соответственно.

Иногда возникает необходимость после записи конфигурации во флэш-ПЗУ считать файл рабочей прошивки из флэш-ПЗУ, чтобы, например, проверить контрольную сумму, или перепрошить ее на другое устройство для проверки его работоспособности. Ну, вообщем, разные ситуации бывают, мало ли для чего потребовалось :-) . Для этого в программе создания и записи файла прошивки XILINX ISE IMPACT существует функция READBACK.

Функция READBACK – теоретически – должна считывать из конфигурационного ПЗУ файл прошивки с расширением *.mcs. Что она, функция эта, собственно, и делает. Но разработчик, надеясь на то, что это будет тот же самый файл, который он буквально ещё полчаса назад сам же и прошил в ПЗУ, вынужден будет испытать легкое недоумение. Сравнив контрольные суммы, можно было бы сделать однозначный вывод, что записанный и считанный файл – это две РАЗНЫЕ прошивки, ибо контрольные суммы этих файлов *.mcs (КС) не совпадают. В то время как, опять же теоретически, все-таки хотелось, чтобы они совпали-таки :-).

Книжные бестселлеры и самые популярные книги для детей и взрослых. Купить лучшие книги и мировые бестселлеры с доставкой – интернет-магазин OZON.ru

Однако, не стоит, видимо, однозначно утверждать, что эта эпидерсия – очередной баг-сюрприз от XILINX, сначала попробуем разобраться. Путем нехитрого, теперь уже побитного, сравнения с помощью функции программы Total Commander – Files – Compare (Файлы – Сравнить по содержимому) выяснилось, что в самый конец СЧИТАННОГО файла readback.mcs добавился некий двоичный код, совсем небольшой – пара десятков байт. Поэтому и КС у записанной и считанной прошивки не совпали.

В дальнейшем этот считанный файл readback.mcs с “довеском” был успешно записан на другую отладочную платы – и отличий от оригинала замечено не было, следовательно, этот добавочный код на функционал не повлиял.

Однако, откуда взялся этот добавочный кодик “ein-zwei-polizei”, можно только предполагать. Но одно ясно точно – либо он именно в таком виде и хранился в ПЗУ, иначе говоря, добавился на этапе записи в ПЗУ. Либо этот довесок образовался на этапе считывания из ПЗУ. В данном примере использовался отладочный USB-JTAG кабель, возможно, проблема связана с его применением. Видимо, необходимо попробовать запись-чтение с помощью LPT-JTAG кабеля, и сравнить. На что уйдет какое-то время.

А пока просьба, кто знает, что это, напишите, пожалуйста, в комментах.

Об авторе admin

Инженер. Окончил НГТУ по специальности "Радиосвязь, телевидение и радиовещание". С 2003 г. занимаюсь разработкой электронной начинки различных радиотехнических устройств и приборов.
Запись опубликована в рубрике Все статьи, Цифровой лайфХАК. Добавьте в закладки постоянную ссылку.

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