All streams
Search
Write a publication
Pull to refresh
34
0.2
Михайлов Алексей Анатольевич @MinimumLaw

Linux Kernel, Bare metal, Embedded developer

Send message

Любопытно одно - за развитие ядра агитируют люди, которые в подавляющем большинстве своем для ядра ничего не писали. Линус сказал Rust'у быть - значит быть. По большому счету это повод пошевелить ряд подсистем, которые другими методами подвинуть ну никак не получается. А уж что там будет - это будет видно. Когда-то и на Go драйвера писали. И вроде бы тоже кричали, что "быстрее и безопаснее одновременно".

Удивительно, но ровно наоборот. За весь мой уже около 30-летний опыт работы могу четко сказать - на общих основания я реально устраивался всего дважды. И оба раза договаривался, что испытательный срок в режиме совмещения со старой работой.

В одно из этих двух брали всех вообще, но обстановка такая, что меня хватило ровно на испытательный срок в три месяца и один день. Закончит начатое (дело чести) и свалить в закат. Реально работать так, как желали тамошние руководители, было просто невозможно. Один день сверху и то по причине того, что руководитель красавчик...

Второе - полная противоположность. Шикарный онбоардинг, отличные руководители, для работы все есть. Задачи понятные. Деньги вменяемые. Реально прямо сказка. От сказки отличается только тем, что работать надо. А работать реально надо и много. Тоже ушел по собственной инициативе с середины испытательного срока. Очень уж хорошее предложение сделала моя любимая контора. До сих пор временами червячок гложет - а правильно ли я поступил.

Все. Остальное исключительно по рекомендации. И да, исключительно совместителем. Везде уходил или по сокращению в связи с очередным кризисом, или потому что все - совместитель уже не тянет. Но консультирование - всегда пожалуйста. И до сих пор иногда пишут и звонят.

И да - основная работа последние 25 лет одна. Удивительно, но иногда зовут даже те, с кем в свое время сильно ругался, не разделяя подходы к проектированию.

Но личный опыт - плохой советчик. Это только один из множества разных вариантов. Так тоже бывает

Да будет он самый!

Понимаю - личный опыт плохой советчик. Но тем не менее. К этому возрасту уже не ты должен искать работу, а работа тебя. Сделанные проекты - лучшая рекомендация. Воспитанные тобой спецы при случае именно учителя позовут туда, где самим страшно. Мир тесен, на самом деле. Кто что может, кто чем занимается - все в округе знают.

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

"Когда тебе за 45, ты уже не сеньор — ты древний артефакт." - отлично. Я согласен. Я строчкой из анекдота отвечу - "когда ваши молодые и амбициозный сбегут и вырастут вы знаете кому звонить". Но озвученная фраза одна из причин, по которым стартапы проваливаются. Впрочем, это нормально. Это их путь, и их выбор. Работы и без них хватает.

Нормально. Там не ошибки, как таковые. Скорее моменты, которые слегка режут слух тем, кто серьезно телефонией занимался. Знаете, как набившее оскомину "не дырка, а отверстие". Не думаю, что это стоит исправлять. Ну, допустим, про тот же DTMF странно звучит "комбинацией двух тонов четырех различных частот". Сравните это с написанным на вики. А вообще-то и частоты те, не просто так подбирались... Но это все уже залезая в дебри. Боюсь меня сегодняшнего уже не хватит. А перепечатывать нетленку "Сигнализация в сетях связи" как-то не правильно.

Вот как всегда... Самая интересная часть, а именно как по двум проводам передается голос в дуплексе, да так что полярность подключения с любой из сторон не имеет значения, в лучшем случае слегка приоткрыта. А это, собственно говоря, самое важное и интересное в мире аналоговой телефонии. Впрочем, реально подробный ответ на этот вопрос достоин отдельной статьи. С уклоном в схемотехнику (может быть даже электротехнику). Только кому это уже интересно?

А так, как старый телефонист, ставлю плюс. Лет тридцать уже не видел этих, некогда знакомых терминов. И бог с ним, с некоторым количеством ошибок. Например, про двухтональный сигнал DTMF, про ручное отключение абонентов и остальное.

Всем, помнящим кто такой Борис Соломонович Гольдшейн, мой пламенный привет.

