当前位置:首页 > 工业控制 > 电子设计自动化
[导读]在本文中,我们研究了选择嵌入式操作系统的各种方案,并且针对嵌入式和实时操作系统,讨论一些选择标准,并强调由可编程逻辑解决方案引入的设计折衷。阐述了一个典型实例,这里我们以在莱迪思半导体公司的FPGA 上运行

在本文中,我们研究了选择嵌入式操作系统的各种方案,并且针对嵌入式和实时操作系统,讨论一些选择标准,并强调由可编程逻辑解决方案引入的设计折衷。阐述了一个典型实例,这里我们以在莱迪思半导体公司的FPGA 上运行的LatticeMico32软处理器设计为例提供一个典型方案的讨论。
 
引言

操作系统能够提高可移植性,并提供多种经过测试的抽象层,服务层和应用模块层以供选择,从而加快产品上市时间并减少应用程序出错的可能性。然而,选择一个嵌入式操作系统( OS )从来就不是一个简单的过程,因为集成嵌入式软件的方式选择余地很大,你可以完全都由自己来编写,或通过商业定制专门实时操作系统,也可以直接购买通用操作系统不作任何修改,现成的通用操作系统。FPGA性能的提高和软处理器核的出现,直接导致了可编程逻辑SoC解决方案的产生,随着这一变化,关于选择标准,设计方案以及折中考虑等传统经验也需要与时俱进以适应这些新的开发方式。

在本文中,我们研究了选择嵌入式操作系统的各种方案,并且针对嵌入式和实时操作系统,讨论一些选择标准,并强调由可编程逻辑解决方案引入的设计折衷。阐述了一个典型实例,这里我们以在莱迪思半导体公司的FPGA 上运行的LatticeMico32软处理器设计为例提供一个典型方案的讨论。

传统经验

根据传统经验,一个操作系统的选择有四个主要方式。

无操作系统

许多简单的嵌入式系统不需要操作系统。该代码通常始于设立堆栈指针和初始化几个时钟和外设寄存器。然后,该代码进入主循环(也称为超级循环) ,以执行产品的功能。编写中断服务程序( ISR)用以处理异步事件,以提供一些响应而不是轮询设备方式来进行服务。 ISR的响应通常是在0到10微秒的范围。如果 处理器速度 足够 快,以及超级循环是小而紧凑的,这是一个完全可行的选择。然而,如果进行更复杂的操作,如执行控制循环,提供图形显示服务,使用文件系统或网络堆栈( TCP / IP协议或其他),超级循环将无法正常工作。如果考虑一个 快速和 功能强大的 处理器, 如开放源 代码LatticeMico32软处理器, 应该选择一个操作系统。

自己编写操作系统

对于一些特定需求,现有的解决方案无法满足需要,或者现有的解决方案成本太高,通常就需要考虑自己编写操作系统。自己编写RTOS (实时操作系统)通常不是一个好的选择,因为总是严重低估所需付出的努力。一个简单的“tasker”要写几天或几周,但更艰巨的挑战是需要对实现鲁棒性商业产品的努力。例如,一个商业的RTOS ,如μC/OS-II可能包含超过10000行的代码,已经在各种各样的产品中得到了现场验证,并可能已被认证应用于,如电子和医疗产品等。如果选择你自己编写,谁将确保长期维护,并且完成详细的文档?

从商业的观点来看,自己编写的RTOS不是一个好的选择。

商业RTOS

实时操作系统是一个管理微控制器,微处理器或DSP时间的软件。最重要的一个特点是它对实时事件的响应,通常不到25微秒。这种响应通常是确定性,在某些情况下,甚至相当稳定。一个实时操作系统以应用编程接口( API )的形式为应用程序员提供了许多“服务”。当选择一个实时操作系统时,从技术和业务问题方面考虑会有数十种选择。

技术问题可以大致分类为:

* RTOS对应用作出的响应够吗?

* 实时操作系统提供了所需的功能吗?大多数实时操作系统提供相同的基本功能:任务管理,时间管理,信号量,消息队列,事件标志等。

* RTOS可以实时用于不同的CPU (即代码可以移植吗)吗 ?一个 实时操作系统,如μC/OS-II已移植到超过45种不同CPU 架构, 所以在这种 情况下,可移植性不会成为问题,产品和其一部分的长寿性是得到保证的。如果使用一个新的架构,移植 到一个 CPU通常需要一两个星期。

* 使用RTOS是否有足够的ROM和RAM?根据所需的特性RTOS的空间可以减少吗?例如,μC/OS-II是可以升级的,代码 空间的要求在6千字节到24 千字节的之间,最低只需要500字节的RAM 。

