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

Zynq динамическая замена интерфеса PS MIO

Здравствуйте. Есть кастомная плата с xc7z030fbg676-1. Из-за ограниченного количества PS MIO на пины MIO40-45 на схематике заведено 2 интерфеса (SDIO и SPI) через внешний mux/demux:

image.png.13b8149d1d4ae9e48043779cf2c6ea07.png

Вопрос, можно ли обоими интерфейсами пользоваться "статически" или "динамически"? "Статически" - это на одну прошивку один интерфейс. "Динамически" - это в рамках одной прошивки менять тип PS MIO интерфейса на лету.

Насколько я понимаю конфигурация PS MIO выполняется за счёт настройки SLCR Registers (как в генерируемом файле ps_init.tcl). А можно ли эти регистры менять прямо из программы процессора? Смотрел ug585-Zynq-7000-TRM, но явного подвтерждения/опровержения пока найти не удалось.

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


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

2 минуты назад, gosha-z сказал:

А что помешало отправить кого-нибудь в EMIO? 

Об этом надо спрашивать человека занимавшегося схематикой. Видимо предполагалось, что всё надо "впихнуть" в MIO.

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


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

12 minutes ago, Vengin said:

Об этом надо спрашивать человека занимавшегося схематикой

Ну вот пусть он и решает эту проблему. А то привыкли, видите ли, что проблемы программистов схемотехников не волнуют...

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


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

Ну, если это можно делать программно, то это естественно проще чем переразводить плату. Да и вообще мне и самому интересено, насколько в этом плане гибока подсистема PS цинка.

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


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

5 minutes ago, Vengin said:

Да и вообще мне и самому интересено, насколько в этом плане гибока подсистема PS цинка.

Сгенерите два FSBL, один под SPI, второй под SD, смотрите исходники. Но я бы настучал по голове схемотехнику за такой авангард...

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


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

ЕМНИП динамическая реконфигурация возможна. По крайней мере работал с разработчиком который конфигурировал переферию, уже после загрузки FSBL, на этапе uboot. Но деталей не знаю, не моя специализация)

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


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

7 minutes ago, des00 said:

Но деталей не знаю

Скорее всего у него все смотрело в EMIO и он делал PL Partial Reconfiguration.

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


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

3 minutes ago, gosha-z said:

Скорее всего у него все смотрело в EMIO и он делал PL Partial Reconfiguration.

ЕМНИП он работал с портами PS_ХХ, динамической реконфигураци 146% не было)

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


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

43 минуты назад, gosha-z сказал:

Сгенерите два FSBL, один под SPI, второй под SD, смотрите исходники. Но я бы настучал по голове схемотехнику за такой авангард...

А при чём тут FSBL, и исходники чего смотреть?

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


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

1 minute ago, Vengin said:

А при чём тут FSBL

При том, что он занимается конфигурированием периферии.

 

2 minutes ago, Vengin said:

исходники чего смотреть

FSBL

3 minutes ago, des00 said:

он работал с портами PS_ХХ

Именно менял назначение PS_MIOxx?

Хотя, подумалось вот, можно попробовать поиграть с Device Tree Overlays, явно прописывая порты в pinctrl. В теории может и прокатить.

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


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

4 minutes ago, gosha-z said:

Именно менял назначение PS_MIOxx?

Да. При совместной отладке, я отметил что в проекте Vivado конфиурация переферии, в графическом инстансе, не соответствует плате. Как я понимаю это то, что идет в FSBL. На что мне дали ответ что без разницы что там стоит, т.к. переферия конфигурируется как надо, перед запуском линух, в убуте.

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


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

C тонкостями FSBL практически не знаком и предполагал, что он больше отвечает за нюансы загрузки. Бегло просмотрел сейчас раздел "Boot and Configuration" в ug585-Zynq-7000-TRM - как-то не особо помогло. В исходникак FSBL тоже не совсем понятно, что смотреть. Да, есть вызов функции ps7_init(). Есть ещё кстати макросы SlcrLock()/SlcrUnlock(). Но даже в какую сторону копать не совсем понятно. Допустим, в FSBL (в post_config?) переключили интерфейс, а что дальше? В моём понимании FSBL ведь выполняется 1 раз? Как это поможет "динамически" и многократно переключать интерфейсы PS_MIO?

 

Продублировал вопрос на форуме Xilinx, глядишь там помогут. Просто сейчас стоит задача понять, возможно ли это в принципе (динамически переключать PS_MIO интерфейсы), или нужно переделывать плату.

 

Да, кстати, там в плане схематики ещё есть нюанс. Дело в том, что этот shared MIO[40-45] интерфейс выводится через коннектор на другую плату. Если прводить оба интерфейса по отдельности, может не хватить места в коннектере.

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


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

31 minutes ago, Vengin said:

возможно ли это в принципе (динамически переключать PS_MIO интерфейсы)

Читать сюда и сюда

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


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

19 минут назад, gosha-z сказал:

Читать сюда и сюда

Интересно. Но это всё применимо только для linux kernel. А для bare-metal тогда как? Кажется, что должна быть более низкоуровневая и универсальная возможность.

Но в целом это всё предполагает, что переключение в принципе возможно. А вот как узнать наверняка ...

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


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

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

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

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

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

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

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

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

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

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