Да, чудны дела твои... В свое время всем, кто претендовал на звание Advanced User рассказывали про содержимое файла /etc/protocols поясняя что там, и зачем это нужно. А нужно было, хотя бы потому что IP-сети тогда совсем не были безальтернативны. Наоборот, сети на IPX были куда как более в фаворе. А тем, кто хотел Network Administrator еще и про ether-type и зачем нужно оно. Да много еще всякого в сетевых стеках хватает. Например 4addr в 802.11.

Да, конечно - стоило бы еще упомянуть RFC1700 как документ, имеющий непосредственное отношение к данной статье.

В 2003 году, когда каждый программист был на учёте, когда для того, чтобы начать работу, вам действительно был нужен диплом и вышка, когда вам платили много, и требовали немало, — заниматься переписыванием ПО от нефиг делать не хотел никто.

... высокие деревья, зеленая трава, бегающие вокруг розовые единороги. Впрочем, возможно у каждого был свой 2003-ий. Ладно, проехали.

... а кое-где проглядывает FoxPro.

С подачи того самого 2003-его (ну может попозже) у нас он не только проглядывает, но весьма активно используется. В гос. секторе точно.

... Не знаете, что такое телекс?

Да скажите проще - это самые ранние терминалы. Я, правда, живьем (именно как пишущую машинку с телефоном) его видел еще дошкольником и младшим школьником. Не поверите - в Сбербанке. В поселке городского типа. Вместе с ламповыми калькуляторами. И да первая персоналка, в привычном смысле этого слова, виделась там же. Судя по обрывочным воспоминаниям она даже работала на UNIX, возможно даже была не персоналкой и терминалом - мне тогдашнему этого было не понять. Первая команда, которую показали была cal - выводила календарь на текущий месяц. Что тонко намекает.

Да, для сомневающихся - год что-то между 1985-1989. Лужский район Ленинградской области.

Эту систему пора шатать. Её пора шатать давным-давно. В ней нет сложности. В ней совершенно нет сложности.

Как правило, сложность тут одна. Или менять все и сразу, или не трогать. Все, что можно заменить частями, давно заменено. Остальное просто страшно. Долгий простой, большие деньги, необходимость синхронной работы множества специалистов.

В этом плане нам повезло больше. В том период, когда у нас "завтра приходите, компьютеры не работают" было (да и остается) в порядке вещей мы могли себе позволить менять систему частями. Да и не работающий эквайринг тогда не был чем-то из ряда вон (наличка на случай чего всегда была в кармане). Да и расшатано и развалено было все настолько, что построить по новой было проще и дешевле, чем чинить.

Впрочем, чем дольше проблема существует, тем дороже она стоит. В принципе рано или поздно а переделать придется. Обычно, правда, строят альтернативу и дают ей работать в режиме кооперации, постепенно замещая. Почему в штатах так не получается... Не мне судить.

Ну, в общем случае это не так. Другое дело, что есть известная присказка: "Колхоз - дело добровольное. Хочешь - вступай. Не хочешь - расстреляем!" Так и тут. Оба компонента не обязательны. И в принципе без них можно обойтись. Вот только не очень хочется. Да и "современные армы" - уж очень широкое определение.

Да ладно. Не так уж страшен черт, как нам его малюют.

Правда, неплохо бы цифровой схемотехникой владеть. А это не на год в монастыре или как там ее - а, ну да - Школы 21 работы. Потому как к ней без аналога подойти сложно, а аналог безграничен. За то тогда С прост. Почти как ассемблер.

-А вы читали классические работы ? Ну например Йордана ?

А по какому критерию вы причислили эту работу к классической? Может быть классика это "Капитал" товарища Маркса, а это жалкая новодельная пародия?

Много всякого написано. Много личного опыта. Как положительного, так и отрицательного. А уж "по крайней мере, вывести вашу карьеру из-под удара" - это не про профессионализм, а про карьеризм. Впрочем, каюсь - не читал. Просто не знал, что это оказывается "классика". При случае ознакомлюсь. А вдруг действительно.

Док, я все понимаю, но...

