ucos-ii用于嵌入式智能视频监控系统中的设计

时间:2011-09-05

  1 系统硬件平台设计

  系统使用的主芯片是ADI公司Blackfin系列DSP中的BF533,这是一款专门面向视频应用的DSP,拥有丰富的外设接口和较好的系统扩展性。本系统利用BF533的PPI接口采集数字图像,利用芯片的EBIU总线,扩展SDRAM和网络芯片。BF533工作在600MHz频率,单个芯片即可完成对运动目标跟踪和网络传输等功能。基于BF533的嵌入式系统的外围电路主要可分为三个部分:图像采集部分,网络传输部分,存储器部分。系统硬件框图如图1:

  图1 系统硬件框图

  图像采集电路部分采用了TI公司的TVP5150A型视频解码芯片,它将NTSC/PAL/SECAM制式的视频信号转换成8bits的ITU-656格式,并按照YCbCr格式以4:2:2的比例转化成数字信号,支持两路模拟输入,解码芯片通过I2C串行接口编程。

  存储器部分BF533的存储结构是统一的4GB寻址空间。同步存储器、异步存储器、外设存储空间和片内存储器全部统一映射在4GB的空间。BF533支持四块连续的异步存储空间,每块空间大小为1MB,地址从0x20000000到0x20400000,由相应的AMS0-AMS3引脚选择使能。本系统使用的是ST公司的M29W系列FLASH,大小1MB。由AMS0片选使能,映射在BF533的块异步存储空间。

  IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。

  国内普遍认同的嵌入式系统定义为:以应用为中心,以计  嵌入式Web技术

  算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

  2 ucos-ii的移植

  ucos-ii是一种具有可剥夺实时内核的实时操作系统,而且是公开源代码、结构小巧。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。内核可编译至2KB,适合小型控制系统。与CPU 硬件相关的部分用汇编语言编写,其他绝大部分代码采用C语言编写。ucos-ii在硬件平台上的移植主要分为两大步骤:ucos-ii中与处理器相关的程序的修改、应用程序的添加。

  我知道在UC/OS-ii的操作系统中有三个文件是关于移植的文件,它们分别是:OS_CPU.H、OS_CPU_A.ASM 、OS_CPU_C.C。OS_CPU.H 头文件定义了数据类型、处理器堆栈数据类型字长、堆栈增长方向、任务切换宏和临界区访问处理。OS_CPU.C用户任务创建时,需要调用 OSTaskStkInit 初始化任务堆栈,任务堆栈用于在发生任务上下文切换时保存被调度的任务寄存器内容。OS_CPU.C 用户任务创建时,需要调用 OSTaskStkInit 初始化任务堆栈,任务堆栈用于在发生任务上下文切换时保存被调度的任务寄存器内容。在谈及OS_CPU_A.S时,我们必选先讨论一下后缀S和ASM。如果我们使用的编译软件环境是IAR那么我们选择的后缀是ASM,文件名格式是OS_CPU_A.ASM。如果使用的是RealView MDK软件环境,那么其后缀应该是S。该文件是关于一些中断的汇编语言

  2.1 ucos-ii与嵌入式监控系统的软硬件架构

  所有的嵌入式操作系统都是与CPU密切相关的,做移植前需要熟悉被移植CPU平台的硬件架构和ucos-ii的运行原理,图2是ucos-ii与本嵌入式监控系统的软硬件架构。

  图2 系统架构图

  2.2 基于BF533的ucos-ii的移植

  移植ucos-ii需要理解处理器及C编译器的技术细节。处理器和编译器满足了ucos-ii的要求,并且已经有了必要工具。移植工作通常包括以下几个内容:

  A 用#define设置一个常量的值(OS_CPU.H);

  B 声明10个数据类型(OS_CPU.H);

  C 用#define声明三个宏(OS_CPU.H);

  D 用C语言编写六个简单的函数(OS_CPU_C.C);

  E 编写四个汇编语言函数(OS_CPU_A.ASM);

  针对不同的CPU平台,移植ucos-ii的过程也会有稍许不同。在本系统中,移植过程大致分为两大部分:1)修改部分文件使ucos-ii与DSP能够实现良好的接口(主要指ucos-ii对DSP硬件架构的支持);2)添加针对嵌入式监控系统硬件平台的初始化及驱动代码。

   2.2.1 针对BF533的ucos-ii的代码修改

   由于BF533是基于MSA(微信号架构)的16位定点DSP,为了能与ucos-ii数据处理单位统一,需要在OS_CPU.H文件中设置BF533的数据单元长度。部分宏定义代码如下:

   typedef bool BOOLEAN;

   typedef signed char INT8S;

   typedef signed short int INT16S;

   typedef signed int INT32S;

  另外在OS_CPU.H文件中还需设置几个堆栈的参数如堆栈的增长方向、堆栈的操作单位等。BF533支持的是自顶向下的堆栈增长方式,即堆栈空间从高地址向低地址增长。这三个函数在ucos-ii中十分重要,前两个是为了保证一些重要函数或任务运行中的数据不会被改变(即通常所说的代码临界段),第三个是用于ucos-ii的任务切换,在ucos-ii中要求任务的切换就好象是刚发生过中断一样。在本系统中首先假设申请切换的任务已经把相关的寄存器变量等参数保存,并将堆栈指针指向了优先级高的任务。这样任务切换函数就只需要完成中断返回操作。

  在文件OS_CPU_A.ASM中还需要编写几个汇编函数来实现ucos-ii的时钟节拍、正常任务切换、中断级任务切换、初始化任务堆栈等功能。

  在ucos-ii中,我们可以把时钟节拍TICKS比做是它的心脏节拍。TICKS为系统提供了一个时间基准并为各个任务提供了时间等待等服务。本系统使用BF533的定时器来完成系统时钟节拍的功能。系统TICKS设定的是100mS。以下是部分初始化定时器的汇编代码:

  _CoreTimerInit:

  p1.H = ( TCNTL 》16 ); //设置时间控制寄存器

  p1.L = ( TCNTL &0xFFFF );

  r3 = 1;

  [ p1 ] = r3;

  p1.H = ( TCOUNT 》16 ); //装载计数值

  p1.L = ( TCOUNT &0xFFFF );

  [ p1 ] = r1;

  p1.H = ( TCNTL 》16 ); //开启定时器

  p1.L = ( TCNTL &0xFFFF );

  r1 = 0x07;

  [ p1 ] = r1;

  _CoreTimerInit.end:

  除增加上述功能函数外,在ucos-ii启动代码的程序中加入BF533的一些必须的初始化程序如CPU频率的设定等, ucos-ii就可以在本系统上运行起来。

  2.2.2 嵌入式监控系统在ucos-ii中的系统驱动程序添加

  ucos-ii移植完成后,嵌入式系统要实现应有的功能还需要添加一些外围电路的驱动程序如:Blackfin系列DSP支持存储空间的DMA操作,为了充分发挥BF533的硬件优势,本系统专门建立一个文件DMA_TRANS.C实现多个存储空间的DMA操作的初始化配置,以方便各个任务实现其功能调用。以下就是实现网卡芯片DMA存储操作的部分配置文件:

  void init_dma(LAN91C111_DATA *d)

  {dev =d; // 为LAN91C11设置一个全局静态变量,实现对它的数据访问

  SET_SHORT((dev->DstStreamBaseAddr+OFFSET_CONFIG),(unsignedshort)0x0);

  // 对目标地址的配置清零

  SET _SHORT((dev->SrcStreamBaseAddr+OFFSET_CONFIG),(unsigned short)0x0);

  //对源地址的配置清零

  dma_mask_en(1); //将SIC控制寄存器的相应DMA传输位置1。}

  2.3 基于ucos-ii和监控系统的任务程序添加

  在ucos-ii中系统的各个应用程序被当成是任务,每个任务被分配一个优先级,ucos-ii支持的任务数可在OS_CFG .H文件中指定。ucos-ii可以管理多达64个任务,并从中保留了四个优先级和四个优先级的任务供自己使用,所以用户可以使用的只有56个任务。因为ucos-ii不支持相同优先级的任务,所以每建立一个任务就需要为任务分配一个优先级并建立一个独立的堆栈空间。

  本智能监控系统主要实现对运动目标的跟踪监控和将原始数字图象转化为BMP格式并向网络发送现场图片的功能。在ucos-ii中分配了两个任务优先级0和1给对运动目标的跟踪和网络传输。本系统在对运动目标跟踪任务中采取的策略是:每当任务完成跟踪,就使自己进入挂起状态,直到每秒定时到后,在时钟节拍中断服务程序中唤醒该任务使之处于就绪状态。

  嵌入式系统常用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,实时响应要求很高,特别是在面向视频应用的系统中。嵌入式操作系统具有体积小、实时性好等优点。嵌入式操作系统ucos-ii就是基于任务优先级抢占的嵌入式实时操作系统。


  
上一篇:Linux下嵌入式开发环境的简单介绍
下一篇:FPGA的DSP功能提高图像处理的实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料