对于arm系列cpu,int 类型数据的读与写都需要4字节对其,要不然会崩溃滴。。。所以呢,不要把其它类型的数据强制转换成int类型。。
#include<sys/types.h>
#include<assert.h>
#include<stdlib.h>
void * arm_memcpy(void * dest,const void * src,size_t len)
{
unsigned long int index = 0;
unsigned long int div_len = (unsigned long)len/4;
char mod_len = (unsigned long)len%4;
assert((dest != NULL)&&(src != NULL));
if (((unsigned long int)dest % 4 == 0) && ((unsigned long int)src % 4 == 0))
{
for (index=0; index < div_len; index++)
{
((unsigned long int *)dest)[index] = ((unsigned long int *)src)[index];
}
if (mod_len != 0)
{
while ( mod_len-- > 0)
{
((unsigned char *)dest)[index] = ((unsigned char *)src)[index];
index++;
}
}
}
else
{
for(index=0; index < (unsigned long int)len; index++)
{
((unsigned char *)dest)[index] = ((unsigned char *)src)[index];
}
}
return dest;
}