Клиенти от automotive и индустрията се доверяват на моя embedded опит от основаването на SCHMITT CONSULTING. Два проекта илюстрират моя начин на работа.
Като независим embedded консултант разработвам за клиенти, които се нуждаят от софтуер близък до хардуера, поведение в реално време или комбинация от двете.
Поради съображения за поверителност не всички проекти могат да бъдат представени публично. Следващите два примера описват проекти, чиито ключови данни мога да назова.
За Stihl във Waiblingen разработих изцяло наново софтуера за управление на двигател на верижен трион. Изходна точка беше аналитична задача: съществуващият управляващ софтуер идваше от японски доставчик и беше написан на асемблер. Stihl искаше да разбере подробно какво прави този софтуер. Анализирах асемблерния код и документирах функциите така, че разработчиците на Stihl можеха да следят логиката напълно.
На тази основа получих поръчката за ново разработване — този път на C, с цел да доставя повече функционалност от оригиналния софтуер. Граничните условия бяха строги: пазарът на верижни триони е изключително ценово конкурентен, така че разполагах само с много малък, евтин микроконтролер. Паметта беше толкова ограничена, че операционна система в реално време беше изключена. Софтуерът трябваше да работи bare-metal и едновременно паралелно надеждно да обработва realtime сигнали от хардуера.
През цялата разработка имах на масата си само платка с хардуера и моя код — без тестова среда, без двигател. Първият практически тест се проведе на тестовия стенд на Stihl във Waiblingen. След месеци анализ и разработка не би било необичайно двигателят да не запали веднага. Запали веднага и принципно работеше добре. Останалото беше фина настройка на точките на запалване, итеративно оптимизирани на тестовия стенд — процедура, която иначе се покрива от адаптивен учещ софтуер, но тук поради съображения за памет трябваше да се извърши ръчно.
В крайна сметка доставих на Stihl управляващ софтуер, който правеше повече от предишната японска версия, работеше на същия евтин микроконтролер и беше предаден с пълна документация. Търговската рамка си струва да се спомене: при заключителните преговори в отдела за доставки на Stihl предварително договорената цена не беше намалена. Купувачът само ясно каза, че всеки евро трябва да бъде обоснован — но намаляването на цената не беше цел. Този опит — клиент, който плаща обосновани цени за обосновано качество — е рядък на пазара и до днес оформя моето разбиране за добро сътрудничество.
Проектът беше уреден като договор с фиксирана цена. Разработката се проведе изцяло извън помещенията на Stihl; съгласуването с лицето за контакт на Stihl се случваше само при основни решения.
За Audi в Ingolstadt оригиналната ми поръчка беше създаване на софтуер за симулация на MOST шина за infotainment системата — realtime симулация, която позволяваше тестване на управляващи единици срещу виртуална MOST шина.
На място се оказа, че Audi паралелно имаше втори проблем: съществуваща CAN симулационна платка, доставена от външен доставчик, не работеше надеждно при определени работни условия — просто спираше да изпраща данни в решаващи моменти. Тъй като моята MOST работа ми беше дала подробни знания за взаимодействието на CAN и MOST шината, лицето за контакт от Audi ме попита дали мога да изградя тази CAN симулация наново самостоятелно.
Съгласих се с уговорката, че първата стъпка ще бъде функционален прототип — не красив, но функционален. За по-малко от пет работни дни на масата лежеше разработена от мен електронна платка с ATmega128, придружена от написан от мен симулационен софтуер. Прототипът беше ръчно споен, но работеше — дори при работни условия, при които платката на предишния доставчик отказваше.
Audi след това попита дали мога да произвеждам и доставям бройки — но в индустриално качество, изцяло машинно произведени, не ръчно. Проектирах разположението за серийна платка и работих с PCB производител от средата на Audi, който се погрижи за машинното производство. След като инцидент при машинното тестване на производителя беше разрешен, платката доставяше надеждни резултати — точно там, където оригиналната платка на доставчика отказваше.
Този проект показва случай, в който поръчката нарасна чрез конкретна техническа субстанция: към оригиналната софтуерна задача се добави собствено хардуерно разработване със серийно производство — защото познавах архитектурата на шината достатъчно дълбоко, за да предложа при поискване функционален път на решение.
Освен подробно описаните проекти съм работил за други клиенти в automotive, индустрията и медицината. По-конкретни референции за задачи, сравними с вашата среда, обсъждам с удоволствие в встъпителен разговор — под поверителност, ако желаете.
Три характеристики се прокарват през двата проекта и през по-голямата част от моята дейност: