Как программируются бытовые машины (не столько компьютеры и мобильные устройства, сколько бытовые приборы, цифровые часы и т. Д.)? Какой код входит в программирование торгового автомата Coca-Cola? Как моя кофеварка принимает запрограммированное время и начинает варить чашку кофе через несколько часов, когда наступает это время?
Есть ли в машинах такого типа операционные системы или что-то еще более простое? Они написаны на ассемблере, C или другом языке?
И я действительно хотел бы найти какой-нибудь ресурс, в котором перечислены эти операционные системы или системы кода, возможно, даже с исходным кодом, если это возможно. Если кто-нибудь знает о таком ресурсе (поиск ничего не дал для меня), это было бы фантастически.
c
operating-system
microcontroller
embedded
assembly
Josh Leitzel
источник
источник
Ответы:
Большая часть того, о чем вы говорите, это встроенные системы, где 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
источник
Они используют микроконтроллеры, 8051 является классическим. Это 8-битные или 16-битные ядра, они редко имеют операционную систему. Программист пишет код для инициализации встроенных периферийных устройств и реализации обработчиков прерываний. Используются языки сборки и C. Для сложных задач отладки требуется встроенный эмулятор.
Помимо этого, существует все больше возможностей с 32-разрядными встроенными ядрами (ARM - 100-фунтовая горилла), которые загружают встроенную версию Linux и / или Java JVM.
источник
Это встроенные системы , и они будут запрограммированы с использованием языка очень низкого уровня, такого как C или ассемблер. В целом, такая система будет работать без операционной системы, хотя некоторые новые «бытовые машины», такие как Blu-Ray DVD-плееры и беспроводные маршрутизаторы, выполняют свой код поверх операционной системы на основе Unix.
Обновить
Наряду с тем, что говорили другие, многие современные встраиваемые системы также имеют вид окон. Это зависит от приложения. Кроме того, во многих пространствах существует тенденция работать на более мощной платформе с операционной системой, чтобы обрабатывать такие случаи, как проигрыватели Blue-ray, необходимые для запуска Java, и другие случаи, когда конечный пользователь желает большей функциональности.
источник
Давайте подумаем о процессоре на вашем рабочем столе. Все, что он делает - это запускает машинные инструкции и сам по себе не заботится об «операционных системах» или «программах».
Вы включаете компьютер, процессор указывает на первую инструкцию, и она начинает выполняться.
На вашем рабочем столе запускается «операционная система». Но нет никаких причин, по которым процессор не может выполнить любой выбранный вами набор команд. (Это может быть не очень полезно, так как вы все равно хотите выводить результаты на экран, и эта функциональность находится в ОС.) В то же время, если ваши машинные инструкции состоят из правильных кодов операций, чтобы процессор выводил правильная последовательность сигналов для рисования картинки на мониторе, тем лучше. ОС не нужна.
Настольные компьютеры делают столько всего, что нам обычно требуется абстракция ОС. Но по своей сути все процессор выполняет инструкции.
То же самое для процессора в кока-колы и кофемашины. Все, что он делает, это выполняет инструкции.
Ну, писать машинные инструкции по крупицам утомительно. Итак, как и в случае с рабочим столом, мы обычно пишем код на C, который затем компилируется в машинный код. Этот машинный код загружается на встроенный процессор и работает.
Встроенные системы делают так мало, что им не нужны полноценные ОС. Микроконтроллер может иметь 8 или 16 контактов на чипе - по сравнению с множеством контактов в вашем обычном сокете процессора.
Таким образом, рабочий процесс - написать некоторый код (скажем, на C), скомпилировать его на своем компьютере. Этот компилятор генерирует машинный код для встроенного чипа. Затем этот код загружается в микропроцессор (а для этого вам нужно специальное оборудование). Затем вы включаете микросхему, и она начинает выполнять инструкции. Просто!
источник
Многие устройства, которые выполняют определенную функцию, не содержат никакого «кода». Они выполняют свои функции через свойства своих электронных компонентов. Более продвинутые системы, которые могут выполнять множество различных функций или должны легко обновляться, будут содержать микроконтроллер и своего рода «операционную систему». Поскольку у них все еще есть некоторые ограничения в их функциональности, операционная система будет простой и специально разработанной. Становясь еще более продвинутым, устройство будет содержать что-то похожее на компьютер. Он будет иметь более сложную операционную систему, которая может взаимодействовать с различными частями системы. Наконец, вы получаете доступ к устройствам, таким как смартфоны, которые содержат полноценную операционную систему, которая может выполнять код уровня пользователя и иметь гораздо больший пользовательский ввод, чем более простые устройства. Тем не мение, даже современные процессоры представляют собой очень большие электрические цепи. Каждая команда, которую распознает ЦП, будет вызывать использование другой схемы для выполнения этой функции.
Вот некоторые страницы Википедии, которые могут вас заинтересовать:
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
источник
Это очень широкий вопрос, и он сильно зависит от машины. Я могу только догадываться, что большинство этих торговых автоматов управляются микроконтроллерами (8051, PIC, ARM7, если назвать некоторые из наиболее часто используемых) и редко имеют операционную систему, и если она есть, это будет какая-то ОСРВ, такая как FreeRTOS .
Более сложные машины, такие как DVD / BluRay плееры или мобильные телефоны, работают на более сложных платформах, таких как OMAP4 . Обычно на них работает ОС Unix.
источник
Низкоуровневые микроконтроллеры, встречающиеся в бытовых приборах, обычно не работают под управлением операционной системы. Они выбираются из-за низкой стоимости, и основными факторами, влияющими на эту стоимость, являются количество выводов на чипе (от десятка до пары сотен) и объем памяти внутри (от пары килобайт до мегабайта ПЗУ, от нескольких байтов до ста килобайт оперативной памяти).
Поскольку функция Creep работает как волшебство, может случиться так, что микроволновая печь может потребовать многозадачности. В этом случае программист вспоминает курс своих операционных систем и при необходимости реализует передачу сообщений, планирование задач, асинхронный ввод-вывод и т. Д.!
Конечно, ради целесообразности, простоты, размера кода и т. Д. Функции, как правило, выполняются элементарно. Часто это зависит от того, как вы анализируете программу, чтобы найти обобщенную функциональность ОС в специфичном для задачи коде. Но от жестко запрограммированного планировщика задач до операционной системы еще далеко, и когда у вас есть всего несколько килобайт для работы, готовая ОС не является решением.
Взгляните на DigiKey, популярный сайт электронного выбора запчастей, чтобы узнать о недорогих микроконтроллерах. Вот их информация об очень дешевом микроконтроллере с ЖК-контроллером, который можно найти в кофемашине. Достаточно легко получить руководство по программированию и все.
источник
Задача операционной системы заключается в предоставлении общего доступа к ресурсам - времени выполнения процессора, оперативной памяти, вводу-выводу и т. Д. В большинстве простых встроенных систем на основе микроконтроллеров одновременно работает только одна программа, и они сами получают доступ к этим ресурсам и управляют ими. следовательно, им не нужна операционная система.
Встраиваемые системы обычно программируются на C, а иногда в сборке для экстремальной синхронизации или оптимизации памяти. Некоторые встроенные компиляторы позволяют вам разбирать сборки на языке более высокого уровня.
источник
Недавно я столкнулся с автоматом по продаже сигарет, на котором работала Ubuntu (машина перезагружалась, поэтому я мог видеть логотип).
источник
Взгляните на журнал Embedded Systems Magazine и электронный погреб
источник
Если вы ищете общую информацию, ищите такие вещи, как «встроенные системы», «soc» (система на кристалле). Я бы сказал, что большая часть этих типов устройств работает на языках низкого уровня, таких как C.
Интересный факт: Java изначально задумывался как решение для программирования встраиваемых систем: http://en.wikipedia.org/wiki/Oak_(programming_language )
источник
Большинство киосков, регистров, экранов проезда и даже высококлассных кофемашин и микроволновых печей на самом деле работают под управлением 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.
источник
Я слышал от инженера, что пригородные поезда Siemens ходят на 386-м.
источник