日常机器(不仅限于计算机和移动设备,还包括家用电器、数字手表等)如何进行编程?可口可乐自动售货机的编程中需要哪些代码?我的咖啡机如何接受预先编程的时间,在几个小时后开始冲一壶咖啡?
这些机器内部是否有操作系统,或者它们使用的是更基础的东西?它们是用汇编语言、C语言还是其他语言编写的?
我希望找到一些列出这些操作系统或基础代码系统的资源,如果可能的话,甚至可以提供源代码。如果有人知道这样的资源(我已经搜索过了,但没有找到),那将非常棒。
日常机器(不仅限于计算机和移动设备,还包括家用电器、数字手表等)如何进行编程?可口可乐自动售货机的编程中需要哪些代码?我的咖啡机如何接受预先编程的时间,在几个小时后开始冲一壶咖啡?
这些机器内部是否有操作系统,或者它们使用的是更基础的东西?它们是用汇编语言、C语言还是其他语言编写的?
我希望找到一些列出这些操作系统或基础代码系统的资源,如果可能的话,甚至可以提供源代码。如果有人知道这样的资源(我已经搜索过了,但没有找到),那将非常棒。
大多数时间软件是用C或汇编语言编写的。C需要为该平台编写编译器(如果它不能很好地进行优化,则可能产生臃肿或低效的汇编代码),但简单的汇编只需将文本逐行转换为机器代码即可,并且易于编写。(如果供应商希望任何人购买他们的微控制器,他们将确保至少存在一个汇编程序使得开发具有吸引力,通常也包括C编译器,尽管有时不进行优化。)
您的咖啡壶和大多数类似的简单系统都没有操作系统。它们只是从内存中的起始地址加载,并在那里放置您的代码。通常,这些系统的“代码”被烧录到EEPROMS中,作为系统的硬盘驱动器。或者根据EEPROM / flash的类型,代码可以直接从flash中运行,而无需首先加载到RAM中。(设备可能无法写入其自己的闪存;这是通过外部工具完成的。编辑/编译/运行周期可能包括重新编程实际硬件的闪存,如果不在模拟器中进行测试。)
可口可乐机、路由器等通常使用实时操作系统,如QNX、EMBOS或有时是RTlinux(如果你很幸运)。这些大多是专有的操作系统,您需要支付大量的费用来获得许可,但它们具有C编译器、与硬件配合工作的驱动程序等。
http://www.segger.com/cms/embos.html
RTLinux
他们使用微控制器,其中经典型号为8051。这些核心为8位或16位,很少有操作系统。程序员编写代码来初始化板载外设并实现中断处理程序。语言使用汇编和C语言。对于困难的调试工作,需要使用在线仿真器。
除此之外,还有很多发展空间,有32位嵌入式核心(ARM是百磅大猩猩),可以引导嵌入式版本的Linux和/或Java JVM。
这些是嵌入式系统,通常会使用诸如C或汇编之类的低级语言进行编程。一般情况下,这样的系统将在没有操作系统的情况下运行,尽管一些新型的“日常机器”(例如蓝光DVD播放器和无线路由器)确实会在Unix操作系统上运行它们的代码。
正如其他人所说的那样,许多现代嵌入式系统也运行Windows的变种。这取决于应用程序。此外,在许多领域存在一种趋势,即在更强大的平台上运行具有操作系统的系统,以处理蓝光播放器需要运行Java和其他用户需要更多功能的情况。
让我们想一想你桌面上的处理器。它所做的只是运行机器指令,本身并不关心“操作系统”或“程序”。
你打开电脑,处理器指向第一个指令,并开始执行。
在你的桌面上,它开始执行“操作系统”。但是,没有理由你不能让处理器执行任何你选择的指令集。(这可能不是非常有用,因为你仍然希望将结果输出到屏幕上,而该功能驻留在操作系统中。)同时,如果你的机器指令包含正确的操作码,以便处理器可以输出正确的信号序列在显示器上绘制一幅画,那就更好了。无需操作系统。
桌面计算机做了很多事情,我们通常需要一个操作系统来进行抽象。但在其核心,所有处理器所做的都是执行指令。
在可乐机和咖啡机中的处理器也是同样的道理。它所做的只是执行指令。
写机器指令的工作非常繁琐。因此,就像在桌面上一样,我们通常使用C语言编写代码,然后将其编译成机器代码。该机器代码加载到嵌入式处理器上并运行。
嵌入式系统做得很少,它们不需要全功能的操作系统。一个微控制器可能在芯片上有8或16个引脚 - 与常规CPU插座中的数十个引脚相比。
因此,工作流程是编写一些代码(例如,使用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
请查看DigiKey,这是一个流行的电子零件选择网站,可以了解低端MCU。这里是他们关于一款非常便宜的带有LCD控制器的MCU的信息,例如可能会在咖啡机中找到。很容易获得编程手册和其他资料。
操作系统的工作是提供对共享资源(CPU执行时间、RAM、I/O等)的访问。大多数简单的基于微控制器的嵌入式系统一次只运行一个程序,并且它们自己访问(和管理)这些资源,因此它们不需要操作系统。
嵌入式系统通常使用C语言编程,有时为了极端的时间或内存优化而使用汇编语言。一些嵌入式编译器允许您在高级语言中插入汇编语言。
最近我遇到了一台运行Ubuntu的香烟自动售货机(由于机器正在重启,所以我看到了Ubuntu的标志)。