Как программируются бытовые машины?


147

Как программируются бытовые машины (не столько компьютеры и мобильные устройства, сколько бытовые приборы, цифровые часы и т. Д.)? Какой код входит в программирование торгового автомата Coca-Cola? Как моя кофеварка принимает запрограммированное время и начинает варить чашку кофе через несколько часов, когда наступает это время?

Есть ли в машинах такого типа операционные системы или что-то еще более простое? Они написаны на ассемблере, C или другом языке?

И я действительно хотел бы найти какой-нибудь ресурс, в котором перечислены эти операционные системы или системы кода, возможно, даже с исходным кодом, если это возможно. Если кто-нибудь знает о таком ресурсе (поиск ничего не дал для меня), это было бы фантастически.


12
Фантастический вопрос! Я сам удивлялся тому же самому.
Джонатан Стерлинг

7
Проведите поиск / исследование "встроенных систем" (я даже добавил тег для вас).
мю слишком коротка

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

Это очень широкий вопрос, который охватывает, по крайней мере, 3 инженерные дисциплины и множество промежуточных оттенков.
Джодрелл

FWIW, вам может быть интересно поиграть с платформой микроконтроллера, такой как Arduino (~ $ 30) arduino.cc .
Steamer25

Ответы:


47

Большая часть того, о чем вы говорите, это встроенные системы, где C - это роскошь, часто недоступная. У них нет программного обеспечения в традиционном смысле. Большую часть времени программное обеспечение написано на C, ассемблере или даже машинном коде. C и ASM требуют написания компиляторов, чтобы использовать их для этой платформы. Машинный код написан как двоичный без компилятора.

Ваш кофейник и самые простые подобные системы не имеют операционной системы. Они просто загружаются с начального адреса в память, и вы помещаете туда свой код. Часто эти системы записывают свой «код» в EEPROMS, которые действуют как жесткий диск системы. Завинтите код после прожига выпускного вечера, выбросьте фишки, верните код на чип и начните все сначала. Существуют более новые чипы FPGA, которые используют устройства более высокого класса для упрощения тестирования, развертывания и т. Д., Но это одно и то же.

Если вам повезет, машины Coca-Cola, маршрутизаторы и т. Д. Обычно используют ОС реального времени, такие как QNX, EMBOS или иногда RTlinux. Большинство из них являются проприетарными ОС, которые вы лицензируете за большие деньги, но у них есть компиляторы C, драйверы для работы с оборудованием и т. Д.

http://www.qnx.com/

http://www.segger.com/cms/embos.html

http://www.microsoft.com/windowsembedded/en-us/campaigns/compact7/default.aspx?WT.srch=1&WT.mc_ID=SEARCH

RTLinux


35
Люди кодируют в двоичном коде? Ассемблеры настолько глупы, чтобы писать, и мне трудно в это поверить. У вас есть источник для этого? Кроме того, этот ответ создает ложное впечатление, что все системы содержат микропроцессор, который выполняет код. Хотя это становится все более популярным, поскольку микроконтроллеры и EEPROM (которые облегчают отладку и обновление) становятся дешевле, это все же не стоит того, чтобы очень дешевые системы или системы, которые не сильно изменились за последние 20 лет. Например, некоторые цифровые часы.
BlueRaja - Дэнни Пфлугхофт

6
Это просто слишком сильно заявлено. Вам не нужно размещать компилятор на цели. Кросс-компиляторы очень распространены во встроенном программировании.
dmckee --- котенок экс-модератора

12
Коксовая машина под управлением QNX? WTF - это еще один вид кокса! И да, есть компилятор C для каждой платформы, которая в настоящее время поставляется в объеме. Никто не хочет писать ассемблер, отсутствие C будет огромным препятствием. (Некоторые компиляторы не очень хороши , предоставлено.)
Potatoswatter

8
Кроме того, EEPROM по определению может быть переписан более 100000 раз. Воспоминания однократной записи устарели; Все популярные микроконтроллеры сегодня имеют Flash. FPGA - это совершенно другой рынок, чем бюджетный MCU… вы не представляете, о чем говорите.
Potatoswatter

