|
Нет прерываний от модуля Ethernet. |
|
|
|
Oct 8 2013, 08:55
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Продолжение работы, которая обсуждалась здесьДемо плата SK-MLPC2478, приложение EMAC. Отдельный вход Ethernet для этой платы. Формирую ARP запрос, по WireShark вижу, что сообщение в PC приходит и формируется ответ, но прерывания в ARM-е, по приходу данных, нет, прерывания возникают только по отправке данных, данные отправлены, буфер пуст. Где, что посмотреть, проверить почему нет прерываний?
|
|
|
|
|
 |
Ответов
|
Oct 11 2013, 09:58
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(Oleg_IT @ Oct 11 2013, 13:25)  Потому и нужны какие-то дефайны, по которым определяется нужно делать swap или нет. Тут ещё сложность не только в порядке байт, но и в порядке бит в битовых полях. нет... Big и Litlle меняет только порядок байт. Битовые поля не могу разворачиваться. Возможно среда ставить какой то дефайн при выборе байт ордера, только вопрос, а вам то оно зачем? Вы пишите универсальный модуль или просто все время забываете какой порядок вы используете  ? Если модуль универсальный - то сделайте свой дефайн, в случае которого вы переводите все в Big, а по умолчанию делайте в Little как более популярном... П.С. повернутый порядок бит - это очень странно, у вас нет никаких рукописных UART на пути следования данных, потому что только они имеют тенденцию биты поворачивать. Если нет, остается проверить стандарты езернет, нет ли какого флажка в заголовках по этому поводу, но очень маловероятно, так как даже этот флажок фиг найдешь если он все время в разных местах... Вообщем про поворот порядка бит я озадачен...
|
|
|
|
|
Oct 11 2013, 10:29
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Цитата(Golikov A. @ Oct 11 2013, 13:58)  нет... Big и Litlle меняет только порядок байт. Битовые поля не могу разворачиваться. Возможно среда ставить какой то дефайн при выборе байт ордера, только вопрос, а вам то оно зачем? Вы пишите универсальный модуль или просто все время забываете какой порядок вы используете  ? Если модуль универсальный - то сделайте свой дефайн, в случае которого вы переводите все в Big, а по умолчанию делайте в Little как более популярном... П.С. повернутый порядок бит - это очень странно, у вас нет никаких рукописных UART на пути следования данных, потому что только они имеют тенденцию биты поворачивать. Если нет, остается проверить стандарты езернет, нет ли какого флажка в заголовках по этому поводу, но очень маловероятно, так как даже этот флажок фиг найдешь если он все время в разных местах... Вообщем про поворот порядка бит я озадачен... Я теже озадачен, но по факту так Код typedef struct TCP_Head_tag { uint16_t SRC_Port; // Порт отправителя uint16_t DST_Port; // Порт получателя uint32_t SeqNum; // Sequence Number uint32_t AckNum; // Acknowledgment Number union { struct { uint16_t FIN : 1; // No more data from sender uint16_t SYN : 1; // Synchronize sequence numbers uint16_t RST : 1; // Reset the connection uint16_t PSH : 1; // Push Function uint16_t ACK : 1; // Acknowledgment field significant uint16_t URG : 1; // Urgent Pointer field significant uint16_t Res1 : 6; //: 4; // Reserved - 0 uint16_t DOff : 4; // Data Offset - 5 }; uint16_t L1; }; /* union { struct { uint16_t DOff : 4; // Data Offset - 5 uint16_t Res1 : 6; //: 4; // Reserved - 0 uint16_t URG : 1; // Urgent Pointer field significant uint16_t ACK : 1; // Acknowledgment field significant uint16_t PSH : 1; // Push Function uint16_t RST : 1; // Reset the connection uint16_t SYN : 1; // Synchronize sequence numbers uint16_t FIN : 1; // No more data from sender }; uint16_t L1; }; */ uint16_t Window; // Window - - uint16_t Checksum; // Checksum uint16_t UrgPoint; // Urgent Pointer } TCP_Head; Закомментированное по стандарту, а рабочее, что бы на стороне PC все правильно воспринималось, не закомментированное. И ещё swap на L1 нужен. Может я в чём-то ошибаюсь. Поправьте.
|
|
|
|
|
Oct 12 2013, 11:05
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(Oleg_IT @ Oct 11 2013, 15:29)  Закомментированное по стандарту, а рабочее, что бы на стороне PC все правильно воспринималось, не закомментированное. Расположение битовых полей в объединении определяется реализацией компилятора. Вы уверены, что ваш компилятор располагает битовые поля именно в порядке от старшего бита к младшему (как у Вас в закомментаренном фрагменте), а не наоборот (как в раскомментаренном)? И, надеюсь, Вы понимаете, что из-за того что Вы закладываетесь на определенную реализацию компилятора, Ваш код становится непереносимым?
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Oct 14 2013, 05:58
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Цитата(alx2 @ Oct 12 2013, 15:05)  Расположение битовых полей в объединении определяется реализацией компилятора. Вы уверены, что ваш компилятор располагает битовые поля именно в порядке от старшего бита к младшему (как у Вас в закомментаренном фрагменте), а не наоборот (как в раскомментаренном)?
И, надеюсь, Вы понимаете, что из-за того что Вы закладываетесь на определенную реализацию компилятора, Ваш код становится непереносимым? Догадываюсь, потому и хочу разграничить версии соответствующими дефайнами. Цитата(Golikov A. @ Oct 11 2013, 15:42)  union { struct { uint16_t FIN : 1; // No more data from sender uint16_t SYN : 1; // Synchronize sequence numbers uint16_t RST : 1; // Reset the connection uint16_t PSH : 1; // Push Function uint16_t ACK : 1; // Acknowledgment field significant uint16_t URG : 1; // Urgent Pointer field significant uint16_t Res1 : 6; //: 4; // Reserved - 0 uint16_t DOff : 4; // Data Offset - 5 }; uint16_t L1; };
Л1 - 16 бит это че? Сразу после флагов же окно идет uint16_t Window; а у вас оно идет через какие то 16 бит Л1. Плюс еще вопрос как структура с 1 битными полями в памяти раскладывается... Выравнивание может сыграть злую шутку... Так это же юнион, struct и L1 это два инени оного и того же куска пямяти размером два байта. А про выравнивание я не сказал, пользуюсь Код #pragma push #pragma pack(1) …………………… #pragma pop
|
|
|
|
Сообщений в этой теме
Oleg_IT Нет прерываний от модуля Ethernet. Oct 8 2013, 08:55 Golikov A. мак адрес в емаке есть? задали? правильный? Oct 8 2013, 09:14 Oleg_IT Цитата(Golikov A. @ Oct 8 2013, 13:14) ма... Oct 8 2013, 11:14 сарматъ а айпи адреса правильно обрабатываются?маска сети ... Oct 8 2013, 13:12 Oleg_IT Маска 255.255.0.0. Попробывал другие варианты прер... Oct 9 2013, 05:09 сарматъ для начала можно попробывать разрешить прием всех ... Oct 9 2013, 05:29 Oleg_IT Цитата(сарматъ @ Oct 9 2013, 09:29) для н... Oct 9 2013, 06:43 сарматъ для каждого процессора периферия настраивается по ... Oct 9 2013, 07:05 Oleg_IT Цитата(сарматъ @ Oct 9 2013, 11:05) для к... Oct 9 2013, 07:53 Oleg_IT Проблема банальна. При формировании запроса у меня... Oct 9 2013, 11:40 Golikov A. Цитата(Oleg_IT @ Oct 9 2013, 15:40) Пробл... Oct 9 2013, 12:12 Oleg_IT При компиляции можно определить какая система BIG ... Oct 11 2013, 04:14 Golikov A. скорее всего на этапе создания проекта. У некоторы... Oct 11 2013, 07:47 сарматъ Цитата(Golikov A. @ Oct 11 2013, 11:47) д... Oct 11 2013, 07:48 Golikov A. потому для чего этот формат придумали
к примеру
К... Oct 11 2013, 09:07 сарматъ понял спасибо Oct 11 2013, 09:18 Golikov A. меня немного беспокоит слово заголовка в котором л... Oct 11 2013, 10:53 Oleg_IT По количеству бит там всё правильно 4 длина+6 пуст... Oct 11 2013, 11:11 Golikov A. union {
struct {
uint16_t FIN ... Oct 11 2013, 11:42 Golikov A. ИМХО лучше сделать поле 16 бит,
и дефайны с флага... Oct 14 2013, 18:43 Oleg_IT Цитата(Golikov A. @ Oct 14 2013, 22:43) И... Oct 15 2013, 04:41 Golikov A. да тут вроде как мы все ходим вокруг одного и того... Oct 15 2013, 06:24 Oleg_IT Я вас сходу по флажкам не понял. Переделал, работа... Oct 15 2013, 08:32 Oleg_IT Цитата(Oleg_IT @ Oct 15 2013, 12:32) Я ва... Oct 16 2013, 11:12  alx2 Цитата(Oleg_IT @ Oct 16 2013, 16:12) Пото... Oct 17 2013, 07:25   Oleg_IT Цитата(alx2 @ Oct 17 2013, 11:25) Что так... Oct 17 2013, 08:18    Golikov A. Цитата(Oleg_IT @ Oct 17 2013, 12:18) Пров... Oct 17 2013, 17:42 Golikov A. во всех системах Big Enadian не нужен
во всех сист... Oct 15 2013, 11:16 Oleg_IT Самому определять это понятно, а в компиляторе так... Oct 15 2013, 12:33 mdmitry Цитата(Oleg_IT @ Oct 15 2013, 16:33) Само... Oct 15 2013, 13:29 DmitryM Цитата(Oleg_IT @ Oct 15 2013, 16:33) Само... Oct 15 2013, 13:36 Oleg_IT Спасибо Oct 15 2013, 16:26 Dron_Gus http://www.opennet.ru/man.shtml?topic=hton...3... Oct 16 2013, 13:57 Oleg_IT Цитата(Dron_Gus @ Oct 16 2013, 17:57) htt... Oct 16 2013, 18:13 Oleg_IT Так ни битовые поля, ни работа с флагами задачу не... Oct 18 2013, 05:20 alx2 Цитата(Oleg_IT @ Oct 18 2013, 10:20) Так ... Oct 18 2013, 11:40 Golikov A. что - то я видать не понимаю.
Я утверждаю что во ... Oct 18 2013, 06:34 Oleg_IT По факту получается не так, и порядок байт и поряд... Oct 18 2013, 06:56 Golikov A. да.
порядок байт в интернете биг ендиан.
порядок ... Oct 18 2013, 10:18 Oleg_IT Кажется начинаю понимать обстановку. Без дефайнов ... Oct 18 2013, 12:42 Golikov A. нет там такого поля 13 бит
есть поле 16 бит, и 3 б... Oct 18 2013, 20:50 alx2 Цитата(Golikov A. @ Oct 19 2013, 01:50) а... Oct 19 2013, 12:55 Oleg_IT Цитата(Golikov A. @ Oct 19 2013, 00:50) н... Oct 19 2013, 18:22  Golikov A. Цитата(Oleg_IT @ Oct 19 2013, 22:22) Не п... Oct 20 2013, 05:06   Oleg_IT Цитата(Golikov A. @ Oct 20 2013, 09:06) Д... Oct 20 2013, 09:14 Golikov A. ну как минимум вам мешают 2 вещи
1. это htonl/ntoh... Oct 20 2013, 11:40
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|