Jump to content
    

Ultrascale MPSoc DDR test with Linux

Коллеги, доброго времени суток!

 

Возникла необходимость производить тест DDR памяти (той которая подключена к самой процессорной системе) перед загрузкой ОС. Т.е. это не тест в лабораторных условиях с JTAG'ом и кучей отладчиков, а часть софта которая перед каждым стартом должна проверять память.

 

Есть ли какие-то концептуальные, или готовые решения? Или может кто-то сталкивался с подобными вещами...

 

Я пришел к таким выводам:

- из под самой ОС такое по очевидным причинам не сделаешь, остается U-boot/FSBL;

- U-boot сам расположен в DDR памяти, поэтому тестить получится только свободную от него и компании память;

- остается FSBL работающий из под On-Chip memory. 

 

Для FSBL даже есть готовое решение из коробки в составе Vitis, но вот только оно работает не совместно с кодом загрузки ОС а ВМЕСТО него. Остается только попробовать выковырять часть проводящую тесты и как-то втулить в код загрузчика FSBL (вроде как можно воспользоваться хуком XFsbl_HookBeforeHandoff() в коде FSBL для подсовывания своего кода запускаемого перед загрузкой U-boot), и сохранять результаты теста в кусок самой DDR памяти, откуда потом на последующих стадиях его можно будет забрать. 

 

Но может кто-то знает более адекватные решения?

Share this post


Link to post
Share on other sites

Ну можно результаты, например, в какую-нибудь I2C nvram положить или в кусочек флеша

Share this post


Link to post
Share on other sites

Не уверен что FSBL знает о существовании какой-либо памяти, у него нет dtc. Может, конечно, он знает о дефолтной периферии из xsa файла, и умеет с ней работать... но в любом случае это не особая проблема. Интересней как сам тест памяти запустить. Я не уверен что такой прием с засовыванием куска кода из программы теста в FSBL, как описал выше, заработает. Вот и думаю, может есть уже какие-то решения. Вещь то довольно очевидная и полезная

Share this post


Link to post
Share on other sites

Ну я делал инициализацию внешнего клок-генератора по SPI внутри хука fsbl. Работало. Не вижу проблем в хук засунуть тест памяти.

Share this post


Link to post
Share on other sites

О, понятно, спасибо. А то я еще не был уверен что этот хук то место, с которым надо работать

Share this post


Link to post
Share on other sites

Только скорее не beforehandoff, а beforebitstream, поскольку handoff делается уже на что-то, лежащее в основной памяти.

Share this post


Link to post
Share on other sites

Понятно. Спасибо. Тогда чуть позже поэксперементирую, отпишусь как именно должно быть. Может кому-то пригодится

Share this post


Link to post
Share on other sites

Таки получилось. Да, оказалось что код нужно пихать не в "XFsbl_HookBeforeHandoff", а раньше. Пролез по коду FSBL - как и сказал Gosha-z код теста должен быть вставлен где-то рядом с "XFsbl_HookBeforeBSDownload". Т.к. это крайний обработчик (из предоставленных пользователю) который отрабатывает до момента загрузки данных с uSD в память. Однако, обработчик "XFsbl_HookBeforeBSDownload" в моем случае не вызывался, поэтому я просто вставил функцию теста памяти в код конечного автомата (который в xfsbl_main.c), в начало обработчика второго состояния.

 

Сам код теста памяти выковырял из проекта DRAM теста генерируемого Vitis.

Share this post


Link to post
Share on other sites

On 3/18/2021 at 12:42 PM, R6L-025 said:

Не уверен что FSBL знает о существовании какой-либо памяти, у него нет dtc.

Разве не FSBL грузит u-boot в ОЗУ ?

Share this post


Link to post
Share on other sites

Да про ОЗУ то знает. Я имел в виду память доступную по i2c и т.д. Но, как потом понял - fsbl это просто некоторый код для APU/RPU под baremetall. И если позволяет размер исходника (он из TCM, кажется, работает, а она не большая по объему) - то можно что угодно написать. Было бы желание писать самому, или готовые baremetall драйвера для внешней памяти типа i2c/qspi и т.п.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...