从商业角度,事情并非那么容易解决。具体来说,嵌入式开发者需要从操作系统供应商那里得到满意答复,了解价格结构,支持结构和供应商的声誉和稳定性。寻找一个ROTS操作系统或RTOS的供应商时,调查通常是一个好的开端。

当系统响应速度是最重要时,如控制和监测应用程序,就会选择商业的RTOS,因为它们很依赖于软件的执行功能。如果你可以选择用硬件实现时间至关重要的功能,通常就不需要由RTOS提供严格的时间保证。

UNIX操作系统

在过去几年中,嵌入式应用中采用的32位处理器平台的性能和功能得到了极大增强。今天,即使软处理器,如LatticeMico32提供达到50至100 DMIPS的计算能力。随着可用资源的性能和功能的增强,提供丰富的功能集和抽象层的操作系统已成为一种可行的可选嵌入式解决方案。UNIX提供了非常丰富的编程环境,对多处理器的应用有相当的规模,以及在网络的应用方面拥有丰富的历史。通过文件操作,它提供了一个统一的设备抽象层,使平台之间的应用可以快速移植。一些UNIX版本也可获取开放源代码授权:Linux是最著名的变种,有非常庞大的用户群体和许多嵌入式应用(如WLAN路由器,打印机,VoIP电话)。Linux系统甚至对不包括MMU (内存管理单元)的处理器提供了有限的支持。各种BSD (伯克利软件分发)版本可能不太为人所知,但它们在许可证上限制较少。

一些实时扩展为Linux提供了在Linux执行层的顶部(或者说,下面)的最佳的软实时层。RT/ Linux、 RTAI和Xenomai是实时扩展的例子。通过多种已知的API从其他的RTOS (在Xenomai,此功能被称为“skins”),一些实时层输出其功能 。

Linux系统提供了丰富的应用,可以很容易地集成到一个嵌入式应用程序,如Web服务器,协议栈,数据库引擎,图形库和网络管理。这些功能可以添加到任何嵌入式应用,而不需要“从草图”开发。随着Linux的先进I/O子系统的出现,和全面支持的非易失存储技术(从闪存到SATA硬盘) ,甚至可以集成“大”的应用(如在NAS应用中,跟踪照片的数据库应用)。

广泛使用的操作系统技术,例如Linux,其中一个最大的好处是在互联网上可获取大量的可用信息,有许多专业设计公司可以提供专业服务。虽然源代码的许可证是免费的,Linux的复杂性和大小会压垮许多用户。在这种情况下,专门设计公司,如Theobroma Systems可提供专业支持,培训和总承包设计服务。重要的是要记住,“开放源代码组织”并不能给你提供工业质量的支持,只有有经验的工程人员才行。

使用FPGA解决方案时,有与大型操作系统如Linux相关的性能和响应时间方面的问题,可以用硬件实现。在这种情况下,操作系统功能作为一种资源监管,大部分关键时间工作用硬件来完成。这个方法的一个例子是在UART内利用一个大的FIFO,以减少至操作系统 的中断次数。当然,此方法有一定的局限性和复杂性,但与一个专用的CPU芯片相比,有更多的灵活性。

另一方案:使用可编程逻辑

FPGA为系统设计者提供了一系列的权衡选择,这是现有的ASIC/ASSP解决方案无法提供的。正如图1所示 ,当一个处理器集成至FPGA时,设计者可以各种方式实现功能例如:

* 软件控制硬件

* 仅软件

* 软件功能,控制或数据流,通过硬件加速(SW/HW)

* 仅硬件,与CPU没有直接的互动,但是硬件可与任何功能进行交互。


图1 FPGA中的多种选择

使用提供这些权衡的可编程逻辑解决方案,SoC设计者有控制结构的多种选择。相反,控制结构的选择涉及到如何实现所需的功能。

一个简单的便携式媒体播放器示范了操作系统如何控制硬件,以及如何使用一个FPGA提供一系列改善硬件/软件的权衡选择。图2从硬件的角度展示了播放器的功能。所需硬件的数量在很大程度上取决于所期望的系统响应。有了RTOS,许多硬件模块可以比在Linux应用中简单得多。总而言之,FPGA的可编程逻辑为任何操作系统提供硬件权衡选择。


图2 从硬件角度观察便携式媒体播放器

设计者在系统中用什么附加硬件,和如何用附加硬件有更多的灵活性,这可以从软件的角度来观察,如图3所示。

一个键盘扫描器或许可以作为RTOS任务来执行,也作为硬件通过Linux任务来访问。事实上,用硬件实现的键盘扫描器在系统中是隐藏的,因为它被包装在一个任务中。其优点是大大减少了对操作系统的中断。轻松地权衡添加硬件或者使用软件为系统设计师带来了一种新的灵活性。


