Jos*_*zel 145 c embedded microcontroller assembly operating-system
日常机器(不是电器,数字手表等电脑和移动设备)是如何编程的?什么样的代码可用于可口可乐自动售货机的编程?我的咖啡机如何接受预先设定的时间并在几小时后开始冲泡一壶咖啡?
这些机器内部是否有操作系统,还是更基本的东西?它们是用Assembly,C还是其他语言编写的?
而且,我真的想找到一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可能使用源代码.如果有人知道这样的资源(搜索没有给我任何东西),那就太棒了.
chu*_*ubs 46
你所谈论的大多数都是基于嵌入式的系统,其中C是一种奢侈品,往往是不可用的.他们没有传统意义上的软件.大多数情况下,软件是用C语言,汇编语言甚至机器码编写的.C和ASM要求编写编译器以将其用于该平台.机器代码编写为二进制无编译器.
您的咖啡壶和大多数简单的系统都不带有操作系统.它们只是从内存中的起始地址加载,然后将代码放在那里.这些系统通常将其"代码"刻录到EEPROM中,充当系统的硬盘驱动器.在烧掉舞会之后搞砸代码,把芯片扔掉,重新烧掉芯片上的代码,然后重新开始.高端设备使用更新的芯片FPGA来进行测试,部署等更容易,但它们是相同的.
可口可乐机器,路由器等通常使用QNX,EMBOS等实时操作系统,如果幸运的话,有时使用RTlinux.其中大多数都是专有操作系统,你需要很多钱,但他们有C编译器,驱动程序与硬件一起工作等.
http://www.segger.com/cms/embos.html
RTLinux的
pou*_*def 18
让我们考虑桌面上的处理器.它所做的就是运行机器指令,并且它本身并不关心"操作系统"或"程序".
打开计算机,处理器指向第一条指令,然后开始执行.
在桌面上,它开始执行"操作系统".但是没有理由让处理器执行您选择的任何指令集.(这可能不是很有用,因为您仍然希望将结果输出到屏幕,并且该功能驻留在操作系统中.)同时,如果您的机器指令由正确的操作码组成,那么处理器将输出在显示器上绘制图片的正确信号序列,就更好了.无需操作系统.
桌面做了这么多东西,我们一般需要一个操作系统的抽象.但在其核心,所有处理器都执行指令.
可口可乐机器和咖啡机中的处理器也是如此.它只是执行指令.
好吧,逐位编写机器指令很繁琐.因此,就像桌面一样,我们通常用C编写代码,然后编译成机器代码.该机器代码被加载到嵌入式处理器上并运行.
嵌入式系统做得很少,不需要全面的操作系统.微控制器可能在芯片上有8个或16个引脚 - 与常规CPU插槽中的几十个引脚相比.
因此,工作流程是编写一些代码(例如,在C中),在桌面计算机上编译它.该编译器为嵌入式芯片生成机器代码.然后将该代码加载到微处理器上(并且您需要特殊的硬件才能执行此操作.)然后,您为芯片供电并开始执行指令.简单!
ugh*_*fhw 12
许多执行特定功能的设备不包含任何"代码".它们通过电子元件的属性执行其功能.更高级的系统可以执行许多不同的功能或需要易于升级,它将包含一个微控制器和某种"操作系统".由于这些功能仍然有一些限制,操作系统将是简单和专门设计的.为了更高级,该设备将包含类似于计算机的东西.它将具有更复杂的操作系统,可以与系统的不同部分通信.最后,您可以访问智能手机等设备,这些设备包含一个完整的操作系统,可以运行用户级代码并拥有比简单设备更多的用户输入.然而,即使是现代处理器本质上也是非常大的电路.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
日常设备中的低端微控制器通常不运行操作系统.选择它们是为了降低成本,推动成本的主要因素是芯片上的引脚数量(从十几个到几百个)和内部存储量(从几千字节到一兆字节ROM,从少数几个字节到一百千字节RAM).
随着特征蠕变发挥其魔力,它确实发生微波可能需要多任务.在这种情况下,程序员会回忆起他们的操作系统课程,并根据需要实现消息传递,任务调度,异步I/O等!
当然,为了方便,简单,代码大小等,特征倾向于以基本方式完成.通常,这取决于您如何分析程序,在特定于任务的代码中查找通用OS功能.但是从硬编码的任务调度程序到操作系统还有很长的路要走,当你只有几千字节的时候,一个现成的操作系统不是解决方案.
看一下流行的电子零件选择网站DigiKey,了解低端MCU.这是他们在一台非常便宜的带有LCD控制器的MCU上的信息,例如可能在咖啡机中找到的.获得编程手册和一切都很容易.
操作系统的工作是提供对资源的共享访问 - CPU执行时间,RAM,I/O等.大多数简单的基于微控制器的嵌入式系统一次只运行一个程序,并且它们自己访问(和管理)这些资源因此他们不需要操作系统.
嵌入式系统通常用C语言编程,有时用于极端时序或内存优化的汇编.一些嵌入式编译器允许您在更高级别的语言中散布程序集.
归档时间: |
|
查看次数: |
11953 次 |
最近记录: |