C 日常机器是如何编程的?

C 日常机器是如何编程的?,c,operating-system,microcontroller,embedded,assembly,C,Operating System,Microcontroller,Embedded,Assembly,日常机器(与其说是电脑和移动设备,不如说是家电、数字手表等)是如何编程的?可口可乐自动售货机的编程需要什么样的代码?我的咖啡机是如何接受预先设定的时间,并在几个小时后开始煮一壶咖啡的 这类机器里面有操作系统吗,还是更基本的东西?它们是用汇编语言、C语言还是其他语言编写的 而且,我真的很想找到一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可能还有源代码。如果有人知道这样的资源(搜索对我来说没有任何结果),那就太棒了。这些都是,并且将使用非常低级的语言(如C或汇编)进行编程。一般来说,

日常机器(与其说是电脑和移动设备,不如说是家电、数字手表等)是如何编程的?可口可乐自动售货机的编程需要什么样的代码?我的咖啡机是如何接受预先设定的时间,并在几个小时后开始煮一壶咖啡的

这类机器里面有操作系统吗,还是更基本的东西?它们是用汇编语言、C语言还是其他语言编写的

而且,我真的很想找到一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可能还有源代码。如果有人知道这样的资源(搜索对我来说没有任何结果),那就太棒了。

这些都是,并且将使用非常低级的语言(如C或汇编)进行编程。一般来说,这样的系统将在没有操作系统的情况下运行,尽管一些较新的“日常机器”如蓝光DVD播放器和无线路由器确实在基于unix的操作系统上运行代码


更新


正如其他人所说,许多现代嵌入式系统也运行windows的风格。这取决于应用程序。此外,在许多领域,有一种趋势是在功能更强大的平台上运行操作系统,以处理诸如蓝光播放器需要运行Java等情况,以及最终用户需要更多功能的其他情况。

看一看,他们使用微控制器,这是经典的一种。它们是8位或16位内核,很少有操作系统。程序员编写代码来初始化板载外围设备并实现中断处理程序。使用的语言是汇编语言和C语言。复杂的调试工作需要一个电路内仿真器


除此之外,还有很多发展空间,32位嵌入式内核(ARM是100磅重的gorilla)可以启动嵌入式版本的Linux和/或Java JVM。

如果你在谷歌上搜索一般信息,请查找“嵌入式系统”、“soc”(片上系统)之类的东西。我想说,这些类型的设备中有很大一部分是用低级语言运行的,比如C


有趣的事实:Java最初被认为是嵌入式系统编程的解决方案:)

这是一个非常广泛的问题,它在很大程度上取决于机器。我只能猜测,这些自动售货机的大多数是由微控制器控制的(8051、PIC、ARM7,举几个最常用的例子),很少有操作系统,如果有的话,可能是某种RTO,例如


更复杂的机器,如DVD/BluRay播放机或移动电话,运行在诸如Windows之类的嵌入式平台上。通常Unix操作系统在其上运行。

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


嵌入式系统通常用C语言编程,有时用汇编语言编程,以实现极端的定时或内存优化。一些嵌入式编译器允许您在更高级别的语言中穿插汇编。

您谈论的大多数是嵌入式系统,其中C是一种奢侈品,可能无法使用。软件通常不是在操作系统下运行的独立程序,就像你在台式机或手机上运行的那样,特别是当设计者选择使用的芯片被描述为“微控制器”时

大多数情况下,软件是用C或汇编语言编写的。C需要为该平台编写一个编译器(如果没有很好地优化,可能会产生臃肿或低效的asm),但一个简单的汇编程序每次只需将文本转换成一行机器代码,而且很容易编写。(如果供应商想让任何人购买他们的微控制器,他们将确保至少有一个汇编程序,以使开发更具吸引力,通常还有一个C编译器,尽管有时是非优化的。)

你的咖啡壶和最简单的系统都没有操作系统。它们只是从内存中的起始地址加载,然后您将代码放在那里。通常,这些系统将其“代码”刻录到EEPROM中,EEPROM充当系统的硬盘驱动器。或者,根据EEPROM/闪存的类型,代码可以直接从闪存运行,而无需先加载到RAM中。(设备可能无法写入自己的闪存;这是通过外部工具完成的。编辑/编译/运行周期可能包括重新编程实际硬件的闪存,如果不在模拟器中测试的话。)

可口可乐的机器、路由器等通常使用实时操作系统,如QNX、EMBOS,如果幸运的话,有时使用RTlinux。大多数都是专有的操作系统,你需要花很多钱才能获得许可,但它们有C编译器、硬件驱动程序等等


RTLinux

许多执行特定功能的设备不包含任何“代码”。它们通过电子元件的特性来执行其功能。更先进的系统,可以执行许多不同的功能或需要易于升级,将包含一个微控制器和某种“操作系统”。由于这些操作系统的功能仍有一些限制,因此操作系统将简单且经过专门设计。更先进的是,该设备将包含类似于计算机的内容。它将有一个更复杂的操作系统,可以与系统的不同部分进行通信。最后,您可以访问智能手机等设备,这些设备包含完整的操作系统,可以运行用户级代码,并且比简单的设备有更多的用户输入。然而,即使是现代处理器本质上也是非常大的电路。CPU识别的每个指令都会导致使用不同的电路来执行该功能

这里有一些W