Windows CE嵌入式导航系统研究(软件平台的选择)

简介: 1.1.1 软件平台的选择 1. 操作系统的选择 尽管嵌入式系统有着无比广阔的市场需求和发展前景,但嵌入式系统的发展多年来却经历了一个曲折和痛苦的历程。
1.1.1 软件平台的选择
1. 操作系统的选择

尽管嵌入式系统有着无比广阔的市场需求和发展前景,但嵌入式系统的发展多年来却经历了一个曲折和痛苦的历程。随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Tornado/VxWorkx、pSOSystem、Neculeus和Windowss CE、QNX、VRTX,以及沸沸扬扬的“女娲计划”,中国人自己的嵌入式操作系统HOPEN和现在谈论最多的嵌入式Linux操作系统等等。可用于嵌入式系统软件开发的操作系统很多,但关键是如何选择一个适合你所开发项目的操作系统,我们认为应该从以下几点进行考虑;

(1) 操作系统提供那些开发工具。有些实时操作系统(RTOS)只支持该系统拱应商的开发工具。也就是说,还必须向操作系统供应商获取编译器、调试器等。而有些操作系统使用广泛且有第三方工具可用,因此,选择的余地比较大。

(2) 操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题。它是关系到整个系统能否按期完工的一个关键因素。因此我们要选择那些可移植性程度高的操作系统。从而避免操作系统难以向硬件移植而带来的种种困难,加速系统的开发进度。

(3) 操作系统的内存要求。均衡考虑是否需要额外花钱去购买RAM或EEPROM来迎合操作系统对内存的较大要求。有些操作系统对内存的要求是target dependent。如Tornado/VxWorkx,开发人员能按照应用需求分配所需的资源,而不是为操作系统分配资源。从需要几K字节存储区的嵌入设计到需求更多的操作系统功能的复杂的高端实时应用,开发人员可任意选择多达80种不同的配置。

(4) 开发人员是否熟悉此操作系统及其提供的API。

(5) 操作系统是否有提供硬件的驱动程序,如网卡等。

(6) 操作系统是否具有可剪裁性,即能否根据实际需要进行系统功能的剪裁。有些操作系统具有较强的可剪裁性,如嵌入式Linux、Tornado/VxWorks等等。

(7) 操作系统的实时性。实时性分为:软实时和硬实时。有些嵌入式操作系统只能提供软实时,如WindowsCE。作为微软大名鼎鼎的“维那斯”,Microsoft Windows CE 2.0 是32位, Windows兼容,小内核,可伸缩实时操作系统,满足大部分嵌入式和非嵌入式应用的需要。但不够实时,属于软实时嵌入式操作系统。

2. 编程语言的选择

(1) 通用性。随着微处理器技术的不断发展,其功能越来越具体,种类越来越多,但不同种类的微处理器都有自己专用的汇编语言。这就为系统开发者设置了一个巨大的障碍,使得系统编程更加困难,软件重用无法实现,而高级语言一般和具体机器的硬件结构联系较少,比较流行的高级语言对多数微处理器都有良好的支持,通用性较好

(2) 可移植性程度。由于汇编语言和具体的微处理器密切相关,为某个微处理器设计的程序不能直接移植到另一个不同种类的微处理器上使用,因此,移植性差;而高级语言对所有微处理器都是通用的,因此,程序可以在不同的微处理器上运行,可移植性较好。这是实现软件重用的基础。

(3) 执行效率。一般来说,越是高级的语言,其编译器和开销就越大,应用程序也就越大、越慢。但单纯依靠低级语言,如汇编语言来进行应用程序的开发,带来的问题是编程复杂、开发周期长。因此存在一个开发时间和运行性能间的权衡。

(4) 可维护性。低级语言如汇编语言,可维护性不高。高级语言程序往往是模块化设计,各个模块之间的接口是固定的。因此,当系统出现问题时,可以很快地将问题定位到某个模块内,并尽快得到解决。另外,模块化设计也便于系统功能的扩充和升级。

