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

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

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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


<Б > Обновление

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

Ответ 4

Подумайте о процессоре на рабочем столе. Все, что он делает, это запустить машинные инструкции, и само по себе не очень беспокоит "операционные системы" или "программы".

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

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

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

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

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

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

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 11

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

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

Ответ 12

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

Здесь github script работы кофейной машины 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 (System on Chip), такими как ESP8266. Они просто слишком просты в программировании и представляют собой полную систему на чипе, на котором запущен собственный веб-сервер; вы просто активируете их, загрузите исходный код и у вас есть сетевой сервер за $2.

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

Ответ 13

Я слышал от инженера, что пригородные поезда Siemens Light-Rail работают на 386s.