日常机器如何编程?

如何编程日常机器(不是像电器,数字手表等那么多的电脑和移动设备)? 什么样的代码进入可口可乐自动售货机的编程? 我的咖啡机如何接受预定的时间,并在几小时后开始酝酿一壶咖啡?

这些机器是否有操作系统,还是更基础? 他们是用汇编,C还是其他语言编写的?

而且,我真的很想find一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可以使用源代码。 如果有人知道这样的资源(search什么都没有给我),那将是太棒了。

你所谈论的大部分内容都是基于embedded式的系统,其中C通常是不可用的奢侈品。 他们没有传统意义上的软件。 大多数情况下,软件是用C语言,汇编语言甚至机器代码编写的。 C和ASM需要编写编译器来将它们用于该平台。 机器代码被编写为二进制W / O编译器。

你的咖啡壶和最简单的系统不包含操作系统。 他们只需从内存中的起始地址加载,然后将代码放在那里。 通常这些系统将其“代码”烧录到EEPROM中,作为系统的硬盘驱动器。 烧完棱柱之后拧上代码, 丢掉芯片,重新烧录芯片上的代码,然后重新开始。 更高端的器件使用更新的芯片来进行testing,部署等更容易,但它们是相同的东西。

如果幸运的话,可口可乐机器,路由器等通常使用实时操作系统,如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位内核,他们很less有操作系统。 程序员编写代码来初始化板载外设并实现中断处理程序。 使用的语言是程序集和C.艰难的debugging工作需要一个在线仿真器。

除此之外还有很多的发展空间,32位embedded式内核(ARM是100英镑的大猩猩)可以启动Linux和/或Java JVM的embedded式版本。

这些是embedded式系统 ,可以使用C语言或汇编语言等非常低级的语言进行编程。 一般来说,这样的系统在没有操作系统的情况下运行,尽pipe一些更新的“日常机器”如蓝光DVD播放器和无线路由器确实在基于unix的操作系统之上运行他们的代码。


更新

按照别人的说法,许多现代化的embedded式系统也运行着一种窗口风格。 这取决于应用程序。 另外,在一个function更强大的操作系统平台上运行,处理诸如需要运行Java的蓝光播放器以及最终用户需要更多function的情况下,许多空间都有一个趋势。

让我们来想一下桌面上的处理器。 它所做的只是运行机器指令,本身并不是真正关心“操作系统”或“程序”。

您打开电脑,处理器指向第一条指令,并开始执行。

在桌面上,它开始执行“操作系统”。 但是没有理由让处理器不能执行你select的任何指令。 (这可能不是非常有用,因为您仍然希望将结果输出到屏幕上,并且该function驻留在OS中)。同时,如果您的机器指令包含正确的操作码,以便处理器输出在显示器上绘制图像的正确信号序列更好。 没有OS需要。

台式机做了很多事情 ,我们通常需要抽象操作系统。 但是在其核心上,所有的处理器都是执行指令。

可乐机和咖啡机的处理器也一样。 它所做的只是执行指令。

那么,一点一滴地写机器指令是很乏味的。 所以,就像桌面一样,我们通常用C语言编写代码,然后编译成机器代码。 该机器代码被加载到embedded式处理器上并运行。

embedded式系统的function很less ,不需要全function的操作系统。 微控制器可能在芯片上有8个或16个引脚 – 与常规CPU插槽中的引脚数相比。

所以工作stream是编写一些代码(比如用C语言),在桌面机上编译。 该编译器为embedded式芯片生成机器码。 然后,代码被加载到微处理器上(并且您需要特殊的硬件来完成这个操作)。然后,您给芯片上电并开始执行指令。 简单!

许多执行特定function的设备不包含任何“代码”。 他们通过电子元件的特性来执行其function。 更先进的系统可以执行许多不同的function,或者需要易于升级,将包含一个微控制器和某种“操作系统”。 由于这些function仍然有一些限制,所以操作系统将变得简单和特别devise。 获得更高级的设备将包含类似于计算机的东西。 它将有一个更复杂的操作系统,可以与系统的不同部分进行通信。 最后,您还可以访问智能手机等设备,这些设备包含一个完整的操作系统,可以运行用户级别代码,并且具有比简单设备更多的用户input。 但是,即使是现代处理器本质上也是非常大的电路。 CPU识别的每条指令都将使用不同的电路来执行该function。