Понятно и бесспорно, что ожирение это зло. Но как лично вы разбираетесь с теми, у кого ИМТ 25-30? Мне кажется, что избыточное рвение ваших коллег по отношению к этим людям, скорее мешает, нежели помогает. У нас не Африка. Один только комплект зимней одежды, который надо носить на себе - далеко не шорты. Что по весу, что по удобству и количеству затрачиваемой энергии. Да и генетика за столько поколений адаптировалась под климат.

Откуда вообще взялась верхняя планка нормы в 25 у.е.? При моих 175 см это 77 кг. Человек, к такими характеристиками выглядит как, простите за сленг, дрищ. Поднять мешок картошки (50 кг) на пятый этаж без лифта в один заход - не верю. Неужели правда кто-то решил, что сила и выносливость не важны, а важна некоторая жилистость и возможность короткого рывка?

Своя история

45 лет, 175см, 84 кг. ИМТ - 27,4. Не менее любимый показатель, а именно окружность живота - 96см (да, +2см к навешиванию клейма "ожирение"). Чуть больше пяти лет назад меня прямо загнали в спортзал. Угрозами в стиле "либо сейчас в зал, либо через три года инсульт". На тот момент у меня было 78 кг (ИМТ 25,4). Никакие доводы, по поводу того что каждый рабочий день час ходьбы (или 7 километров) ежедневно, что лифты до седьмого этажа всегда игнорируются, что летом 18 км до работы и обратно - велосипед, что помимо прочего есть дача, стройка и все остальное - не работают. Раз так, значит мало - добавляем еще.

По итогу вес только в плюс (он, на самом деле в течении года гуляет от 79кг лето до 85 кг зима). Давление только хуже - и разброс больше, и ощущение отклонений хуже. Головные боли, правда, сильно реже стали беспокоить. Да внешний вид поинтереснее стал (что точно побочка - основной целью это точно не было).

Да, бывают. И сильно чаще, чем хотелось бы. Другое дело, что стараниями разработчиков осей и драйверов их не очень видно конечному пользователю.

Да и что считать за обычный "серийный" ПК. Ноутбуки, например, почти поголовно имеют те или иные проблемы. Но опять же - они обычно довольно неплохо спрятаны.

... в смысле "UBoot или любая другая более простая альтернатива UEFI PI, реализующая UEFI как интерфейс - строго лучше, чем любая прошивка, основанная на EDK2".

Есть одна проблема. Описание платформы. ACPI точно не лишён недостатков. И не каждый производитель считает нужным вчитываться в эту спецификацию. "И так сойдёт" - это прямо повсеместно. Но и DTB - это полная анархия. Там всё настолько платформо-специфично, что просто кошмар. Шансы на то, что U-Boot каким-то образом правильно сделает ACPI ничтожны, а без него и UEFI как таковой мало интересен.

Во всяком случае так ситуация выглядит с моей колокольни и на сегодня.

Право слово, прежде чем ловить оттенки смыслов стоит раз-другой попробовать. И только потом для себя решить какой из терминов использовать "практически невозможно" или "нецелесообразно". В конечном итоге это синонимы. С разным смысловым оттенком, но синонимы. Я вполне согласен с любым из них.

А что до "Элементарно, Ватсон" - так не боги горшки обжигают. Каждая новая задача кажется невыполнимой, а каждая пару-тройку раз повторенная элементарной. И вся жизнь всегда состоит из рутины элементарных задач и гор невыполнимых. Просто задачи у всех разные. И часть из них только с первого взгляда кажутся достаточно простыми и понятными. Ровно до тех пор, пока их решать не придется.

Ну и отлично. Очень многое зависит от того, что именно представляет собой ваше конечное изделие. Если это "черный ящик" с заданным функционалом - роутер, телевизор, ТВ-приставка, станок или что-то подобное - то в принципе достаточно U-Boot. Да, будет некоторой риск окирпичивания при обновлении прошивки, но не факт что это обновление вообще будут делать.

Другое дело, если вы замахиваетесь на ПК общего назначения. Куда любая домохозяйка должна иметь возможность установить хоть Windows, хоть Ubuntu с Gentoo, хоть FreeBSD с Астрой, хоть Android с Авророй. При чем с помощью флешки от производителя операционной системы. Да в режиме мультизагрузки в любом варианте. Вот тут UEFI с ACPI начинает рулить. Его за то производители осей и любят.

