Pull to refresh
47
0
Луговсков Павел Петрович @Archy_Kld

Пользователь

Send message

Ответ положительный. Наблюдение продолжаем.

Есть у меня чувство искренней зависти к тем, кто не читал еще Золотого жука Эдгара Аллана По. Человека, писавшего детективы еще до появления термина "детектив", фантастические рассказы до появления жанра фантастика, и которого почитал своим учителем в описаниях мистических ужасов последователь Говард Лавкрафт.
Собственно ключевая цитата из рассказа, непереводимая на иные языки, сразу под заголовком.
Насколько его "Золотой жук" относится к POI, координатам и логическим построениям, что мне захотелось взять его название для названия этой главы - всегда можно сойтись на мнении, что сиё лишь вкусовщина автора.

Писать всё локально в .md, в новый редактор копипастить прямо перед публикацией.

В первую очередь, спасибо за тщательную вычитку и список моих описок в личке.
По автоматическому поиску структур, имеем единый файл, собранный из блоков, структур максимального размера - собственно функция block(offset) вполне автоматически определяет - какой из типов блока находится по смещению, и подставляет структуру именно этого типа. Или не подставляет - если тип неизвестен. Или сообщает, что по запррошенному адресу блок не найден.
Но я понимаю, о чем вопрос на самом деле. Однако автоматизация поиска типов подходящих структур - достаточно бессмысленна: когда схема данных структуры уже известна, автоматизация распознавания - не нужна. Когда тип блока только разбирается синтаксически - львиная часть работы выявление взаимосвязей и попытки определить семантику, автоматизация скорее запутает, чем поможет. Идеология структуры всех блоков: сначала идет заголовок с перечнем всех разделов, в заголовке самым первым - указатель на массив "главной" информации, каждый элемент которого содержит указатели на дополнительные части. Если автоматически разметить всё подряд - выигрыша не принесёт, всё равно надо будет разматывать всю логическую цепочку "главного".

//--- 010 Editor v11.0.1 Binary Template

Бинго!
Спасибо )

Спасибо, лестно, приятно. 010Editor действительно хороший, хотя и не без недостатков инструмент.

Интерпретатор. Всё, что до ```;```, выполняется, как целое. Атрибутам не можно присвоить значениев. А возможные аттрибутивные функции жестко ограничены, на цвета не повоздействуешь:

Никто не любит избыточный код, но любовь зла. Язык 010Editor очень похож на С, но является интерпретируемым, и выполняется построчно.
Как только интерпретатор проходит строку с объявлением переменной - всё, она уже в Variables и уже подсвечена в hex окне. Последующее задание цвета фона в следующей строке - оно будет действовать на последующие переменные (в рамках границ видимости, в данном случае - структуры).
А если есть желание менять фон переменной в зависимости от ее значения - то будь добр сначала прочитать место, где она будет, и только потом, определившись с цветом по значению - объявлять переменную.
Второй вариант - FSeek() назад на размер данных переменной и повторное её объявление при "ошибке", так, кстати, я тоже кое-где делал. Минус-появится вторая переменная в Variables с тем же именем после первой.(вернее, массив с этим именем из 2х элементов). И это еще терпимо - код ведь будет читабельнее, понятнее в Вашем примере.

Но главное contra - описание переменных через FSeek() ломает механизм синхронизации Variables и hex по <Ctrl>+<J>. Т.е. я не смогу прыгнуть в конкретный итем как раз в том случае, когда там произошла проблема.

ps: Спасибо за комментарий, не смотря на объём, я понимаю, что все равно будут очевидные для меня ситуации, но которые для читателей будут вовсе не очевидны. И я вовсе не претендую на абсолютную правильность - наверняка, могут бытьи ошибки и неоптимальные решения, здорово, когда на них указывают.

Вариант использования был (и остается) единственный - тот диск, на торрент которого ссылка в статье, и который является предметом исследования.

Навигация в РФ для гражданских очень долго была болью. Вспоминаю, как меня бесило отсутствие нормальных карт для Garmin в середине 2000х: минимум основных населенных пунктов и дорог, зачастую неверно нарисованных, от балды береговые линии, треки или "рядом с дорогой" или вообще вне размеченной территории. Точнее, бесила невозможность исправить явные ошибки карты.