7
У меня есть друг, который работает на торговых автоматах, которые довольно сложны. Они имеют сотовые радиоприемники, контролируют инвентарь, отслеживают температуру, сообщают финансовые показатели и отправляют HTTP-вызовы обратно на серверы, чтобы объединить все эти данные, чтобы вы могли отслеживать на всех своих машинах. И да, машины этих марок используют встроенную ОС. Я думаю, что они используют RTLinux с использованием C. Так что да, даже слабый торговый автомат становится достаточно сложным, чтобы гарантировать встроенную ОС.
Chubbsondubs

29

Они используют микроконтроллеры, 8051 является классическим. Это 8-битные или 16-битные ядра, они редко имеют операционную систему. Программист пишет код для инициализации встроенных периферийных устройств и реализации обработчиков прерываний. Используются языки сборки и C. Для сложных задач отладки требуется встроенный эмулятор.

Помимо этого, существует все больше возможностей с 32-разрядными встроенными ядрами (ARM - 100-фунтовая горилла), которые загружают встроенную версию Linux и / или Java JVM.


5
Это довольно маленькая горилла, но я полагаю, что ограничения мощности довольно важны для встроенных великих обезьян;)
Писквор покинул здание

Спасибо! Ваш ответ был полезен для меня, и я дал вам голос.
Джош Лейцель

Чипы ARM также выходят на нижний уровень ... с ценой <1USD, занимаемая площадь 2x2 мм.
Домен

24

Это встроенные системы , и они будут запрограммированы с использованием языка очень низкого уровня, такого как C или ассемблер. В целом, такая система будет работать без операционной системы, хотя некоторые новые «бытовые машины», такие как Blu-Ray DVD-плееры и беспроводные маршрутизаторы, выполняют свой код поверх операционной системы на основе Unix.


Обновить

Наряду с тем, что говорили другие, многие современные встраиваемые системы также имеют вид окон. Это зависит от приложения. Кроме того, во многих пространствах существует тенденция работать на более мощной платформе с операционной системой, чтобы обрабатывать такие случаи, как проигрыватели Blue-ray, необходимые для запуска Java, и другие случаи, когда конечный пользователь желает большей функциональности.


Чтобы уточнить, Bluray использует Java.
Эндрю Маршалл

6
Возможно, но настоящие плееры работают на Linux и написаны на C / C ++
Джастин Этье

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

@ Джастин, ну да, конечно, для работы Java нужно что-то сидеть. Я хотел сказать, что он использует такой язык высокого уровня (сравнительно), как Java.
Эндрю Маршалл

@Andrew: А на какой операционной системе работает интерпретатор Java в Blue Ray? И на каком языке написана эта операционная система?
Гюнтер Пиз

18

Давайте подумаем о процессоре на вашем рабочем столе. Все, что он делает - это запускает машинные инструкции и сам по себе не заботится об «операционных системах» или «программах».

Вы включаете компьютер, процессор указывает на первую инструкцию, и она начинает выполняться.

На вашем рабочем столе запускается «операционная система». Но нет никаких причин, по которым процессор не может выполнить любой выбранный вами набор команд. (Это может быть не очень полезно, так как вы все равно хотите выводить результаты на экран, и эта функциональность находится в ОС.) В то же время, если ваши машинные инструкции состоят из правильных кодов операций, чтобы процессор выводил правильная последовательность сигналов для рисования картинки на мониторе, тем лучше. ОС не нужна.

Настольные компьютеры делают столько всего, что нам обычно требуется абстракция ОС. Но по своей сути все процессор выполняет инструкции.

То же самое для процессора в кока-колы и кофемашины. Все, что он делает, это выполняет инструкции.

Ну, писать машинные инструкции по крупицам утомительно. Итак, как и в случае с рабочим столом, мы обычно пишем код на C, который затем компилируется в машинный код. Этот машинный код загружается на встроенный процессор и работает.

Встроенные системы делают так мало, что им не нужны полноценные ОС. Микроконтроллер может иметь 8 или 16 контактов на чипе - по сравнению с множеством контактов в вашем обычном сокете процессора.

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


2
Спасибо вам большое! Если бы я мог выбрать другой лучший ответ, он был бы вашим. Я нахожу это очень полезным. +1
Джош Лейцель

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