По остальным частям - непонятно чем занят как раз и раскрывается данной статьей. И весьма неплохо раскрывается. А про троянского коня... Скорее всего это не про UEFI, а про IME (Intel Management Engine) или её аналоги. Другое дело, что появление обоих технологий было более или менее синхронизировано по времени, но каждая из них вполне самостоятельна.

Слушайте, но вопрос решается просто. Возьмите, скажем не Intel. Возьмите пороще. Даже не aarch64, всего-то arm-v7. Тот же IMX6, допустим.

Там спецификация по регистрации, но вполне доступна (не из России, конечно). Потом прицепите к нему одну из множества разрешенных типов RAM (там, вроде бы DDR2, DDR3, DDR3-L в самых разных конфигурациях по части банков памяти - но могу ошибаться). На которые тоже вполне открыта спецификация. Потом изучите особенности BOOTROM, в части загрузки с одного из носителей (SerialFlash, SD-карта, eMMC, NAND - вроде на этом все). Остается дело за малым - написать код, который там в семь шагов вроде бы, каждый из которых разбит на три-четыре подшага. Потом подберите или вычислите специфичные для конкретно взятой платы (а именно ее трассировки) задержки распространения и несимметричность линий данных. И молитесь, чтоб ни на одном шаге не случилось ошибки. Ну и при производстве все было гладко - в том смысле, что текстолит нормальный, оборудование не врет, монтаж на уровне, и трассировщики сделали необходимые зазоры по всем параметрам. Документация на процессор - около 2К страниц, из них контроллер DDR страниц 100. Документация на чип DDR3 - еще около 1К. Читать не перечитать, считать не пересчитать.

Или возьмите там же XLS файл, куда вбиваются данные их спецификации выбранной микросхемы, получите набросок конфигурации в виде CSV - регистр-значение. Загоните его с помощью фирменной утилиты через USB в готовую плату вместе с фирменной утилитой, которая погоняет это на всех частотах сутки-другие, и выдаст итоговые регистры. Или выдаст косяки трассировщиков - кто не безгрешен? Но через несколько итераций, возможно с переделкой платы, получите готовые регистры. Которые просто надо вбить в те самые семь шагов. В том же U-Boot'e.

Все можно руками. Никто не говорил что нельзя. Просто целесообразность этой работы сомнительна. При том же итоговом результате.

И это IMX6. А если взять, допустим IMX8, то там все сложнее. Что уж говорить о DDR5 у Intel'а. Особенно зная весьма специфическое отношение Intel к документации. Одна ее иерархия займет отдельную книжку, страниц этак на 100. Да и не Intel'ом единым. Rockchip вообще ничего не раскрывает. Опять же - на входе референсный бинарь и текстовое описание микросхем и особенности трассировки. На выходе бинарь, который надо просто разместить в нужном месте на загрузочном накопителе. Типовая практика, к сожалению. Или к счастью. Это как посмотреть.

Товарищи из Yadro как всегда молодцы. Не то, чтобы что-то фундаментально новое и интересное, но всё в одном лонгриде - теперь это редкость.

От себя скажу так - EDK II сложна не кодом. Она сложна своей системой описания платформы и сборки. Десяток конфигурационных файлов с кросс-вложениями и не самой лучшей документацией. Вот бы это кто хоть крупными мазками. Чтобы этакий "Hello, world!" для абстрактной платформы. Так чтоб понять минимум и методы его наращивания.

Есть желание сделать UEFI для своих процессорных модулей с aarch64, но пока приходится обходиться по старинке - U-Boot/Barebox. Боюсь моих сил не хватит, на то чтоб осилить эту задачу. Но стремиться мне никто запретить не может.

Ещё раз спасибо. Было интересно и познавательно.

Когда-то, давным-давно, когда компания не гнушалась браться за единичные заказы, выставляя за них космический ценник, брал у них покровное стекло на столешницу. Со скруглениями, фасками, вырезами под кабели. Из оргстекла троечки. Покровное стекло то до сих пор защищает столешницу, хотя в некоторых местах уже слегка полировалось. Тогда вместо чертежа от руки попросили DXF-ку, но за этим дело не стало. И стоило вполне вменяемо.

