新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > AnyWhere――面向设备的编程模式

AnyWhere――面向设备的编程模式

作者:时间:2009-10-13来源:网络收藏
嵌入式系统传统
嵌入式系统与通用计算机系统同源,可是因为应用领域和研发人员的不同,嵌入式系统很早就走向相对独立的发展道路,其与通用计算机系统有较大的区别。一般来说,嵌入式系统传统寄存器的编程模式、API的编程模式、端口的编程模式等,其中面向寄存器的编程模式仍然占主导地位。
1.1 面向寄存器的编程模式
嵌入式系统是一个软硬件结合的系统,其中硬件是基础,所有的嵌入式软件都会直接或间接地操作硬件。所谓“面伺寄存器的编程”,就是软件直接操作硬件提供的编程接口来编写嵌入式软件的编程模式。目前,本地硬件提供的编程接口大多数为寄存器,它们通常映射到软件能够直接访问的I/O空间或存储器空间。
面向寄存器的编程模式的基本步骤如图1所示,这是一个蜂鸣器鸣叫的程序。由此可以看出,面向寄存器的编程模式需要对硬件细节非常了解,这是非常繁琐和容易出错的,并且对开发人员的要求较高。
一句话形容:面向寄存器的编程模式就是自己既作将军又作士兵,眉毛胡子一把抓。
1.2 面向API的编程模式
面向寄存器的编程模式非常麻烦,效率低下,不是人人都能胜任的。为了方便嵌入式软件的编写,有些公司编写软件把硬件屏蔽起来形成API,应用软件则通过这些API接口访问硬件。这种通过第三方软件提供的接口来访问硬件的编程模式就是面向API的编程模式。
即使相同的硬件,不同公司提供的API也有很大的出入。有些仅仅提供了一些程序库,对硬件进行简单封装。而有的则提供标准的操作系统接口,如WinCE、嵌入式Linux和VxWorks等。
所有这些API一般是面向本地硬件和部分特定总线(如PCI、USB)的远程硬件的。
面向API编程模式的基本步骤如图2所示。可以看出,面向API的编程模式只需要对硬件细节有大概的了解即可,但需要对API手册进行详细阅读才能开发。不同系统的API可能完全不同,换一种系统,开发人员就需要重新熟悉新的API。另外,不同系统的API功能和性能差异极大,对开发人员的要求也有较大的差别。一句话形容:面向API的编程模式就是手把手教别人干活。

本文引用地址:http://www.eepw.com.cn/article/152329.htm

1.3 面向端口的编程
面向端口编程是PLC(可编程逻辑控制器)的编程模式。PLC把所有硬件都虚拟成端口,通过对端口的读写完成对硬件的控制。PLC最初是为了替代继电器编程,对复杂程序的支持比较弱,对远程硬件的支持也比较弱(主要支持PLC厂商自己的配件)。

2 嵌入式系统传统编程方法的困境
2.1 对 比
各种传统的嵌入式系统编程模式有各自特点,如表1所列。

2.2 困 境
最初,嵌入式系统都是独立工作的。传统的编程模式都是面向独立的微控制器(微处理器),操作的硬件都是本地硬件。
随着时间的推移,嵌入式系统由独立工作走向了网络控制(典型的系统就是集散控制系统),此时嵌入式系统的编程模式依然是面向独立的微控制器(微处理器)。要把这些嵌入式系统组成网络,需要为所有控制器增加兼容的通信接口硬件,并设计兼容的通信协议。而且,每个系统需要对硬件通信接口编程及对通信协议编程后才可能组成网络。这个设计无疑是复杂的。
用面向寄存器的编程模式编写联网控制系统的步骤如图3所示,面向API的编程模式的步骤如图4所示。图3、图4的右边是编写控制远程蜂鸣器鸣叫程序的步骤。至于面向端口的编程模式,目前主要是PLC,它的开发步骤比较简单,读者可以参考PLC的开发手册。不过,PLC一般支持有限的远程,并且成本高昂,很多时候并不适用。通过图3和图4可以看出,对于联网的控制系统,这两种编程模式的步骤基本相同。面向寄存器的编程模式开发难度很大,而面向API的编程模式相对小一些,不过任务依然艰巨。

各种编程模式的对比如表2所列。

现在,组网的范围更加广泛:不但需要本地组网,还需要远程组网;不但控制之间需要互连,控制与普通计算机之间还需要互连,以及不同厂商的设备之间也要互连。这些要求无疑加剧了系统编程的复杂性。


蜂鸣器相关文章:蜂鸣器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