Комментарии 48
Но монитор без разъема VGA попадается всё чаше, а в будущем все мониторы останутся без VGA.
В будущем мониторы могут остаться и без DisplayPort, кандидатом на замену ему видится Type-C
"Файлы прилагаем, любуйтесь сами." и где они? 😁
Сколько проделанной работы, вы большие молодцы. Ждем продолжения этой истории...
Так почему все-таки не работал DisplayPort? Он не работал на целой партии плат, или только на одной? Если последнее, то не дешевле было выбросить ее, чем неделю реверс-инжинирить всей командой?
Я так и не понял, что это было. Кто их загнал в угол и зачем.
Мы же делаем НОВУЮ серверную платформу на годы вперед.
Получается что это ихняя плата, на которую кто-то рандомно напаял каких-то чипов. А другой кто-то написал неработающую прошивку. Иначе зачем нужен реверс - инжиниринг?
Просто пришел санкций и техподдержку им отключили, судя по всему.
ASPEED - это китайщина, и всегда встречается на матерях китайского происхождения. На западных брендах стоят, как правило, Nuvoton, хотя тут не 100%. Плюс ко всему, я сомневаюсь, что какой-нибудь супермикро выпустит такую сырую поделку, где порт стоит, но "мигает и лагает" - они просто его вырубят и напишут в доке об этом, если уж не смогли завести к релизу прошивки.
Прозреваю, что матери были куплены физиком в Поднебесной за нал, и завезены сюда - потому и ТП нет - товар для внутреннего рынка Китая.
У меня на одной из работ было два проекта с Aspeed, правда на старом, 2400 и 2500. А у всего нашего офиса и того больше. Оба изделия разрабатывались по контракту для совсем не китайских вендоров. Но прошивками для Aspeed занималась другая команда в другом офисе. Мы только их прошивку в SPI флешку заливали и общались с ней по IPMI. Дисплейного разьема штатно небыло, только на отладочных пинах.
Это одна из 27 разработанных нами плат для серверной платформы М1. В ней используется чип ASPEED 2600. Задача была выводить наружу и VGA и DP. DP выходить не хотел) Поскольку частоты высокие, дорожки проходят во внутренних слоях - что происходит не понятно. Осциллографом на таких частотах тоже сложно что-то поймать. Поэтому необходимо было четкое понимание - проблемы в каких-то настройках или проблема все-таки в железе. Благодаря проделанной нами работе удалось однозначно сказать, что проблемы в железе. После этого наши крутые схемотехники засели с платой еще на несколько вечеров, нашли эту проблему и устранили. Это типичный процесс bring up.
Вот этого абзаца в статье и не хватает, да.
Во, совсем другая тема. В статью надо как раз добавить описание проблемы и её решения от железняков, и будет бомба.
А то получается как детектив, который обрывается на том, что убийца не дворецкий. Ну круто конечно что дворецкий исключён из списка подозреваемых - но тогда кто, как, зачем? Тайну не раскрыли! Концовка слита!
Я думал что крутые дядьки сначала моделируют а потом паяют.
Я правильно понимаю, что вы поправили этот код конфигурирования DP который идет блобом в составе прошивки Aspeed и DP заработал? Если так то к чему свелась правка? Понизили частоту чтобы работало на вашей разводке? Или с оригинальным блобом он в принципе не мог работать?
Поправили BLOB как на пониженную частотку каналов, так и на одну линию. Аппаратчики убедились, что на качестве изображения это почти НИКАК не сказалось. А уже после их «правок» заработало и на стоковом BLOB.
IMHO (проверить невозможно), но в ASPEED стоковый BLOB от 2024 года будет работать в 75% реализаций без «ASPEED SDK grafix guide» и описываемого там дебага и тюнинга. Но если вдруг, мы сможем собрать теперь и свой «кастомный». )))
Добро пожаловать в разработку железа, которую мы заслужили.
Текстолит есть, чипы есть, и даже доки и софт к чипам часто есть - а официальной поддержки от производителя нет и не будет. Поэтому когда что-то таинственно не взлетает, или остро нужно что-то поменять где-то в бинарных кишках производительского SDK, или нужно и вовсе выкинуть эти бинарные кишки и заменить на свои - привет, реверс.
У меня сейчас половина заказов по реверсу похоже выглядит.
DisplayPort мы все-таки победили. Проблема оказалась не в программистах.
А в чём? Такая интрига с самого начала, а итог не раскрыт
Хотплаг это, конечно, хорошо, но чревато. Вот история о том, как хотплагом HDMI убили недешевую видеокарту.
дубль
в публикации приводиться сокращенный вариант рассказа. полную версию читайте по подписке всего за 1999 руб. в месяц
Ссылку на файлы добавил в тексте, спасибо, за комментарии!
Так в чем была проблема ? Ждем подробности имменно о решении проблемы с изображением, а не реверс системы комманд встроенного МК.
Ответ простой: Мы просто решили сделать лучше и удобнее. VGA древний и
его уже ставят по причине "всегда ставили, куда без него"? Мы же делаем
НОВУЮ серверную платформу на годы вперед.
Новая серверная платформа на годы вперед это когда вы самостоятельно спроектировали и растрассировали материнку и бэкплейн к ней, написали свой фирмварь, изготовили тестовую оснастку и производите комплекты на контрактном производстве под своим неустанным контролем. Вы же взяли какую-то дешманскую китайскую поделку и патаетесь с помощью подпорок заставить её работать, причем не факт что это единственный глюк и в процессе эксплуатации у ваших потребителей не вылезут другие неприятные артефакты с которыми программным способом вы справиться уже не сможете. Занимайтесь пожалуйста нормальным импортозамещением, а не суррогатным.
Здравствуйте! Ознакомьтесь, пожалуйста с нашей разработкой, тогда поймете о чем идет речь https://t.me/E_Flops/31. ASPEED AST2600, это не "дешманская китайская поделка", а чип мирового уровня, который используют многие производители серверов для организации удаленного мониторинга и управления.
Надо сказать, что китайские "нонейм" серверные матери уже перегнали по качеству тот же супермикро. Только это не про хуанан и компанию, а про настоящие серверные платы. Купил себе для десктопа inspur x79, поскольку валялась гора остального железа - стабильность идеальная, даже в экзотическом конфиге с тремя видяхами и тремя независимыми десктопными ОС в гипервизоре. Супермикро до этого нет-нет да лагал (статики боится жутко), у inspur ни одного зависания или лага.
А BMC Aspeed - это известная шняга, их, наряду с Nuvoton, ставят абсолютно все бренды, никто свои BMC не клепает. Кстати говоря, софт под Aspeed есть и опенсорсный https://github.com/openbmc/openbmc
Крутое расследование. Raptor использует похожий чип, и там внутри m68k. (Но в m68k вроде нет zero registry). И все прошивки Raptor-ов доступны в гите, а инструкции в их wiki
Посмотрел я на ваши платы, и у меня вопрос возник: откуда вы планируете брать "Байкалы"?
Разбор бинаря классный, а вот концовка и некоторые моменты откровенно слиты. Ни намёка на продолжение, ничего.
До чего же круто, какая ностальгия и накал страстей вытер слезу, хочется к вам. Успехов, плавного полета!
Обычный же первый MIPS, не?
Нет, только формат инструкций похож. Опкоды другие совсем, и у MIPS нет этой темы с верхней-нижней половиной регистра.
Разве? А как там подгружаются 32-битные числа в 32-битные регистры, если вся инструкция 32 бита? Насколько я помню, там как раз и используется схема lui/ori, когда первая команда заносит верхние 16 бит, а вторая - нижние.
И lui
- это единственная инструкция в базовом наборе MIPS, которая берёт imm16
и бьёт им по верхней половине регистра.
При этом lui
- это не вариант or
, а именно что операция загрузки. Так что пары or.l/or.h
в MIPS нет. И опкод у lui
с or.h
не совпадает - и вообще совпадений по номерам кодов нет.
В чём-то это странное ядро на MIPS похоже, но на "похоже" дело там заканчивается.
То, что кто-то назвал инструкцию как or.h
не означает то, что это именно or.h
а не lui
. Грепнул листинг, во всех случаях этот or.h
используется именно как lui
. Все команды с этой инструкцией имеют вид or.h rX, r0, imm16
, что как раз и является загрузкой imm16 в верхную часть регистра, ибо r0 - вседа 0.
Всё же не вижу отличий от MIPS'a, кроме ремапа опкодов (не проверял).
Это интересная для наших программистов ветка обсуждения. Просили передать спасибо комментаторам! И, увы, пока единственная из интересных.
Добрый! Это я, Викторыч. Когда бинарь пытались открыть дизасмом - в первую очередь проверяли все популярные архитектуры. И MIPS проверялся в нескольких версиях. Больше всего, как и отмечено в статье, подходила Motorola 65-й серии, но это была не она. По поводу подгрузки 32-битных значений в регистры - обычно это делается загрузкой значения из памяти. А все "непосредственные" значения, вшитые в опкод инструкции, логично и всегда меньше максимальной ширины инструкции.
Но монитор без разъема VGA попадается всё чаше, а в будущем все мониторы останутся без VGA.
Странная фраза. Абсолютно аналогично в будущем все мониторы останутся и без DP.
С интересом прочитал, спасибо за статью. Поправьте, пожалуйста, ошибку: "Но монитор без разъема VGA попадается всё чаше, а в будущем все мониторы останутся без VGA."
Общий комментарий от программиста, упомянутого в статье.
"По адекватным комментариям вижу прямые и завуалированные претензии, что в этой статье трэк по багу не описали "от и до". Можно бы ограничиться великим комментарием авторства великого Андрея Сергеевича Аршавина июня 2012 года, но мы поступим иначе.
- Вы не описали лечение железной части. Почему?
Это потребует описания серверной системы целиком (в нашем случае специфического и даже уникального дизайна). А его пишем не мы, программисты, если вообще публично пишут.)
- О чем тогда статья?
Статья о дизассемблере ASPEED 2600 DP MCU и применении "дизасма в уме" для поиска проблем в работе железа (см. тэги).
В новых условиях "обрезанной поддержки" работать стало потруднее, но и интереснее. Наш кейс демонстрирует, что при должном умении и упорстве можно добиться результатов, чего и всем желаем. Never give up!
- Вы собираетесь дописать статью дальше?
Немного допишем в комментах, но в рамках своих компетенций (Software development). Соберутся ли аппаратчики - вопрос точно не к нам."
Судя по всему все самое интересное и происходит в условиях "обрезанной поддержки". У меня в 2010 году была история с коммутаторами ExtremeNetworks. Купили в университет где я работал некоторое их количество. Купили с техподдержкой! После настройки выяснилось 2 вещи - у коммутаторов (48 портов) есть баг в прошивке из-за которого правая половина свича (24 порта) не имеет связи с левой. Мы в техподдержку, а ее по факту и нету вовсе - там Московская компания была, которые слали нас на глобальную техподдержку extreme, а те в свою очередь заворачивали обратно на единственного локального представителя. Круг замкнулся. Месяц они получали от нас багрепорты и кормили завтраками.
А тут мой отдел как бы уже начальство начало пинать на предмет почему железо купили, а оно все еще на столах лежит. Через специальный урл на сайте extreme удалось добыть ssh версию прошивки (ее тогда надо было запрашивать и ее выдавали после проверки, что ты не международный террорист). Эта ssh версия тоже оказалась с тем же самым багом и я тогда параллельно начал несколько активностей: декомпиляцию прошивки с попыткой найти багу и написание кучи ругательных сообщений в пабликах о том какой экстрим плохой.
Через 2 недели случилось несколько разных событий: во первых на меня вышли представители ТП ExtremeNetworks, которым видимо не понравился шум на их форумах (я был вообще ни разу не политкорректен), а во вторых к этому времени я смог сделать распаковщик (и упаковщик) для прошивки, определил тип процессора, смог завести все это в IDAPro и обнаружил в файле прошивки отладочную информацию с названиями функций, названиями файлов исходников и номерами строк (эта информация использовалась, чтобы добавлять в логи ошибок инфу о том где они случились).
В течении 2 дней переписки с ТП Extreme у меня получилось разобрать почти всю прошивку, найти места инициализации 2 чипов bcmХХХХ (уже и не помню что там было) и место где программист перепутал != и == при настройке vlan на внутренних портах, соединяющих эти чипы. Поправить инструкцию, запаковать прошивку и закинуть ее на коммутатор заняло еще день и оказалось, что проблема полностью решена. К этому моменту общение с ТП завершилось выдачей мне логина и пароля от сайта ТП где можно скачивать обновления и отправлять баг-репорты. Как сейчас помню пароль от этой учетки был "welcome1". Уже неактуально конечно - давно закрыли эту учетку, да и сайт их ТП уже несколько раз переделали.
Первым что я сделал получив учетку на сайт ТП это отправил им баг-репорт, в котором описал симптомы, написал что сам уже справился, и добавил в каком файле исходников в какой функции и в какой строке заменить != на == чтобы исправить ошибку.
Реакцией было скупое сообщение "Awesome engineering power"...
На что способен инженер, загнанный в угол (или как устроен Display Port у Aspeed AST2600)