К сожалению, несколько лет назад я попытался повторить такой замечательный опыт. Тоже столешницу, но попроще - на детский стол. Без вырезов, только скругления. К сожалению, цена вопроса оказалась сильно несерьезной. Пришлось отказаться. Тем не менее от всей души желаю удачи тем, кто до сих пор что-то производит (тем более массово). Пока вы есть - есть надежда на то, что все еще можно восстановить.

Мою квалификацию, к счастью. оцениваете не вы а заказчики. И это хорошо. Потому как иначе, пожалуй, я бы умер с голоду ;-) Ваше право оценивать мою квалификацию исходя из моих комментариев. Но это ровно так же работает в обратную сторону.

Момент второй - я выше писал про ОСРВ и выносил их за скобки, ограничиваясь Bare Metall. Но мы ж как всегда - здесь читаем, здесь не читаем, здесь селедку заворачиваем. Вообще говоря, ОСРВ в контроллерах должна иметь весьма серьезные обоснования. Чаще всего, при ее наличии, или контроллер решает не свойственные ему задачи (опять же - что бы это не значило), или ей закрываются дыры, которые другим путем решать разработчику кажется нецелесообразным (что в общем случае далеко не всегда верно). Я, за более 15 лет практики, видел всего пару проектов (и принимал в них участие) где она оправдана. Это были реально крупные проекты с большим количеством разработчиков. В остальных случаях она была избыточна и приносила проблем больше, чем решала.

Момент третий - накладные расходы ОСРВ, завязанные на взаимодействие ее составных частей, в любом случае будут сильно большими, чем простой (снова - что бы это не значило) обработчик прерываний от АЦП. Что же до ОСРВ вообще без тактовой сетки (читай основного таймерного или иного регулярного прерывания, по которому осуществляется переключение контекстов задач) - ну я просто оставлю без комментариев. И да, в хорошей ОСРВ контексты переключаются не только по таймеру - это тоже не новость. Но работу планировщика по их переключению никто не отменял. Это далеко не на несколько процессорных тактов действие.

По всему остальному - я никого и ни за что не агитирую и никому своих подходов не навязываю. Все что я делаю - это делюсь опытом. А опыт этот в подавляющем большинстве случаев и формируется как исправление последовательного подхода или той его части, которая кричит что "обработчик прерывания должен быть максимально коротким". Именно этот подход в подавляющем большинстве случаев и приводит к тому, что опрос флагов никуда не девается - просто меняется его контекст.

Боже упаси учить умных. У них надо учиться. Главное, стараться не оказаться в Крыловской басне про кукушку и петуха. При чем с любой стороны процесса. Умные и без меня прекрасно справляются. Вообще ругать коллег по цеху - явный признак проблем с квалификацией. А подходы в мире есть разные. У каждого есть свои плюсы и минусы. И самое главное - эти плюсы и минусы понимать и грамотно учитывать. Но тут, безусловно, важен контекст. По этой части наши с вами взгляды сходятся. Что совсем не удивительно.

Вы не со студентом разговариваете. Ваш авторитет преподавателя здесь не работает.

В реальности язык твой - друг твой. Чем раньше ты обозначишь видимые проблемы, тем меньшей кровью их получится решить. К сожалению, у современных выпускников навык коммуникации тоже не очень. И его тоже приходится развивать. Не в последнюю очередь благодаря такому вот отношению преподавателей. Но это тема другого разговора.

Для ученых все ясно: не изобретай лишних сущностей без самой крайней необходимости. Но мы-то с тобой не ученые. Ошибка ученого – это, в конечном счете, его личное дело. А мы ошибаться не должны. Нам разрешается прослыть невеждами, мистиками, суеверными дураками. Нам одного не простят: если мы недооценили опасность. И если в нашем доме вдруг завоняло серой, мы просто не имеем права пускаться в рассуждения о молекулярных флюктуациях – мы обязаны предположить, что где-то рядом объявился черт с рогами, и принять соответствующие меры, вплоть до организации производства святой воды в промышленных масштабах. И слава богу, если окажется, что это была всего лишь флюктуация, и над нами будет хохотать весь Всемирный совет и все школяры в придачу…

А и Б Стругацкие. Жук в муравейнике.

Information

Rating
2,521-st
Location
Пушкин, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Software Architect
Senior
From 350,000 ₽