微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 嵌入式微处理器的嵌入式操作系统 - uClinux

嵌入式微处理器的嵌入式操作系统 - uClinux

时间:09-05 来源:互联网 点击:
在uClinux上开发

在选择开发硬件时,开发者不应只考虑价格和可用性方面,同时也应考虑源代码驱动和文档的易获取性。 一个uClinux Blackfin处理器开发环境包括GNU编译器、(gcc交叉编译器 cross Compiler) 和 binutils (链接器linker、汇编器assembler等)。一些GNU工具诸如awk、sed、make、bash ... 还有plus tcl/tk是必须的,尽管他们通常在桌面linux的安装套件中。 安装好uClinux安装包的桌面环境和解压后,开发工作就可以进行了。

第一步,开发者利用图形配置软件,为目标硬件选择合适的板极支持包。开发者要利用自己的硬件,以便在EZ-KIT Lite评估板或STAMP硬件板上进行开发。然后他们可以开始编写驱动程序,通过拷贝已有的BSP并调整一些参数来制作BSP。

大多数的开发工作包括选择合适的驱动程序,去除项目不需要的内核特征,然后选择特征库和用户程序空间。 uClinux的安装套件中提供广泛的实用程序和电脑程序供选择。他们是根据大小和效率的要求特别设计的,例如busybox(www.busybox.net),一种多重调用二进位,该程序包括一系列小程序,用正确的名字调用它们时就能发挥相应的作用。例如:如果busybox链接到/s(DOS中的目录命令)并包含/s代码,那么它的作用就和/s一样。这样做的优点是busybox节省了唯一二进位的管理费用,并且那些小的模块可以共享相同的代码。

在所有的选项均选取并且正确编译后,可以在VisualD SP++?.的帮助下,将Linux内核和ramdisc图像调到目标硬件中。操作成功后就可进行下一步开发了。

下一步是使用串口或网络激活的bootloader取代JTAG界面来调入。

例如,U-boot (http://blackfin.uclinux.org/projects/uboot/)提供一系列的特征,可以用于嵌入式闪存(flash on-board )存储器设备。对于那些不能承担Analog 在线模拟设备的用户,可以选择低价的JTAG硬件和软件操作(http://blackfin.uclinux.org/projects/jtagtools/)。这可以用来在程序开始时将bootloader装入到目标存储设备之中。但是要注意到该工作环境不能提供VisualDSP++的调试和模拟功能。一旦该内核投入运行,可使用GDB来调试用户应用程序。

下一步是为目标硬件开发特殊应用软件或附加软件端口。

一些开发可使用shell脚本或其他语言如Perl 或Python来完成。当必须使用c语言编程时,linux带有特别的协议和设备驱动支持,能提供强有力的开发环境。下面是从codec中读取数据的一个简单的程序(假设AC97的驱动已经编译到内核中)。

为什么在嵌入式硬件上使用Linux?

尽管Linux最初并不是为嵌入式系统而设计,但是却在很多嵌入式设备中得到应用。自从2.0.x版本内核发布后,Linux版嵌入式处理器得到商业支持以来,带操作系统的嵌入式设备出现了爆炸式的增长。几乎每天都会有使用Linux作为操作系统的新设备或器件出现。大部分情况下终端用户是不知道的。

今天大部分宽带路由器,防火墙,终端读取设备,甚至DVD播放器均使用Linux。

Linux和uClinux提供一系列驱动程序,支持所有的硬件和协议,加上Linux是不收版权费的,所以开发者使用Linux进行开发的原因就很清楚了。

为什么在DSP上使用Linux

过去,DSP被用在在很多应用程序中,包括声卡、调制解调器、电讯设备、医疗设备、军事设备和其他的纯信号处理设备。那些DSP设备一般是为那些应用软件专门设计的,并且因为成本和规模的限制,只具备基本的功能。当DSP变得更加强大和灵活时,就能够为军事,医疗,通讯等领域的用户提供更高级的服务。但是它们仍然缺乏运行高级操作系统的能力。传统的DSP功能强大、灵活,但是价格很高。他们经常用在特别的信号处理硬件上,这里不需要像Linux这样的在DSP上运行的操作系统。因为在那些系统中,DSP从附近的中央处理单元获取数据,只需要将基本的系统软件写入DSP即可。

随着多媒体的日益集中和多媒体及通讯设备的增长,新型的DSP有着巨大的市场。目前在市场中广泛使用的常规处理器和用传统DSP作为辅助处理器。这种情况下,操作系统在主处理器上运行,而信号在DSP上处理。这种类型的双处理器不是很理想,因为其在费用、功耗、和大小上均不是很有效。

uClinux的实时性

由于最初是为服务器和桌面用户而设计,它没有像其他同等规模和复杂性的操作系统一样严格的实时能力。然而Linux特别是uClinux具有软实时能力,这意味着尽管Linux或uClinux不能保证一些中断或调度程序时间,他们同样具有很好的性能特点。如果需要硬实时系统来保证调度程序和中断latency时间,可通过下面方法来实现:使用另外的操作系统,有很多满足要求的RTOS系统可供选择((VisualDSP++ kernel、 Nucleus PLUS、ThreadX、uITRON)。

通过实时内核RT-Linux (http://www.rtlinux.org) 或 RTAI (http://www.rtai.org).来提供实时能力。两种内核均使用小的实时内核,其作为具有低优先级的实时任务运行Linux。那些需要运行在实时内核上的程序则由特别的编码实现。其他的任务和服务在Linux内核上运行,并可使用Linux提供的一切功能。这种方法可保证确定中断等待时间,同时保留Linux的灵活性。

改变Linux的内核可改善硬实时中断的等待时间,Bernhard Kuhn开发了一个Linux内核的补丁,可以在(http://linuxdevices.com/articles/AT6105045931.html)上获取。将来有可能加到uClinux Blackfin的目录结构上。

在很多情况下,硬实时不是必要的,特别是对于多媒体应用程序来说,其时间约束由用户在识别音频或视频中的微小错误的能力来规定。这些可被检测的时间约束要在小达几十毫秒的范围内监测到--这对于像Blackfin处理器这样的高端商业芯片来说不是问题。严格的时间需求可以通过微小调整(tweaking)和调度程序的简单变化来获得。在2.6.x内核中,新的稳定内核已经改进了新的O(1)调度程序和内核抢占权。

很多情况下,有足够的剩余处理能力来保证调度程序有足够的时间来处理通常运行在此类设备上的数字信号程序。 因此,在web servers、snmp、ppp 或pppoe、firewall上使用Perl、Python、和PHP等语言程序是没有问题的,运行程序的同时进行音频和视频解码。

所以,没有必要采用硬实时操作系统,它没有Linux这样功能强大的操作系统所提供的高级特性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top