(5) 基本性能。在嵌入式系统开发过程中使用的语言种类很多,比较广泛应用的高级语言有:Ada、C/C++、Modula-2和JAVA等。Ada语言定义严格,易读易懂,有较丰富的库程序支持,目前在国防、航空、航天等相关领域应用比较广泛,未来仍将在这些领域占有重要地位。C语言具有广泛的库程序支持,目前在嵌入式系统中是应用最广泛的编程语言,在将来很长一段时间内仍将在嵌入式系统应用领域占重要地位。C++是一种面向对象的编程语言,目前在嵌入式系统设计也得到了广泛的应用,如GNU C++。Visual C++,是一种集成开发环境,支持可视化编程,广泛应用于GUI程序开发。但C与C++相比,C++的目标代码往往比较庞大和复杂,在嵌入式系统应用中应充分考虑这一因素。Modula-2定义清晰,支持丰富,具有较好的模块化结构,在教学科研方面有较广泛的应用。虽然该语言的开发应用一直比较平缓,但近两年在欧洲有所复苏。Java语言相对年轻,但有很强的跨平台特性,目前发展势头较为强劲。它的一次编程,到处可用的特性使得它在很多领域倍受欢迎。随着网络技术和嵌入式技术的不断发展,Java及嵌入式Java的应用也将越来越广泛。

3. 开发工具的选择

(1) 系统调试器的功能。系统调试特别是远程调试是一个重要的功能。

(2) 支持库函数。许多开发系统提供大量使用的库函数和模板代码。如大家 比较熟悉的C++编译器就带有标准的模板库,它提供了一套用于定义各种有用的集装、存储、搜寻、排序对象。

(3) 编译器开发商是否持续升级编译器。

(4) 连接程序是否支持所有的文件格式和符号格式。

目录
相关文章
|
8天前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
67 4
|
2月前
|
监控 Windows
Windows平台RTSP|RTMP播放器如何实时调节音量
我们在做Windows平台RTSP、RTMP播放器的时候,有这样的技术需求,特别是多路监控的时候,并不是每一路audio都需要播放出来的,所以,这时候,需要有针对音量调节的设计
|
16天前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
29 0
Windows 平台安装 MongoDB
|
2月前
|
监控 C# 块存储
Windows平台RTSP|RTMP播放器如何叠加OSD文字
做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨,如何动态添加OSD台标。
Windows平台RTSP|RTMP播放器如何叠加OSD文字
|
2月前
|
Linux Android开发 iOS开发
Windows平台RTSP|RTMP播放器如何实现实时录像功能
Windows平台RTSP、RTMP播放器实时录像接口设计,实际上,除了Windows平台,我们Linux、Android、iOS平台也是一样的设计,单纯的录像模块,如果做的全面,也不是一两个接口可以搞定的
|
29天前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
|
2月前
|
XML JSON C#
有哪些让你「 爽到爆炸 」的 Windows 软件?
有哪些让你「 爽到爆炸 」的 Windows 软件?
WK
|
3月前
|
存储 JavaScript 前端开发
如何在Windows平台上手micro:bit
micro:bit是一款口袋大小的可编程计算机,使用ARM处理器,跨平台兼容性强,适用于青少年学习编程。通过USB接口轻松连接Windows电脑,找到“MICROBIT”文件夹开始互动。提供MakeCode(支持拖拽编程及JavaScript)和MicroPython平台,满足不同编程需求。创建项目后,下载.hex文件至micro:bit,即可运行程序,展现创意成果。
WK
48 1
|
3月前
|
Windows
Windows平台如何修改监听的服务名称?
【8月更文挑战第15天】在Windows平台上可透过注册表编辑器、命令提示符或第三方工具修改服务的显示名称。首先,通过注册表编辑器找到`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services`下的目标服务,修改其“DisplayName”键值。或者,在命令提示符中使用`sc config`命令来变更服务名称。此外,利用第三方工具如Windows Service Manager也能简化此过程。修改前请确保了解可能的影响并做好备份。
|
3月前
|
芯片 iOS开发 MacOS
Mac上运行windows软件-GPTK
Mac上运行windows软件-GPTK
171 1