图3 从软件角度观察相同的便携式媒体播放器

与FPGA相关的操作系统选择

基于FPGA的应用引入了一个将时间紧迫任务用硬件实现的重要方法,使选择操作系统在时间约束方面得到缓解,参见图4。这张图显示了本文中讨论过的各种选择的响应范围。因为它是可编程逻辑,FPGA为设计者提供了精细的增量控制执行。因为它是硬件,它对实时事件的响应极快。如图所示,该响应可用于扩大服务范围,甚至更大的操作系统。


图4 响应范围

结论

用可编程逻辑的SoC平台的设计,如FPGA芯片里的LatticeMico32,给系统设计师提供了难得的机会,因为他们可以选择自己喜欢的硬件支持和轻载功能。这使得系统设计师通过转移软件到FPGA中执行数据路径,来满足时间上的限制。这一做法改变了对操作系统的标准选择判据,使得在实时操作系统和通用操作系统解决方案之间有更灵活的选择。虽然商业实时操作系统在确定中断响应方面仍然有其优势,但通过使用FPGA中实现的减负引擎后,通用操作系统的解决方案(如Linux )可能成为适合于较大的应用领域。“软实时”的解决方案,如RT Linux或Xenomai,这时就显得不那么理想了,因为使用减负引擎可以提供更好的响应而没有额外的工程费用。



来源:可可0次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

双核A55芯片,接口丰富,全面兼容树莓派的扩展模块。瑞米派支持五种系统,兼顾学习开发和项目产品需要。软件提供五种软件系统分别为:基于Yocto 构建的两种系统,一种是支持通用功能的精简型系统,另一种是带有QT和丰富lin...

关键字: 瑞米派 Linux 操作系统

本文主要介绍M33核的两种工程调试开发,第一种方式是通过板子自带的固件进行开发,第二种方式是使用 IAR Embedded Workbench 来构建可移植的Freertos文件进行开发。

关键字: 开发板 处理器

7月1日消息,非常意外,龙芯中科最新的龙芯3A6000处理器已经低调出现在了美国市场上,阿里速卖通上已有商家在销售各种主板、套装、整机,两套平台款,都有丰富的配置,价格不一。

关键字: 龙芯3A6000 芯片 处理器

在FPGA上实现AXI总线与DDR3 SDRAM的读写通常涉及几个关键步骤,包括配置DDR3控制器、编写AXI接口逻辑以及编写测试程序或主应用以读写DDR3内存。下面我将提供一个简化的概述和示例代码框架,但请注意,具体的...

关键字: FPGA DDR3

FPGA(现场可编程门阵列)中的一段式状态机(也称为简单状态机或单进程状态机)通常用于描述具有有限数量状态的系统行为。这种状态机通常包括一个状态寄存器、一个输入信号、一个输出信号以及用于状态转换的逻辑。

关键字: FPGA 一段式状态机

随机数是专门的随机试验的结果,产生随机数有多种不同的方法。这些方法被称为随机数生成器。随机数最重要的特性是它在产生时后面的那个数与前面的那个数毫无关系。随机数分为三类,分别是伪随机数、密码学安全的伪随机数以及真随机数。

关键字: FPGA 伪随机数发生

随着现代电子技术的飞速发展,现场可编程门阵列(FPGA)因其高度的灵活性和可重配置性,在多个领域得到了广泛应用。其中,Flash型FPGA以其独特的数据存储方式,在保持高集成度的同时,提供了更为稳定的性能。然而,Flas...

关键字: FPGA Flash

脉冲神经网络(Spiking Neural Network, SNN)是一种模拟生物神经系统处理信息的计算模型,通过模拟神经元之间的脉冲传递和处理过程,展现出强大的学习和识别能力。随着人工智能技术的不断发展,SNN因其独...

关键字: FPGA 脉冲神经网络模型

在数字电路设计和嵌入式系统开发的领域,FPGA(现场可编程门阵列)因其高度的灵活性和可重构性而备受青睐。然而,FPGA开发的复杂性也带来了测试上的挑战。本文将探讨面向FPGA芯片开发的测试方法设计与实现,并附带相关代码示...

关键字: FPGA 数字电路设计 嵌入式系统

在现代电子系统中,FPGA(现场可编程门阵列)由于其高度的灵活性和可重配置性,被广泛应用于各种复杂系统中。然而,FPGA的正确配置和加载是其正常工作的基础。因此,设计一种高效、可靠的FPGA配置加载管理电路显得尤为重要。...

关键字: FPGA 电路管理
关闭
关闭