Как программируются бытовые машины? - PullRequest
145 голосов
/ 11 апреля 2011

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

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

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

Ответы [ 13 ]

46 голосов
/ 11 апреля 2011

Большая часть того, о чем вы говорите, - это встроенные системы, где 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

29 голосов
/ 11 апреля 2011

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

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

24 голосов
/ 11 апреля 2011

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

Обновление

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

18 голосов
/ 11 апреля 2011

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

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

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

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

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

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

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

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

12 голосов
/ 11 апреля 2011

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

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

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

7 голосов
/ 12 апреля 2011

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

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

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

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

7 голосов
/ 11 апреля 2011

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

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

5 голосов
/ 11 апреля 2011

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

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

4 голосов
/ 24 апреля 2011

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

2 голосов
/ 11 апреля 2011

Взгляните на журнал Embedded Systems Magazine и Цепной погреб

...