Хороший был приёмник, сейчас модель и не упомню, но дизайн в виде треугольной призмы позволял его удобно расположить на торпеде авто.

Считалочка про десят негритят — это, похоже про вашу школу.

Статья давняя, конечно, но


После еще пары проблем с USB в UEFI я пришел к тому, чтобы в загрузчик поместить свои драйвера хост контроллеров. Для этого приходится останавливать те драйвера, что работают в самом UEFI, и загружать свои. Добавлять так называемые “костыли” мне никогда не импонировало. К тому же, такой код со временем станет тяжело развивать из-за нагроможденности.

Как я тут понял, HP в своих версиях драйверов/PEIмодулей не стесняется ни разу использовать фичу #define true false.
Это и упоиянутая замена USB Direction (которая, в общем-то не совсем абсолютно бессмысленна — чуть упрощается ассемблерный код разбора. На пару-тройку инструкций))
Еще из веселых примеров у них — творческое видение реализации PEI_USB_HOST_CONTROLLER_PPI интерфейса: добавили самым первым членом структуры свой, посконный. При установке приравнивают его 3.
А при вызове из других Peim проверяют — если это значение не 3, то… скорость USB ставим Low, тадааам. Ну и, естественно, вообще получается эдакая "защита" интерфейса: в UEFI первый член струтктуры тот, что у HP второй.
Т.е. вызываются не те функции, что предполагаются.


hp_PEI_USB_HOST_CONTROLLER_PPI struc ; (sizeof=0x1C, align=0x4, copyof_112)
wtf_eq_3        dd ?
ControlTransfer dd ?          
BulkTransfer    dd ?         
GetRootHubPortNumber dd ?    
GetRootHubPortStatus dd ?    
SetRootHubPortFeature dd ?                         
ClearRootHubPortFeature dd ?             
hp_PEI_USB_HOST_CONTROLLER_PPI ends
Rate Matching Hub (RMH), а контроллеру оставила только два порта, к одному из которых всегда подключён хаб. Назначение второго порта, к сожалению, мне выяснить не удалось.

Второй порт EHCI — Debug port. Многие лета моему слоупочению.
И спасибо за статьи, кстати, да.


Сейчас пытаюсь отреверсить-разобраться, как в ECHI на интеловском 5-м поколении подключаются/отключаются в BIOS USB в нотнике.
В даташитах написано как инициализировать, Tianocore — показывает как правильно.
Но вот как ОТКЛЮЧАЮТСЯ в EHCI отдельные USB порты — на каком этапе, в каком модуле — как-то не накопалось ничего, пока что в IdaPro копаюсь, но там чем дальше в лес, тем толще партизаны, конечно.

Это было бы слишком просто ))


Проблема в том, что в WL нотника нет ни одного WiFi модуля с встроенным BT. Соответственно, подозреваю, что НР вообще не заморачивались с тестированием этого порта USB — могли для обеих ECHIконтроллеров поставить инициализачию с 1 по 6й. Мне же нужен рабочий 7й на втором контроллере.
image


Intel 7265, в отличие от 7260, BT disable, кажется объеденил с WiFi disable.
Вывод 51 mPCIe не разведён на модуле, в любом случае.


image


image


В любом случае спасибо за ответ. Я не думал, что на стандарт в PEI фазе так могли забить.

Громадная благодарность CodeRush за академический уже цикл статей по UEFI. И восхищение UEFITool тоже.


Появился тут вопрос, Николай.
Возможно ли, что матёрый производитель где-то рыбу заворачивает в стандарт?


Ситуация — нотник HP ProBook 6540b от 200лохматого года, хочется WiFi человеческий, а не g.
Еще раз спасибо Вам за статьи, на 80% руководствуясь ими, прописал WiFi ac + BT4 whitelist, отключил проверку RSA. Но BlueTooth системой не видится. На другом компе — работает. Принципиальная схема нотника показывает, что USB выведен на mPCIe (именно по нему подключается подсистема BT). Очень-очень похоже на то, что этот USB порт — не инициализируется в BIOS, как рабочий.


