ARM9硬件协处理器在WinCE嵌入式主板上的应用
///////////////////////////////////
// 注意:在进行数组运算时,请确保数组source1、数组source2和数组result为长度为nlen的等长数组。如果不满足此条件,运算结果是不可预知的。
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// 功能描述:数组source1与数组source2对应相加,结果保存在数组result对应位置处。
// 即:
// 输入参数:数组source1的地址,数组source2的地址,nlen数组长度
// 输出参数:数组result的地址
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void em_arrayadd(float *source1, float *source2,float *result,int nlen);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// 功能描述:数组source1与数组source2对应相减,结果保存在数组result对应位置处。
// 即:
// 输入参数:数组source1的地址,数组source2的地址,nlen数组长度
// 输出参数:数组result
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void em_arraysub(float *source1, float *source2, float *result, int nlen);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// 功能描述:数组source1与数组source2对应相乘,结果保存在数组result对应位置处。
// 即:
// 输入参数:数组source1的地址,数组source2的地址,nlen数组长度
// 输出参数:数组result
///////////////////////////////////////////////////////////////////////////////////////////////////////////
void em_arraymult(float *source1,float *source2,float *result,int nLen);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// 功能描述:数组source1与数组source2对应相乘并相加的和。
// 即:
// 输入参数:数组source1的地址,数组source2的地址,nlen数组长度
// 返回值 :返回 数组source1与数组source2对应相乘并相加的和。
///////////////////////////////////////////////////////////////////////////////////////////////////////////
float em_arraymultadd(float *source1,float *source2, int nlen);
使用方法:
1、把em9000_crunch.lib和crunch.h文件拷贝到EVC或者VS工程目录下,并在程序中包含crunch.h头文件。
2、选择 project—>setting出现下图所示窗口,把em9000_crunch.lib添加到如下图所示的位置。在程序中调用以上函数就可以了。

测试方法:
1、建立基于EM9000嵌入式主板开发环境,使开发板能够与EVC联合调试。具体步骤请参看英创公司提供的开发光盘。
2、建立基于EM9000的EVC项目工程。把下列测试代码添加到主函数中:
iStartTime = GetTickCount(); // 运算计时开始
for(n=0;n1000;n++)
arraymultaddresult=arraymultadd(arraya,arrayb,1024); // arraya,arrayb为长度1024的浮点型数组
iEndTime=GetTickCount(); // 函数运行结束
time=iEndTime-iStartTime;
printf('the result of emulator arrayadd is %f arraymultadd elpses time is %d ms\n',arraymultaddresult,time);
iSartTime = GetTickCount();
for(n=0;n1000;n++)
multaddresult=em_arraymultadd(arraya,arrayb,1024);
iEndTime=GetTickCount();
time=iEndTime-iStartTime;
printf('the result of em_arraymultadd is %f em_arraymultadd elpse time is %d ms\n',multaddresult,time);
以上程序,在EM9000嵌入式主板上运行的结果为:
arraymultadd elpses time is 919ms
em_arraymultadd elpses time is 104 ms
由以上的结果可以看出:用英创公司提供的函数,可以显著提高浮点运算速度。
目前英创公司提供的函数主要完成基本的浮点处理,我们将根据客户的需要,不断的完善浮点库的功能,如FIR滤波等。同时客户若需要专用的处理算法,也可与我们联系有关实现专用浮点处理功能的事宜。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
