【原创】Processor Expert 实时的操作系统和驱动程序!
0赞处理器的竞争已经从性能方面的竞争上升到开发工具、生态环境层面的竞争,各大处理器厂商都为自己的处理器推出了专用的开发环境和开发工具。
飞思卡尔的Processor Expert工具已经面市很长时间。它是第三代驱动程序开发工具,当采用飞思卡尔芯片构建驱动程序时它可以从现象方式提供有用的协助功能。
如果微控制器 (MCU)很简单,芯片只是4位和8位两种,你便可以从零开始掌握文档,编写驱动程序,拥有一个公平的机会轻易获得成功。当芯片的功能越来越大、越来越复杂,供应商通常会提供外设驱动程序库。但你的选择却是很有限的。通常你面对的选择总是“一种规格适合所有产品”的情况。如果你需要创造一些独特的事物(谁不想呢?),就需要被迫返回第一代解决方案:阅读和理解那些文档。对于复杂的片上系统而言,都带有多种资源和相应复杂的方框图,这会成一个真正的问题。
Processor Expert 技术采用精确的激光制导产品专门解决这一问题。这是一款真正的专家系统,可以帮助大家创建驱动程序和驱动程序库,范围面向大范围的飞思卡尔微控制器 (MCU),其中包括HCS08, RS08, HCS12, DSC, ColdFire V1, V2, V3, V4和KinetisMCU,以及各种基于这些芯片构建的塔式系统线路板。驱动程序不仅取决于这类芯片,而且还取决于芯片程序包和线路板。整体而言,Processor Expert 在综合知识库中拥有超过 300 种线路板,此外还有各种适用于这些线路板芯片的引脚变体。它了解各种资源如何利用所有这些引脚和寄存器。如果你企图构建一些互相矛盾的产品,这款工具便会警告这一情况 (图 1)。你不能不去理解可用产品以及产品的运行方式等这些问题。如果仍然存在问题,你需要解决它。但是你可以不去担心那些结构庞大的细节,它们嵌入了数千个(毫不夸张)页面的参考文档,让你尝试着想象问题可能出自何处,并且你在运行代码时是否在哪里出了错。
利用这款工具,你可以对资源进行过滤,隐藏毫不相关的复杂性;在设计时而非运行时自动检测出各种问题;并且可以创建能够重复使用嵌入式组件,它们能够将与硬件独立的功能进行压缩。
图 1: Processor Expert 工具凸显了驱动程序之间的引脚冲突问题
将驱动程序与实时操作系统 (RTOS) 集成在一起是软件开发领域另一个更加常见的复杂问题。便携、特性丰富、高性能和基于 RTOS 的特性都是现代嵌入式应用的典型特征。
RTOS 可以为你提供可靠性、灵活性和多种设计选择,如果依靠自己独立设计可能会更加困难。如果你还无法信任它,Tom Thompson 曾经撰写过在博客上一篇 《采用MQX编写实时的真正解决方案》的文章。
可是,我们知道将 RTOS 添加到你的开发需求中,可以做什么呢?
我们可以什么都不做,忽视 RTOS。如果访问资源时存在潜在的冲突,也许问题在于 I²C 总线的 I²C 驱动程序,我们假设应用可以处理这个问题。这肯定是一个具有风险的策略。
另一方面,我们还还可以利用 RTOS 的功能重新编写驱动程序。你可以在 RTOS 中执行驱动程序的回调函数,请求并释放资源。然而,之后你可能会与特定的 RTOS 捆绑在一起,不可撤销。
还有第三种而且是更好的方法。随着最近推出的MQX RTOS v3.7 和 CodeWarrior for MCU v10.1开发环境,Processor Expert 工具现在拥有特定用途的 OS 集成功能。RTOS 适配器可以定义 RTOS 的特性,从而完成如内存分配权、处理关键扇区、信号和中断等这样的重要任务。这些对每个 RTOS 都具有独特性,同样可以在这个适配器中进行定义。这一信息被逻辑设备驱动程序 (LDD) 充分加以利用,以确保它们以“固有的”特性“适合”RTOS。如果你观察生成的 LDD 代码,这看上去就像驱动程序特别针对 RTOS 一样,因为事实上就是如此。如果你采用 Processor Expert 工具,指定不同的 RTOS,你便获得不同的驱动程序。这种功能如今已经完全得以实现。
这些部分运行都非常良好,因为它们都属于飞思卡尔解决方案的组成部分。CodeWarrior 开发环境卫生包括作为插件的 Processor Expert。将飞思卡尔硬件和 MQX RTOS 随附的飞思卡尔下载软件相互结合,你会拥有真正的“惊喜”时刻。它们都是解决方案理念的所有组成部分,可以为你提供各种选择。
但是稍等!“如果我不想使用飞思卡尔的工具和MQX RTOS?你不是在限制我的使用选择吗?”答案是情况并非如此。Processor Expert 技术与 RTOS 的集成方式是开放式的。这种功能是全新的,因此选择并不是太多,但我们预计众多选择即将来临。
然而,它是一种精心设计的工具,也许有不止一种解决问题的方式。如今存在各种“经典的” RTOS 组件,或者你也可以轻松构建自己的工具。这些无法与逻辑设备驱动程序实现集成,但仍然极为有用。那如何运行呢?
让我利用这个话题介绍从现象角度来说极为有用的 Processor Expert 工具。它远不止是一种驱动程序开发工具。它可以创建代表专用软件功能的组件,因此你可以重新不断利用这一组件。Processor Expert 技术一直采用模块化方式,它将“组件”都封装在了一起。驱动程序便是一种组件。但从更加抽象的层次来说,驱动程序只不是一堆带有接口的代码而已。如果你将它视为一种模块或对象(如同面向对象的编程),在驱动程序与任何边界清晰、经过定义的源代码之间便不存在真正的区别。
一个组件便是一批代码,能够执行专用功能。Processor Expert 组件具有以下这些特征:
- 它拥有多种属性 – 在设计时设置配置选项;
- 它具有多个事件 – 通常由中断服务程序 (ISR) 处理或者由一些回调程序处理;
- 它拥有多种方法 – 这是一种组件内的功能接口。
此外 Processor Expert 组件还拥有继承方案:你可以从其他组件中派生出组件。比如,你可以构建一种基于简单 Bit I/O 组件的软件I²C 或者 SPI 组件。
组件可以是简单的软件算法(例如说一种标准数据转化器),执行安全套接字的代码,或者如同 RTOS 一样复杂的操作系统!你可以看到我们所提到的话题了。
采用 Processor Expert 的抽象功能,你可以基于 RTOS 定义自己的组件。例如,有这样一种 Processor Expert 组件可以支持FreeRTOS。在 FreeRTOS 网站,你可以在社区贡献论坛的 FreeRTOS 互动部分页面找到它。这是一篇关于作者创建组件的相当出色的入门介绍。
此刻,Processor Expert 插件可以提供作为 CodeWarrior 开发环境的组成部分。然而,就像我在《Eclipsing 专用工具》所写道的那样,我们已经将自已的开发环境推进到了 Eclipse C/C++ 开发环境(CDT) 之中。Processor Expert 软件以 CDT 标准为基础构建而成。我们预计这个夏季在独立的 Eclipse 插件内将会提供 Processor Expert 工具。该工具旨在于与 Eclipse 3.4 或更新版本协作,在第一版发布产品受限 Windows 系统使用,在 2011 年冬季将会推出全面基于 Java 的 Eclipse 插件。并未保证具体的时间进度。
因此,随着不断发展,下一步还会有一下方面的发展:
- 广泛范围的硬件,包括 8 位到 32 位,如今最近添加了 Kinetis MCU 产品
- 功能强大的 CodeWarrior 开发环境,支持微控制器连续体
- 从开发环境到生态系统的多种选择,具体取决于处理器产品的不同
- 免费赠送的 RTOS,但如今您也可以选择使用自己的系统
- 现今 RTOS 与 Processor Expert 技术的集成