以下是您可能感兴趣的维基百科页面:

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,命名一些最常用的),很less有一个操作系统,如果有任何,它将是某种RTOS,如FreeRTOS 。

更复杂的机器,如DVD / BluRay播放器或移动电话,可以在OMAP4等高端平台上运行。 通常一个Unix操作系统运行在它们上面

在日常设备中发现的低端微控制器通常不运行操作系统。 它们的select成本低廉,推动这一成本的主要因素是芯片上的引脚数量(从十几个到几百个)以及内部存储器的数量(从几千字节到几兆字节ROM,从几个字节到百千字节的RAM)。

由于蠕变function的作用,它确实发生微波可能需要多任务。 在这种情况下,程序员回顾他们的操作系统课程并根据需要实现消息传递,任务调度,asynchronousI / O等等。

当然,为了方便,简单,代码大小等等,特征往往是以基本的方式完成的。 通常,这取决于如何分析程序,以便在任务特定的代码中find广义的OSfunction。 但是从硬编码的任务调度程序到操作系统还有很长的路要走,而当你只有几千字节的时候,一个现成的操作系统并不是解决scheme。

看看stream行的电子配件select网站DigiKey,了解低端MCU。 这里是他们的信息在一个非常便宜的MCU与LCD控制器,如可能在咖啡机中find。 编程手册和一切都很简单。

操作系统的任务是提供对资源的共享访问 – CPU执行时间,RAM,I / O等。大多数简单的基于微控制器的embedded式系统一次只运行一个程序,他们自己访问(和pipe理)这些资源,因此他们不需要操作系统。

embedded式系统通常使用C语言进行编程,有时在进行极端时序或内存优化时进行汇编。 一些embedded式编译器允许你在更高级别的语言中散布程序集。

我最近遇到一台运行Ubuntu的卷烟自动售货机(机器重新启动,所以我可以看到这个标志)。

看看embedded式系统杂志和电路酒窖

如果你正在search一般的信息,寻找像“embedded式系统”,“soc”(片上系统)的东西。 我会说这些types的设备的很大一部分是以低级语言运行的,例如C

有趣的事实:Java最初被设想为embedded式系统编程的解决scheme: http : //en.wikipedia.org/wiki/Oak_( programming_language)

大多数自助服务terminal,登记机构,直通式屏幕,甚至是高端的咖啡机和微波炉,实际上都运行Windows XP或Linux,如“Jura Impressa”系列机器; 你可以通过SSH进入并冲泡咖啡。

这是一个咖啡机cron作业的github脚本: https : //github.com/NARKOZ/hacker-scripts/blob/master/fucking_coffee.rb

大多数路由器,新型烤箱,新型冰箱,汽车,DVD播放器,各种电子产品,包括灯泡在内的新型家庭自动化产品都运行ARM Linux或embedded式Linux。

大多数便宜的设备价格低于20美元(如果它们较新的话)可以在ESP8266或类似的设备上运行(可以运行LUA或者减价的节点服务器,价格为2美元 – 非常便宜)

http://nodemcu.com/index_en.html

使用FPGA和像8051这样的embedded式系统,Z80或PICC,AVR和Arduino等其他embedded式设备将很快被ESP8266等一体化SoC(系统级芯片)系统所取代。 它们编程简单,而且是一个运行自己的Web服务器的完整的芯片系统; 你只需要启动它们,上传你的源代码,你有一个2美元的networking服务器。

我长大的时候编写PICC,AVR和8051,我很伤心地看到他们走了,但是除了ESP8266es以外,我没有碰过任何东西,因为它们价格只有十分之一,而且在一定程度上更容易处理。 你可以把它们放在带电池的开发板上,ebay的售价为5美元,adafruit的售价为10美元。

我从一位工程师那里听说,西门子轻轨通勤列车运行在386s上。