Блог дилетанта широкого профиля

Когда очень хочется воткнуть PCI-e контроллер туда, где его быть не может

17 января 2022 года

Есть у меня плата ROCKPro64. Всем она, вроде бы, хороша: и процессор не плохой, и полноценный слот PCI-e 4x есть, и поддержка в ядре. Вставлен в неё PCI-e SATA контроллер на много дисков, кстати. Но, совершенно случайным образом, плата может отказаться загружаться, встав с kernel panic. И да, при разводке платы где-то закралась ошибка трассировки, и разработчикам пришлось подгонять уровни на четвёртой линии PCI-e "подтяжкой" сопротивления. Ну и, фактически, когда у тебя в ROCKPro64 воткнута плата с PCI-e 4x, "раскачать" порт до Gen 2 не получается, хоть он и поддерживается процессором. И, чтобы не было неприятных приключений у пользователя, прямо в device tree ядра ограничен режим работы порта PCI-e на уровне Gen 1. Кстати, PCI-e 4x, работающий на скоростях Gen 1, - это эквивалент двух портов SATA3 (если смотреть по суммарной пропускной способности). Всего лишь... Маловато будет, если собрался строить СХД!

И есть, например, плата Khadas Edge-V, у которой есть полный разъём M2. Но есть один нюанс: M2 хоть и содержит четыре линии PCI-e, но на повальном большинстве плат, подобных Edge-V, линии тактового сигнала развязаны через конденсаторы, отчего в разъём M2 выходит тактовый сигнал LVDS, когда для работы PCI-e необходим HCSL. Но LVDS’а хватает SSD накопителям, а работы чего-либо, кроме них, нам и не обещали. А нам, по-прежнему, хотелось бы заиметь плату с полным портом. И что нам для этого требуется? Выправить тактовый сигнал и обеспечить управление питанием! Платы разводить умею, вот пробный шар (работает, кстати, отлично):

Фото плат в сборе
В таком виде это работает. Работает хорошо. Возможно разведу ещё один "переходник", но уже с вторичными DC/DC на нём.

Выбор заметок по дате