|
Nios II /e vs Nios II /f (проект Ethernet) |
|
|
|
Mar 11 2014, 03:55
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Добрый день всем. На демоплате 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 */ } В чем может быть секрет?? Кэшей никаких не использую, поэтому переход на Экономный проц должен вроде пройти без проблем, кроме замедления работы.
|
|
|
|
|
Mar 12 2014, 01:52
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата считать в плисе ? Вы имеете в виду вынести формирование пакета за пределы НИОСа во внешний модуль ПЛИС, который наберет все нужные данные из НИОСа и сформирует отправной пакет? Это конечно интересно, и не будет зависеть от НИОСа и его типа, НО большая проблема в том, что кристалл забит почти на 90%. Проект компилится несколько часов с несколькими заходами в фиттеровщик. В настройках НИОСа кэш данных отключен, с ним даже Фаст проц чота глючил при формировании пакетов. Могу выложить исходники проекта НИОСа, если будет желание в нем покопаться.
|
|
|
|
|
Mar 12 2014, 03:53
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата Вычисляйте Ниосом только контрольную сумму для одного и того же массива по каждому из вариантов и сравнивайте между собой. В этом то и загвоздка получилась, работа функции расчета CRC корректная, а вот данные для расчета получились неверные при Эконом. процессоре. Очень затрудняет процесс отладки то, что при использовании Эконом. НИОСа нельзя ставить брейкпойнты, и приходится через printf() все контролировать, а это та еще песня. При выдачи больших объемов вывод ч/з LTAG может зависнуть (несколько раз на такое натыкался) в то время как программа уже ускокала далеко вперед.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|