Подумал посмотреть — как в UEFI отключаются-включаются порты. В datasheet на 5-е поколение, ECHI, управление USB2 портами изящно обойдено стороной — мол, смотрите USB спецификацию, это только IBF интересно.


Модули прошивки в Иде превесьма похожи на Tianocore-вские — но вдруг натыкаюсь на необъяснимое — ладно, ECHI как-то чуть по-своему инициализируют, но структуры PEI_USB_DEVICE с тем же GUID очень похоже, что несколько иные. Местами.


image
image
image

Посоветуйте, пожалуйста, в какую сторону стоит еще попытаться покопать? ))

Если читать фразу по отношению к конкретной программе, и слово каждая, и оценка размера ~+50байт таки являются верными. Что было подверждено
Если говорить про абстнактную программу на С — то из формулировки необходимо убирать численную оценку.
В идеале, конечно, еще лучше отдельно расписать механизм, обуславливающий больший расход ROM на глобальные переменные. Из этого описания видно, отчего использовано слово «каждые», и какие при этом могут случаться исключения.
Собственно, это выводы из сравнения asm, но это кому-то очевидно, кому-то требуется много дополнительных букв.
Да, было, поправил.

где найти нормальное описание работы с github?
Я бы сказал, обучение работы с git — скорее обучению образа мышления.
Сначала просто поставить git, разобраться с идеологией работы с локальным репозиторием, как посмотреть историю, как откатиться на конкретный коммит.
Потом — работа с удаленным репозиторием, не важно bitbucket или github или сервер в интрасети, синхронизацией состояний, работа с конфликами версий.
Потом — какие удобства даёт ветвление при разработке.
Не буду брать на себя ответственность рекомендовать конкретную статью, на хабре их немало.

А по конкретным командам я себе, например, форкнул шпаргалку. И теперь в два клика она доступна у себя в репозиториях на GitHub.
Проверил и окончательный исходный код из статьи, и предпоследний пример из текста — так же нормально компилируется.
Простите, повторить описанное не удалось.
Перепроверил. Без ошибок компилируется. Рассказывайте — как?

UPD: я проверял код репозитория, естественно. Вы о нем? Или из статьи копипаст?
github.com/lugovskovp/TrafficLight13/blob/master/TrafficLight13/TrafficLight13.ino
«Абсурдная»? «Паранормальная»? «Дивергентная»? «Паталогическая»? «Перверсивная»

Население измерения Извр, уверен, проголосовало бы за термин «перверсивная схемотехника», что-то в нем все же есть.

— Открой же мне, в чем странность своих предпочтений?
— Например, я использую физическую инерцию контактов реле, они не успевают разомкнуться, пока я переключаю порт на вход, смотрю логический уровень, и ставлю обратно как выход!
Мне тоже больно смотреть, но раз автору нравится — пусть будет.

Видимо я не сумел достаточно четко выразить свою мысль.
Мне — нравится.
Вот действительно нравится и я восхищен.
Автор вначале статьи насыпал дисклеймеров достаточно, чтобы можно было не воспринимать посыл «смотрите, вот это лучше, чем обычный ПЛК», он четко и недвусмысленно обозначил цель: из спортивного интереса суметь на 6 ногах сделать управление 6/10 I/O.
И он сделал это.
Ни на пол-секунды не предлагая использовать как реальную ответственную схему.

Тур Хейердал с Кон-Тики и Ра. Какой смысл ему был пытаться переплыть океан на соломенном кораблике?
Что, он не сумел построить хотя бы нормальную 50-футовую яхту для той же цели?
Ровно тот же побудительный мотив: показать что можно! Даже вот так, на грани возможностей и заа гранью традиционного здравого смысла. На конструкции из тростника. В то время, когда океанских судов, плывущих по тому же маршруту сотни и тысячи.
Но он сделал, показал, что и даже так — можно.

Ровно так же лично я к авторскому ПЛК отнесся.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity