Перейти к содержанию
    

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 памяти, откуда потом на последующих стадиях его можно будет забрать. 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...