快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ADSP-BF561
uclinux-2008r1.5-rc3 (smp patch)
Visual DSP++ 5.0(update 5)
欢迎转载,但请保留作者信息
欢迎到http://www.bfin-tools.org/bbs/viewthread.php?tid=28&extra=对本文进行讨论。
1.1 裸奔
由于VDSP在编译信号处理相关代码时效率较高,而且用户程序可以控制所有的资源,因而采用这种方法的运行效率最高。当然这种方法的缺点也是显而易见的,它的附加功能较难实现,比如网络功能等。
关于此法,网上有一篇流传甚广的文章《基于ADSP-BF561的H.264视频编码器的实现》(作者:崔海燕,王卿),颇具参考价值。当然这篇文章并没有讨论cache的问题,这是其不足之处。
ADI有一个评估版在其网站上,这大概是裸奔的极致了。可以同时做4路CIF@25fps或者1路D1@22fps。当然这是在只开PPI中断的情况下得到的数据。
1.2 半系统,半裸奔
此法应用甚广,其基本思想是用A核跑uclinux,B核裸奔一个h264的编码器。A核的程序使用GNU Toolchain进行开发,B核的程序可以采用vdsp进行开发,由uclinux在运行时动态加载。
采用这种方法,既可以发挥uclinux系统的好处,又可以兼具VDSP的高效。其技术点主要在于双核之间的同步。
1.3 全系统
目前的uclinux已经具备smp的能力,因此可以只跑一个系统管理两个核,直接在此基础上采用GNU toolchain进行开发,但由于很难使用DMA、L1、L2 SRAM等资源,在先天上就对此算法有所限制。当然由于只需要使用gnu toolchain,其开发难度较低。
1.4 让编码成为内核的一部分
此法开发难度较高,其基本思想是让编码算法做为内核线程来运行,好处是基本可以使用裸奔时用到的所有优化方法,也可以使用所有的系统资源,且可以使用vdsp编译。采用这种方法,可以达到D1 @ 15fps,由此可见uclinux频繁的时钟中断(CONFIG_HZ = 250)对编码算法的影响。