[原创]基于Blankfin平台的实时图形化编程
0赞ADI 公司的Blankfin处理器实时图形化编程主要依靠LabVIEW嵌入式模块编程实现。LabVIEW为高层次编程、图形化调试、图形化多任务处理和确定性的实时行为,提供了一个理想的嵌入式软件平台。面向对象的设计模式有助于进一步控制图形化层次上的复杂度。例如电动机或传感器等主要对象 , 通过Blankfin中表示类的功能性全局变量加以抽象。
LabVIEW 中绘制或操作图像时是以簇的数据形式存储的簇类似于C 语言中的结构体变量。图像处理算法的基础及关键是操作图像像素的指针,以PSNR(峰值信噪比)算法为例,用 VC++定义的主函数的形式是:float GetPsnr(char *s1,char *s2,int width ,int height){
};
而LabVIEW 中没有这样的数据类型指针,所以需通过数据类型转换实现对图像的操作,主要过程如下图所示:
而主要的应用框架由以下多个任务组成:
·顶层主循环对由一个经典状态机表示的动作进行规划 ,而状态机通过软件队列和同步方法 ( 如信号量)与其他循环连接。通信任务保持一个与外部世界的无线数据连接。
视觉任务负责低层次的图像处理和距离读数。
运动控制任务管理高层次的运动模式与低层次的肢体控制 ,并监测电动机的位置与状态。
日常任务充当一个通用错误处理器。检测事件与异常,并将其及时间记录列可移动的存储介质,以供后续读取。
这些循环在协作式多任务环境中以线程的方式同时运行。驱动程序层次上的毫秒级上下文切换和微秒级实时确定性 , 确保了平稳、无故障的移动。 最后, 严格的并行方式要求板卡支持软件包满足每 一个软件组件和设备驱动程序的线程安全性。
通过采用面向Blankfin处理器的 LabVIEW 嵌入式模块所提供的图形化编程环境 ,以及Blankfin处理器的高处理器性能 ,开发周期也大为缩短。
基于Blackfin系列的DSP是功能强大的嵌入式处理系统,在多种领域都有很好的应用前景,在针对更高分辨率和更高帧率的图像处理应用中,大家会渐体会出这种软件的效能。