12

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

Вот некоторые страницы Википедии, которые могут вас заинтересовать:

http://en.wikipedia.org/wiki/Electrical_engineering
http://en.wikipedia.org/wiki/Integrated_circuits
http://en.wikipedia.org/wiki/Electronic_engineering
http://en.wikipedia.org/wiki / Computer_engineering
http://en.wikipedia.org/wiki/Microcontroller


Это не верно. Основным фактором, влияющим на стоимость недорогих чипов, является упаковка с кремнием. По этой причине дешевле заменить дискретную логику микроконтроллером, как только вы доберетесь до пары дюжин шлюзов или около того… и дюжина вентилей мало что даст. MCU повсеместность повысила стоимость дискретных ворот, изменив баланс. Кроме того, большинство низкоуровневых микроконтроллеров не работают с какой-либо операционной системой.
Potatoswatter

7

Это очень широкий вопрос, и он сильно зависит от машины. Я могу только догадываться, что большинство этих торговых автоматов управляются микроконтроллерами (8051, PIC, ARM7, если назвать некоторые из наиболее часто используемых) и редко имеют операционную систему, и если она есть, это будет какая-то ОСРВ, такая как FreeRTOS .

Более сложные машины, такие как DVD / BluRay плееры или мобильные телефоны, работают на более сложных платформах, таких как OMAP4 . Обычно на них работает ОС Unix.


Спасибо за ваш ответ! +1
Джош Лейцель

7

Низкоуровневые микроконтроллеры, встречающиеся в бытовых приборах, обычно не работают под управлением операционной системы. Они выбираются из-за низкой стоимости, и основными факторами, влияющими на эту стоимость, являются количество выводов на чипе (от десятка до пары сотен) и объем памяти внутри (от пары килобайт до мегабайта ПЗУ, от нескольких байтов до ста килобайт оперативной памяти).

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

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

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


5

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

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


4

Недавно я столкнулся с автоматом по продаже сигарет, на котором работала Ubuntu (машина перезагружалась, поэтому я мог видеть логотип).



1

Если вы ищете общую информацию, ищите такие вещи, как «встроенные системы», «soc» (система на кристалле). Я бы сказал, что большая часть этих типов устройств работает на языках низкого уровня, таких как C.

Интересный факт: Java изначально задумывался как решение для программирования встраиваемых систем: http://en.wikipedia.org/wiki/Oak_(programming_language )


Спасибо, я обязательно буду исследовать это дальше! +1
Джош Лейцель

1

Большинство киосков, регистров, экранов проезда и даже высококлассных кофемашин и микроволновых печей на самом деле работают под управлением Windows XP или Linux, как машины серии «Jura Impressa»; Вы можете SSH в них и варить кофе.

Вот скрипт github задания cron для кофемашины: https://github.com/NARKOZ/hacker-scripts/blob/master/fucking_coffee.rb

Большинство маршрутизаторов, новые духовки, новые холодильники, автомобили, DVD-плееры, различная электроника, новые продукты домашней автоматизации, включая лампочки, используют версию ARM linux или встроенный Linux.

Самые дешевые устройства стоимостью менее 20 долл., Если они новее, работают на ESP8266 или аналогичном устройстве (могут работать LUA или сервер Node по сниженным ценам за 2 долл. - безумно дешево)

http://nodemcu.com/index_en.html

Использование FPGA и встроенных систем, таких как 8051, Z80 или других встроенных устройств, таких как PICC, AVR и Arduino, в скором времени будет заменено системами «все в одном» / SoC (система на чипе), такими как ESP8266. Их просто слишком легко программировать, и они представляют собой законченную систему на чипе, на которой установлен собственный веб-сервер; Вы просто включаете их, загружаете свой исходный код, и у вас есть сетевой сервер за 2 доллара.

Я вырос, кодируя PICC, AVR и 8051, и мне грустно видеть, как они идут, но я годами не трогал ничего, кроме ESP8266es, потому что они на 1/10 цены и с ними на порядок проще работать , Вы можете получить их на платах для разработки с батарейными блоками и разнесенными контактами за 5 долларов на ebay или 10 долларов на adafruit.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.