SD卡配置速度我都已经设置成最大了,CLK_DIV为00
下面的图是DSP从SD卡中读取文件的代码,这个在for循环中,不读到文件末位一直执行for循环。
我测了这个for循环中各个函数的执行时间
f_read(133行)---0x31668,
RC4EnDeCrypt(134行)--0x47068,
把数组buffer(L1空间中4096大小)中数据存放到SDRAM中(136行)--0x1a023。
这个时间RC4EnDeCrypt函数花的最多。我没做过DSP的优化,现在要求的读SD卡然后数据处理再放到SDRAM中时间还是长,我想的是把RC4EnDeCrypt函数用汇编语言来实现,可是这个RC4EnDeCrypt函数我看一共也没几句。
void RC4EnDeCrypt(RC4KEY *rc4, unsigned char *data, long len)
{
ST_INT4 x = rc4->x, y = rc4->y;
ST_INT4 sx, sy;
ST_INT4 *state = &rc4->state[0];
while (len--)
{
x++;
x &= 0xFF;
sx = state[x];
y += sx;
y &= 0xFF;
sy = state[y];
state[y] = sx;
state[x] = sy;
*data++ ^= state[(unsigned char)(sx + sy)];
}
rc4->x = x;
rc4->y = y;
}
这个函数最大的时间消耗是在*data++ ^= state[(unsigned char)(sx + sy)]; 我看的那个profile上中的显示,没编过这个DSP的汇编,这个就是写成汇编这个函数执行能省下时间吗?
「该帖子被 笑溜溜 在 2013-06-25 16:17:08 编辑过」