Добрый день всем.
На демоплате BeMicro (Cyclone IV E) делаю проект работы с Ethernet (UDP).
При использовании проца Nios II /f все нормально работает. Но для этого проца нужна лицензия (которой у меня нет

).
Попробовал перейти в этом же проекте на Nios II /e, при отправке (из платы) пакетов расчитывается кривая CRC для UDP-заголовка. Для самого тела UDP-пакета можно ставить CRC=0, что я и делаю, а вот для заголовка нужна корректная CRC, иначе прога на ПК вообще не принимает пакет.
Код расчета CRC:
Код
unsigned short checksum(void *b, int len)
{
unsigned short *buf = b, result;
unsigned int sum=0;
for ( sum = 0; len > 1; len -= 2 ) /* Sum all 16b words */
{
// printf("*buf = 0x%x\n", *buf);
sum += *buf++;
}
if ( len == 1 )
/* If any stray bytes, */
sum += *(unsigned char*)buf;
/* add to sum */
sum = (sum >> 16) + (sum & 0xFFFF);
/* Add the carry */
sum += (sum >> 16);
/* (again) */
result = ~sum;
/* Take the one's complement */
return result;
/* Return 16b value */
}
В чем может быть секрет?? Кэшей никаких не использую, поэтому переход на Экономный проц должен вроде пройти без проблем, кроме замедления работы.