微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM9硬件协处理器在WinCE嵌入式主板上的应用

ARM9硬件协处理器在WinCE嵌入式主板上的应用

时间:10-08 来源:互联网 点击:

///////////////////////////////////

// 注意:在进行数组运算时,请确保数组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添加到如下图所示的位置。在程序中调用以上函数就可以了。

20081212172622760.jpg
测试方法:

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滤波等。同时客户若需要专用的处理算法,也可与我们联系有关实现专用浮点处理功能的事宜。

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

网站地图

Top