嵌入式微处理器的嵌入式操作系统 - uClinux
时间:09-05
来源:互联网
点击:
序言
在过去的两年中,随着嵌入式设备的发展改进,Linux操作系统受到了越来越多的青睐,尤其是用于消费产品、电讯路由器和交换机、网络产品、工业和汽车等应用。
最近,一些大的消费电子公司达成协作,建立消费者电子Linux论坛(CELF),以进一步开发家庭数字电子设备的Linux平台。CELF的发起者(Matsushita Electric、Sony、Hitachi、NEC、Royal Philips Electronics、Samsung、Sharp和Toshiba)将重点放在Linux的改进上,使之成为消费电子设备的开放源代码平台。同样,他们对开放源代码协会的精神也给予了积极的支持和发扬 。
嵌入式Linux的优点在于它的版权免费、源码开放、结构紧凑,这为日益增长的应用软件基础提供了坚实的后盾。Linux是一个全功能的操作系统,支持各种网络和文件处理协议,这对嵌入式系统来说是很重要的,因为它必须在任何时间任何地点进行计算。Linux采用模块化结构,通过去除嵌入式系统中不必要的实用程序、工具和其它系统服务,它可以很方便地实现结构精简。在嵌入式设备市场中,采用Linux的公司可以更迅速地将产品推向市场,更快地增强产品的可靠性。对开发者来说,AD的Blackfin?处理器和uClinux的结合也许很有吸引力。Blackfin?处理器集合了DSP的计算能力和微控制器的功能,满足了数字音频、视频和通信方面的应用需求。
我们在单块芯片上结合一流的DSP内核和传统微控制器的体系结构,避免了其它传统复合处理器系统的限制性、复杂性和高成本的问题。在已有的外部设备(SPI、带IrDa 功能的UART、定时器、实时时钟(RTC)、看门狗(watchdog)和事件控制器(event controller))的基础上,所有Blackfin处理器家族提供双通道串行接口(SPORTs)---每个串行接口支持4个立体声I2S通道,数据速率达100 MBits/s。而且Blackfin处理器家族的最新成员(ADSP-BF531、ADSP-BF532、ADSP-BF533和ADSP-BF561) 提供并行外部接口(PPI),实现TFT平板显示器和视频转换器(CCIR-656, 27 MHz)的无缝连接,或者作为AD/DA转换器的并行接口,速率达65MSPS。
其它封装也是可选
所有的Blackfin处理器都艺术地将最先进的信号处理引擎和清晰正交的类RISC微处理器指令集以及支持SIMD单指令多数据的多媒体功能复合成一套单指令集的结构,称之为微信号结构(MSA)。该内核是调整的双-MAC Harvard 结构,这种结构旨在实现音频和视频算法的非并行计算,以及实现操作系统中标准的程序流和常用的仲裁操作。
Blackfin 的ADSP-BF531/BF532/BF533处理器有两个大的片内存储器块,提供通往内核的高速通道。这些内存块可以适应处理器内核的最高速度。它们位于内核的旁边,称为L1存储器,可以配置为数据或指令静态处理器(SRAM)或高速缓冲存储器。当配置为高速缓存时,处理外部SDRAM的代码的速度非常接近内部存储器直接处理的速度。这个特征特别适用于uClinux内核的运行,因为它没办法被全部装入内部存储器。而且,当使用c语言编程时,可以通过使用高速缓存来最大优化外部存储器到内核之间的存取。
Blackfin处理器采用低电压,低功耗的设计,具备动态电源管理功能。完全满足目前的移动和电池供电需求,其它的处理器都无法做到这一点。Blackfin处理器配有多重的、高度灵活和独立的直接存取控制器(DMA),用来支持自动数据传输,并使处理器内核受到的间接影响达到最小。
DMA 的传输操作可以发生在ADSP-BF531/BF532/BF533处理器的内部存储器到与有DMA能力的外部设备之间。而且,DMA传输也能够在DMA外部设备和连接到外部存储器接口的外部设备(包括SDRAM控制器和异步存储控制器)之间进行。
Linux和uClinux的区别
由于Linux和UNIX相似,是多用户、多任务的操作系统,内核必须采取特殊的防范措施,以保证同一系统内来自不同用户的上千个操作正确安全地运行。UNIX的安全模型(即Linux之前的设计)能够保护每个用户操作的自身环境和地址空间。每个用户操作都受到保护,防止被其它用户唤醒,而且,虚拟内存(VM)系统对现代CPU还有另外的要求,比如在个人处理内存中实现动态内存分配和随机内存区域规划。有一些设备,如Blackfin 处理器,没有提供全功能的MMU内存管理单元,因为开发者的应用程序并不使用操作系统,通常也不需要MMU,而且,Blackfin的弱MMU的处理器往往具有更高的效率,其价格也明显低于其它产品。
为使Linux与这些设备相适应,必须进行一些改动:
1. 没有实际的存储器保护(一个错误的环节可以让整个系统停机)
2. 没有交叉(fork)系统调用
3. 只有简单的内存分配
4. 其它一些较小的区别
存储器保护对大多数嵌入式系统来说不是很大的问题。Linux是一个很稳定的平台,尤其是在嵌入式系统中,软件崩溃的情况很少发生。第二点的问题要大一些。在为UNIX和Linux编写的软件中,开发者常常使用fork系统调用来实现并行处理,fork调用可以准确拷贝原始程序并同时予以执行。为了提高效率,它使用MMU将父程序映射到子程序,并只拷贝写入子程序的内存区。因此uClinux不能提供fork系统调用。它提供vfork,一种特殊版本的fork,在vfork程序中当子程序执行时父程序即会终止。
因此,使用fork系统的软件在使用uClinux支持的vfork或线程时必须重写,因为他们使用相同的内存空间,包括堆栈。就第三点来说,一般情况下支持uClinux的malloc系统不会有问题,但是,有些时候必须进行小的调整。大部分适用于UNIX和uClinux的软件能够直接在uClinux上编译,其它的则可使用微小的移植或调整(tweaking)。只有很少的应用软件不能在uClinux上运行,其中大部分不能作为嵌入式应用软件。
在过去的两年中,随着嵌入式设备的发展改进,Linux操作系统受到了越来越多的青睐,尤其是用于消费产品、电讯路由器和交换机、网络产品、工业和汽车等应用。
最近,一些大的消费电子公司达成协作,建立消费者电子Linux论坛(CELF),以进一步开发家庭数字电子设备的Linux平台。CELF的发起者(Matsushita Electric、Sony、Hitachi、NEC、Royal Philips Electronics、Samsung、Sharp和Toshiba)将重点放在Linux的改进上,使之成为消费电子设备的开放源代码平台。同样,他们对开放源代码协会的精神也给予了积极的支持和发扬 。
嵌入式Linux的优点在于它的版权免费、源码开放、结构紧凑,这为日益增长的应用软件基础提供了坚实的后盾。Linux是一个全功能的操作系统,支持各种网络和文件处理协议,这对嵌入式系统来说是很重要的,因为它必须在任何时间任何地点进行计算。Linux采用模块化结构,通过去除嵌入式系统中不必要的实用程序、工具和其它系统服务,它可以很方便地实现结构精简。在嵌入式设备市场中,采用Linux的公司可以更迅速地将产品推向市场,更快地增强产品的可靠性。对开发者来说,AD的Blackfin?处理器和uClinux的结合也许很有吸引力。Blackfin?处理器集合了DSP的计算能力和微控制器的功能,满足了数字音频、视频和通信方面的应用需求。
我们在单块芯片上结合一流的DSP内核和传统微控制器的体系结构,避免了其它传统复合处理器系统的限制性、复杂性和高成本的问题。在已有的外部设备(SPI、带IrDa 功能的UART、定时器、实时时钟(RTC)、看门狗(watchdog)和事件控制器(event controller))的基础上,所有Blackfin处理器家族提供双通道串行接口(SPORTs)---每个串行接口支持4个立体声I2S通道,数据速率达100 MBits/s。而且Blackfin处理器家族的最新成员(ADSP-BF531、ADSP-BF532、ADSP-BF533和ADSP-BF561) 提供并行外部接口(PPI),实现TFT平板显示器和视频转换器(CCIR-656, 27 MHz)的无缝连接,或者作为AD/DA转换器的并行接口,速率达65MSPS。
其它封装也是可选
所有的Blackfin处理器都艺术地将最先进的信号处理引擎和清晰正交的类RISC微处理器指令集以及支持SIMD单指令多数据的多媒体功能复合成一套单指令集的结构,称之为微信号结构(MSA)。该内核是调整的双-MAC Harvard 结构,这种结构旨在实现音频和视频算法的非并行计算,以及实现操作系统中标准的程序流和常用的仲裁操作。
Blackfin 的ADSP-BF531/BF532/BF533处理器有两个大的片内存储器块,提供通往内核的高速通道。这些内存块可以适应处理器内核的最高速度。它们位于内核的旁边,称为L1存储器,可以配置为数据或指令静态处理器(SRAM)或高速缓冲存储器。当配置为高速缓存时,处理外部SDRAM的代码的速度非常接近内部存储器直接处理的速度。这个特征特别适用于uClinux内核的运行,因为它没办法被全部装入内部存储器。而且,当使用c语言编程时,可以通过使用高速缓存来最大优化外部存储器到内核之间的存取。
Blackfin处理器采用低电压,低功耗的设计,具备动态电源管理功能。完全满足目前的移动和电池供电需求,其它的处理器都无法做到这一点。Blackfin处理器配有多重的、高度灵活和独立的直接存取控制器(DMA),用来支持自动数据传输,并使处理器内核受到的间接影响达到最小。
DMA 的传输操作可以发生在ADSP-BF531/BF532/BF533处理器的内部存储器到与有DMA能力的外部设备之间。而且,DMA传输也能够在DMA外部设备和连接到外部存储器接口的外部设备(包括SDRAM控制器和异步存储控制器)之间进行。
Linux和uClinux的区别
由于Linux和UNIX相似,是多用户、多任务的操作系统,内核必须采取特殊的防范措施,以保证同一系统内来自不同用户的上千个操作正确安全地运行。UNIX的安全模型(即Linux之前的设计)能够保护每个用户操作的自身环境和地址空间。每个用户操作都受到保护,防止被其它用户唤醒,而且,虚拟内存(VM)系统对现代CPU还有另外的要求,比如在个人处理内存中实现动态内存分配和随机内存区域规划。有一些设备,如Blackfin 处理器,没有提供全功能的MMU内存管理单元,因为开发者的应用程序并不使用操作系统,通常也不需要MMU,而且,Blackfin的弱MMU的处理器往往具有更高的效率,其价格也明显低于其它产品。
为使Linux与这些设备相适应,必须进行一些改动:
1. 没有实际的存储器保护(一个错误的环节可以让整个系统停机)
2. 没有交叉(fork)系统调用
3. 只有简单的内存分配
4. 其它一些较小的区别
存储器保护对大多数嵌入式系统来说不是很大的问题。Linux是一个很稳定的平台,尤其是在嵌入式系统中,软件崩溃的情况很少发生。第二点的问题要大一些。在为UNIX和Linux编写的软件中,开发者常常使用fork系统调用来实现并行处理,fork调用可以准确拷贝原始程序并同时予以执行。为了提高效率,它使用MMU将父程序映射到子程序,并只拷贝写入子程序的内存区。因此uClinux不能提供fork系统调用。它提供vfork,一种特殊版本的fork,在vfork程序中当子程序执行时父程序即会终止。
因此,使用fork系统的软件在使用uClinux支持的vfork或线程时必须重写,因为他们使用相同的内存空间,包括堆栈。就第三点来说,一般情况下支持uClinux的malloc系统不会有问题,但是,有些时候必须进行小的调整。大部分适用于UNIX和uClinux的软件能够直接在uClinux上编译,其它的则可使用微小的移植或调整(tweaking)。只有很少的应用软件不能在uClinux上运行,其中大部分不能作为嵌入式应用软件。
嵌入式 Linux 电子 uClinux DSP 看门狗 显示器 电压 电源管理 相关文章:
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)