R6L-025 1 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Коллеги, доброго времени суток! Возникла необходимость производить тест DDR памяти (той которая подключена к самой процессорной системе) перед загрузкой ОС. Т.е. это не тест в лабораторных условиях с JTAG'ом и кучей отладчиков, а часть софта которая перед каждым стартом должна проверять память. Есть ли какие-то концептуальные, или готовые решения? Или может кто-то сталкивался с подобными вещами... Я пришел к таким выводам: - из под самой ОС такое по очевидным причинам не сделаешь, остается U-boot/FSBL; - U-boot сам расположен в DDR памяти, поэтому тестить получится только свободную от него и компании память; - остается FSBL работающий из под On-Chip memory. Для FSBL даже есть готовое решение из коробки в составе Vitis, но вот только оно работает не совместно с кодом загрузки ОС а ВМЕСТО него. Остается только попробовать выковырять часть проводящую тесты и как-то втулить в код загрузчика FSBL (вроде как можно воспользоваться хуком XFsbl_HookBeforeHandoff() в коде FSBL для подсовывания своего кода запускаемого перед загрузкой U-boot), и сохранять результаты теста в кусок самой DDR памяти, откуда потом на последующих стадиях его можно будет забрать. Но может кто-то знает более адекватные решения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Ну можно результаты, например, в какую-нибудь I2C nvram положить или в кусочек флеша Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Не уверен что FSBL знает о существовании какой-либо памяти, у него нет dtc. Может, конечно, он знает о дефолтной периферии из xsa файла, и умеет с ней работать... но в любом случае это не особая проблема. Интересней как сам тест памяти запустить. Я не уверен что такой прием с засовыванием куска кода из программы теста в FSBL, как описал выше, заработает. Вот и думаю, может есть уже какие-то решения. Вещь то довольно очевидная и полезная Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Ну я делал инициализацию внешнего клок-генератора по SPI внутри хука fsbl. Работало. Не вижу проблем в хук засунуть тест памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба О, понятно, спасибо. А то я еще не был уверен что этот хук то место, с которым надо работать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Только скорее не beforehandoff, а beforebitstream, поскольку handoff делается уже на что-то, лежащее в основной памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 18 марта, 2021 Опубликовано 18 марта, 2021 · Жалоба Понятно. Спасибо. Тогда чуть позже поэксперементирую, отпишусь как именно должно быть. Может кому-то пригодится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба Таки получилось. Да, оказалось что код нужно пихать не в "XFsbl_HookBeforeHandoff", а раньше. Пролез по коду FSBL - как и сказал Gosha-z код теста должен быть вставлен где-то рядом с "XFsbl_HookBeforeBSDownload". Т.к. это крайний обработчик (из предоставленных пользователю) который отрабатывает до момента загрузки данных с uSD в память. Однако, обработчик "XFsbl_HookBeforeBSDownload" в моем случае не вызывался, поэтому я просто вставил функцию теста памяти в код конечного автомата (который в xfsbl_main.c), в начало обработчика второго состояния. Сам код теста памяти выковырял из проекта DRAM теста генерируемого Vitis. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба On 3/18/2021 at 12:42 PM, R6L-025 said: Не уверен что FSBL знает о существовании какой-либо памяти, у него нет dtc. Разве не FSBL грузит u-boot в ОЗУ ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба Да про ОЗУ то знает. Я имел в виду память доступную по i2c и т.д. Но, как потом понял - fsbl это просто некоторый код для APU/RPU под baremetall. И если позволяет размер исходника (он из TCM, кажется, работает, а она не большая по объему) - то можно что угодно написать. Было бы желание писать самому, или готовые baremetall драйвера для внешней памяти типа i2c/qspi и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться