Как стать автором
Обновить
-22
0
Андрей Батищев @DX168B

Программист

Отправить сообщение

И тем не менее, большинство двигателей Mercedes (даже 90х-2000х годов) отличаются удивительной экономностью при внушительных объёмах и мощностях. Разработчики хорошо работают над испытаниями и формированием топливных карт для различных режимов работы двигателя.

Делали такое сканирование. Но шина у нас была не RS485, а некое подобие LIN. Задача стояла быстро раздать адреса кучке устройств и поддержка их горячей замены. У каждого устройства был свой серийный номер. Он же служил и в качестве MAC адреса на этапе сканирования. Сами же рабочие адреса были размером в один байт. Команды делились на широковещательные и адресованные. Из широковещательных были команды сброса адресов, запрос на наличие неадресованных устройств, запрос с маской серийника (по сути, это запрос с номером интересующего бита в серийнике). Из адресованных только назначение адреса устройству. Протокол позволял назначить адрес устройству и без процедур поиска, при условии, что его серийник известен.

Скажем так, я не аудиофил, но разницу между 16/44.1 и 24/192 я чувствую. Даже при том, что я уже не слышу частоты выше 18к. Разница проявляется в том, что при более высоких параметрах (24/96 и выше) меньше шума и более чёткий звук на высоких частотах. Лично мне достаточно 24бит/96к. Выше уже разницы не улавливаю. А вот между FLAC и хорошим MP3 (320к) я разницы никакой не слышу.

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

Ну и как бы люди бывают разные, одни помогают сообществу на альтруизме, другие думая в первую очередь о себе - ведь исправив проблему и поделившись исправлением с сообществом, с этой проблемой сам больше не столкнешься через пару лет, скачав условный KiCAD на свежеустановленную ОС.

А зачем конвертировать программатор? Я штатным ST-Link без какой либо переделки и перепрошивки читал и шил китайский камень HC32L110C6PA. Для этого я собирал openocd с нужным патчем, потом ставил pyocd. Все прекрасно работало.

Если параноики сжигали вышки 5G по надуманным причинам, то сжигать вышки 6G будут по вполне реальным. 🤣

Техдокументацию и исходники дают только разработчикам и производителям конечных устройств, перед этим подписав NDA. Так все делают и Mediatek в том числе. Часто можно встретить утекшие даташиты, на страницах которых написано "confidential".

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

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

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

Новости о растущем рубле не соответствуют духу Хабра, а вот о падабщем рубле вполне соответствуют.

Ох и заминусуют меня сейчас, но мне по барабану.

Так вроде младшие процессоры уже года два как в Зеленограде производят. Проблема только с более производительными, типа 8с. Но банкомату хватит и слабого варианта. Или я не прав?

Полезная статья. Сам иногда увлекаюсь FPGA.

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

Потому тут все просто: Не важно, сколько ешь и когда ешь. Важно - что ты ешь.

Хорошая библиотека. Но я ее модифицировал, приделав к ней мультиинстанс. То есть, в моей версии можно запустить несколько независимых консолей на разных интерфейсах. Было нужно, так как доступ к консоли предполагался с Ethernet и UART.

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

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

То есть, имеем три устройства со следующими серийниками (пусть серийники будут 4-битными для упрощения)

А - 0110

В - 1001

С - 1111

На запрос 3 бита ответят устройства В и С, а устройство А, услышав этот ответ, замолкает до следующего пакета "есть ли кто неадресованный?"

На запрос второго бита ответит устройство С, а устройство В замолкнет.

На запрос первого и нулевого битов ответит только устройство С.

Таким образом у мастера получится серийник устройства С. Он назначит ему адрес и оно перестанет участвовать в сканировании.

При очередном запросе неадресованных устройств, устройства А и В выйдут из режима молчания.

На запрос 3 бита ответит устройство В, а устройство А, услышав ответ В, замолкнет.

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

При последующих итерациях отвечать будет только устройство А.

Идея эта была не нова и честно была украдена у протокола 1-Wire

Верно. Ибо ко многим этим знаниям человечество шло тысячи лет.

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

  1. Запрос неадресованных устройств на шине. Если таковые были, отвечали нулём на шине. Мастер, обнаружив ноль, приступал к следующему этапу. А иначе, просто повторял запрос и обслуживал уже адресованные устройства.

  2. Запрос в стиле "есть у кого в серийнике 31й бит, равный единице?". Если у кого-то есть, тот отвечает нулём. Мастер, поймав ответ, записывает у себя единицу в 31й бит. А если ответ так и не поступил, пишет ноль в 31й бит. После этого он посылает следующий запрос, но спрашивает уже за 30й бит и так далее, до нулевого. В итоге, у него получается серийник одного из устройств.

  3. Мастер отправляет этому устройству пакет с коротким адресом, используя его серийник. Устройство получив короткий адрес, прекращает отвечать на запросы битов серийника и на запрос недресованных устройств и переходит в рабочий режим. После чего, мастер начинает обслуживание этого устройства и переходит в пункт 1. Такой цикл повторяется всякий раз, когда имеется ответ на пакет из первого пункта.

    Периодически, мастер интересуется на предмет появления новых устройств на шине, посылая запрос на наличие неадресованных устройств.

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

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

Я собирал U-Boot два раза. Первый раз под микроконтроллер, второй раз под свою плату с целью исправления бага с управлением питания. Патч отдал сообществу Armbian и они внесли его в официальный конфиг, так как с этой проблемой сталкивались многие. Вроде ни с чем сложным не столкнулся. Оба раза собралось без каких-либо танцев с бубном.

1
23 ...

Информация

В рейтинге
5 091-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность