Один день из жизни программиста микроконтроллеров (или бег с препятствиями)

в 23:09, , рубрики: CAN, usb-can, один день из нашей жизни
Один день из жизни программиста микроконтроллеров (или бег с препятствиями) - 1

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

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

Вот я получил плату, портировал драйвер и решил проверить заработал ли код настройки CAN драйвера. Я соединил один CAN0 и CAN1. Стал посылать пакеты и пакеты не принимаются.

И тут я задумался. Происходит одно из двух: либо передатчик не посылает либо приёмник не принимает. Классическая дилемма. Разруливается при помощи независимого достоверно работающего CAN-устройства. Обычно это переходники с USB на CAN.

Много лет назад я купил себе один китайский переходник USB-CAN . Чувствовал, что пригодится. Вот и настал этот день. Принес я его, значит, на работу. Стал искать драйвера и с удивлением для себя обнаружил, что компания Google забанила диск компании компании производителя переходника . И теперь не скачать драйвера и софт для USB-CAN переходника . Я написал письмо в тех поддержку в КНР. Тишина... Это препона #1. Я еще тщетно полтора часа искал драйвер USB-CAN на сторонних сайтах, но их больше нигде нет. Очевидно, что нужен какой-то альтернативный переходник с USB на CAN.

Я обратился к своему босу и сказал, что для работы, как ни крути, нужен какой-нибудь переходник с USB на CAN. Тот час же я узнал, что много лет назад эта компания разработала свою версию переходника USB-CAN (custom work). И мне тут же вручили этот переходник. Хорошее начало дня. Жизнь налаживается...

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

Тем временем я понял, что в любом случае надо соединить переходник и LapTop. Тут я понял, что у меня нет кабеля USB-A на USB-B. Вернее есть, но он уже занял для электропитания самой электронной платы. Много ли из вас заряжают мобильный телефон кабелем с разъемам USB-B? Это препятствие #3. Я подошел к офисному принтеру и временно отключил его чтобы забрать до завтрашнего дня кабель USB-B. Фуф 3-я проблема решилась сама собой.

Один день из жизни программиста микроконтроллеров (или бег с препятствиями) - 2

Подключив изделие к PC, открыв диспетчер задач я увидел, что Windows 10 ожидаемо видит прибор, как неизвестное устройство. К этому моменту возвращается Тед. Он увидел мое сообщение и прибыл сразу ко мне. Он любезно принес мне harness, скинул ссылку на дистрибутив с драйвером. Я поставил драйвер. Windows стала видеть, что появилось устройство. Я тут же накалил клиентскую утилиту для управления этим прибором. Затем я посмотрел на harness. Это был клубок ниток. Гордиев узел. Распутать harness оказалось 4-е испытание. Я стал его распутывать. Это заняло примерно 15-20 минут. Я соединил два порта этого переходника в режиме LoopBack, чтобы проверить, проходят ли пакеты.

В этот момент я обнаруживаю, что беспроводная мышка полностью разрядилась. Это препона №5. Курсор примерз к монитору. Дело в том, что клиентская утилита для управления CAN включается и настраивается именно курсором мышки. Я начинаю ходить по рядам и спрашивать у кого в тумбочке есть запасная мышка. Мне вручают очередную беспроводную мышку.

Возвращаюсь к CAN loop back. Cигнал не проходит. Я зову Теда. Он говорит, что вот у него на столе всё работает. Он сгонял и принес свой экземпляр переходника USB-CAN. Мы положили их рядом и стали искать 10 отличий. Через 5-10 минут увидели только одно отличие. На его переходнике были какие-то черные квадратики (джамперы). Они как раз подключали терминирующие резисторы 120 ом. На моем переходнике не было этих джамперов. Теперь всё понятно. Джамперы - наше всё

При этом чтобы примонтировать джамперы надо было демонтировать прозрачную крышку от саркофага корпуса этого электронного прибора. Крышка крепилась на 4х винтах по периметру с крестовым шлицем. Запомните. Если вы хороший программист микроконтроллеров, то вы должны каждый день носить с тобой набор отвёрток с разнообразными шлицами. Я их именно в этот день и забыл с собой взять. Поэтому я переключился в режим поиска отвертки. Зашел в паялку и чудом обнаружил на столе в россыпи того, что называется словом miscellaneous отвёртку. Не зря же мне на день рождения всегда желали удачи. Вот она удача возвращается сторицей. Нашлась нужная отвертка.

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

Настало время соединить собственно отладочную плату и переходник USB-CAN. И снова облом... Оказывается, что мне совершенно не известна распиновка многопинового разъёма на переходнике. Университетская комбинаторика подсказывает, что можно подключить два провода 72мя способами и только один способ окажется правильным. Вероятность ошибиться - 98%. Я снова иду к Теду и прошу распиновку. Тед говорит, что ему, внезапно, это тоже не известно. Он всегда пристегивал разьем harnessa и даже не задумывался про распиновку основного разъема. Даже мысль такая не возникала никогда. Я ему пояснил, что у меня на столе отладочная электронная плата. И на ней нет никакого стандартно разъёма. Там просто под CAN торчат вилочные штыри PLD. Тут Тэд только рекомендовал обратится к схемотехнику этого изделия- Говарду. Мы подходим к столу Говарда и он, внезапно, тоже отсутствует. Пишу ему сообщение и вечером он присылает мне скриншот кусочка схемотехники основного разъёма. Цепь замкнулась. Это победа!

Итак, сводка за день. Что пошло не по плану:

вызов

1

Не скачать официальный драйвер на прибор USB-CAN

2

нехватка USB портов на USB-Hub-e

3

нет кабеля USB-B

4

тотально запутанный жгут

5

разрядилась беспроводная мышка

6

не оказалось под рукой отвертки

7

нет джамперов

8

загадочная распиновка основного разъёма

9

поиск нужных коллег

10

поиск осциллографа

11

поиск крючков для электродов осциллографа

12

поиск свободной розетки для подключения осциллографа

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

Итог

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

При этом Вы должны быть ещё и детективом. Документация, знания и экспертиза порой размазаны по всей организации и надо опросить 2-3 свидетеля, чтобы выполнять тривиальные задачи. Занимаясь вот такой мелкой работой можно за весь день не написать ни одной строчки кода и в разработке на МК это более чем нормальное явление.

Не здорово пренебрегать документацией и инструкциями. Будь инструкция всё можно было бы сделать полностью автономно.

Что может пойти не так? Да всё что угодно может пойти не так.

Автор: karenic

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js