如何提高定制嵌入式设备开发效率
发布时间:2008/5/27 0:00:00 访问次数:437
过去,嵌入式系统通常是由工程师自行利用汇编语言设计,在定制硬件上运行,不需任何通信技术或安全架构。这些系统会像独立设备一样运行,在许多情况下甚至不用操作系统的支持。
事实上,这些系统只会运行一个专用的单任务或进程,开发人员将负责系统的每个方面、系统与底层硬件的互动及用户输入和输出(若有必要)。设备的每个方面都要由开发人员编码。一般来说,应用开发人员必须非常熟悉底层硬件,而且或许还曾经参与硬件的设计。
随着时间的推移,开发人员不再使用汇编语言自行设计操作系统程序,而是改用c/c++等高级语言或利用软件库开发字符串处理、文件i/o、图形、视频等常用软件。
许多知名的软件开发工具都提供软件库以协助应用软件开发,我们可将这些软件库视为操作系统和应用软件间的中介层,但在许多情况下应用开发人员仍需控制对象的生命周期、线程和内存管理。
许多应用开发软件库其实就是应用软件和底层操作系统间的中介层,而许多软件库还提供原代码以方便设计人员了解软件库的工作方式,并通过检查源代码来确定软件库调用本地操作系统api的速度。
应用开发软件库提供原代码的另一优点是设计人员可借此扩大软件库功能。只要将应用开发和操作系统抽象模型往前推进一步,我们就能得到 (多数情况下) 与操作系统和处理器无关的应用开发模型,java和.net就是很好的例子。在这个模型里,应用开发人员与底层操作系统的距离会更远,对象生命周期是由应用软件的运行时间环境(jvm或.net运行时间)、类别、对象、事件及与底层操作系统api无多大关系的方法处理的。从c/c++转向管理应用开发将带来更多好处,这就像应用开发人员从汇编语言转到c/c++语言后,就能加快产品开发。
底层硬件的抽象化是将应用软件开发从汇编语言通过c/c++转换到管理应用开发环境的附带效果之一。应用开发人员多半不需知道硬件细节,硬件抽象层则可搭配设备驱动程序将应用软件与实际硬件隔开。
但这与嵌入式操作系统的发展有什么关系呢?
嵌入式设备的开发人员可以选择所需的设备开发工具和操作系统。但在选择硬件、操作系统(如需要)和应用开发工具时,需进行一个平衡。相关因素可能很复杂,决策过程当然是以商业和技术考虑为主,但最后多半仍然以时间、资源和成本为重点。
您的嵌入式系统价值在哪里?是运行设备的用户界面、应用软件、程序或服务,还是为设备传送和接收数据的服务器?研发人员应将时间用于增加产品价值的应用软件和技术上,但线程管理、内存管理、网络堆栈、媒体播放器、网络浏览器和各种服务器技术该怎么办?
这些技术通常是由操作系统提供,您的研发团队是否能在数月内开发出一套比市场上tcp/ip协议堆栈小5kb和快10%的tcp/ip协议堆栈?或是将时间用于更新操作系统的网络服务,以便符合最新规格?
问题在于让您的研发团队将时间用于编写、开发、测试和维护操作系统层级的软件组件是否是一种好的做法?
答案或许不是。那么,“发展嵌入式系统时,我要将时间和资源用在什么地方?”这个看似简单的问题可以有很多答案。我们可将时间用于硬件方面,或许为您的嵌入式系统编写硬件抽象层代码(如果需要)以构建操作系统基础架构代码和其它低水平的支持代码,或者您的团队也会将时间用于高水平、定制的最终用户体验方面,并将您的产品特定的知识产权添加到现有的操作系统中。
希望您能看到应用开发技术进步和嵌入式系统设计与发展方向间的相似处。
有多种操作系统可以选择。无论是自主开发的操作系统还是开源操作系统抑或是其他,您都要做出许多评估才能为嵌入式设备找出最合适的操作系统。
评估内容包括程序大小、处理器支持、本地硬实时支持、硬件设备支持的范围 (或参考硬件)、源代码存取及是否有开发商和合作伙伴可以帮助您进行嵌入式系统的开发。
上市时间越来越重要,加快上市时间的方法之一是将时间用于提高设备的附加价值部分。但操作系统怎么办?嵌入式操作系统有不同的类型和大小,有些操作系统仅提供原代码,研发人员必须先建立一套工具
过去,嵌入式系统通常是由工程师自行利用汇编语言设计,在定制硬件上运行,不需任何通信技术或安全架构。这些系统会像独立设备一样运行,在许多情况下甚至不用操作系统的支持。
事实上,这些系统只会运行一个专用的单任务或进程,开发人员将负责系统的每个方面、系统与底层硬件的互动及用户输入和输出(若有必要)。设备的每个方面都要由开发人员编码。一般来说,应用开发人员必须非常熟悉底层硬件,而且或许还曾经参与硬件的设计。
随着时间的推移,开发人员不再使用汇编语言自行设计操作系统程序,而是改用c/c++等高级语言或利用软件库开发字符串处理、文件i/o、图形、视频等常用软件。
许多知名的软件开发工具都提供软件库以协助应用软件开发,我们可将这些软件库视为操作系统和应用软件间的中介层,但在许多情况下应用开发人员仍需控制对象的生命周期、线程和内存管理。
许多应用开发软件库其实就是应用软件和底层操作系统间的中介层,而许多软件库还提供原代码以方便设计人员了解软件库的工作方式,并通过检查源代码来确定软件库调用本地操作系统api的速度。
应用开发软件库提供原代码的另一优点是设计人员可借此扩大软件库功能。只要将应用开发和操作系统抽象模型往前推进一步,我们就能得到 (多数情况下) 与操作系统和处理器无关的应用开发模型,java和.net就是很好的例子。在这个模型里,应用开发人员与底层操作系统的距离会更远,对象生命周期是由应用软件的运行时间环境(jvm或.net运行时间)、类别、对象、事件及与底层操作系统api无多大关系的方法处理的。从c/c++转向管理应用开发将带来更多好处,这就像应用开发人员从汇编语言转到c/c++语言后,就能加快产品开发。
底层硬件的抽象化是将应用软件开发从汇编语言通过c/c++转换到管理应用开发环境的附带效果之一。应用开发人员多半不需知道硬件细节,硬件抽象层则可搭配设备驱动程序将应用软件与实际硬件隔开。
但这与嵌入式操作系统的发展有什么关系呢?
嵌入式设备的开发人员可以选择所需的设备开发工具和操作系统。但在选择硬件、操作系统(如需要)和应用开发工具时,需进行一个平衡。相关因素可能很复杂,决策过程当然是以商业和技术考虑为主,但最后多半仍然以时间、资源和成本为重点。
您的嵌入式系统价值在哪里?是运行设备的用户界面、应用软件、程序或服务,还是为设备传送和接收数据的服务器?研发人员应将时间用于增加产品价值的应用软件和技术上,但线程管理、内存管理、网络堆栈、媒体播放器、网络浏览器和各种服务器技术该怎么办?
这些技术通常是由操作系统提供,您的研发团队是否能在数月内开发出一套比市场上tcp/ip协议堆栈小5kb和快10%的tcp/ip协议堆栈?或是将时间用于更新操作系统的网络服务,以便符合最新规格?
问题在于让您的研发团队将时间用于编写、开发、测试和维护操作系统层级的软件组件是否是一种好的做法?
答案或许不是。那么,“发展嵌入式系统时,我要将时间和资源用在什么地方?”这个看似简单的问题可以有很多答案。我们可将时间用于硬件方面,或许为您的嵌入式系统编写硬件抽象层代码(如果需要)以构建操作系统基础架构代码和其它低水平的支持代码,或者您的团队也会将时间用于高水平、定制的最终用户体验方面,并将您的产品特定的知识产权添加到现有的操作系统中。
希望您能看到应用开发技术进步和嵌入式系统设计与发展方向间的相似处。
有多种操作系统可以选择。无论是自主开发的操作系统还是开源操作系统抑或是其他,您都要做出许多评估才能为嵌入式设备找出最合适的操作系统。
评估内容包括程序大小、处理器支持、本地硬实时支持、硬件设备支持的范围 (或参考硬件)、源代码存取及是否有开发商和合作伙伴可以帮助您进行嵌入式系统的开发。
上市时间越来越重要,加快上市时间的方法之一是将时间用于提高设备的附加价值部分。但操作系统怎么办?嵌入式操作系统有不同的类型和大小,有些操作系统仅提供原代码,研发人员必须先建立一套工具