реклама на сайте
подробности

 
 
> Нет прерываний от модуля Ethernet.
Oleg_IT
сообщение Oct 8 2013, 08:55
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Продолжение работы, которая обсуждалась здесь
Демо плата SK-MLPC2478, приложение EMAC. Отдельный вход Ethernet для этой платы. Формирую ARP запрос, по WireShark вижу, что сообщение в PC приходит и формируется ответ, но прерывания в ARM-е, по приходу данных, нет, прерывания возникают только по отправке данных, данные отправлены, буфер пуст. Где, что посмотреть, проверить почему нет прерываний?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_IT
сообщение Oct 11 2013, 09:25
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Потому и нужны какие-то дефайны, по которым определяется нужно делать swap или нет.
Тут ещё сложность не только в порядке байт, но и в порядке бит в битовых полях.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Oct 11 2013, 09:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(Oleg_IT @ Oct 11 2013, 13:25) *
Потому и нужны какие-то дефайны, по которым определяется нужно делать swap или нет.
Тут ещё сложность не только в порядке байт, но и в порядке бит в битовых полях.


нет... Big и Litlle меняет только порядок байт. Битовые поля не могу разворачиваться. Возможно среда ставить какой то дефайн при выборе байт ордера, только вопрос, а вам то оно зачем? Вы пишите универсальный модуль или просто все время забываете какой порядок вы используетеsm.gif?

Если модуль универсальный - то сделайте свой дефайн, в случае которого вы переводите все в Big, а по умолчанию делайте в Little как более популярном...

П.С. повернутый порядок бит - это очень странно, у вас нет никаких рукописных UART на пути следования данных, потому что только они имеют тенденцию биты поворачивать. Если нет, остается проверить стандарты езернет, нет ли какого флажка в заголовках по этому поводу, но очень маловероятно, так как даже этот флажок фиг найдешь если он все время в разных местах... Вообщем про поворот порядка бит я озадачен...
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Oct 11 2013, 10:29
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(Golikov A. @ Oct 11 2013, 13:58) *
нет... Big и Litlle меняет только порядок байт. Битовые поля не могу разворачиваться. Возможно среда ставить какой то дефайн при выборе байт ордера, только вопрос, а вам то оно зачем? Вы пишите универсальный модуль или просто все время забываете какой порядок вы используетеsm.gif?

Если модуль универсальный - то сделайте свой дефайн, в случае которого вы переводите все в 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 нужен. Может я в чём-то ошибаюсь. Поправьте.
Go to the top of the page
 
+Quote Post
alx2
сообщение Oct 12 2013, 11:05
Сообщение #5


Местный
***

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



Цитата(Oleg_IT @ Oct 11 2013, 15:29) *
Закомментированное по стандарту, а рабочее, что бы на стороне PC все правильно воспринималось, не закомментированное.

Расположение битовых полей в объединении определяется реализацией компилятора. Вы уверены, что ваш компилятор располагает битовые поля именно в порядке от старшего бита к младшему (как у Вас в закомментаренном фрагменте), а не наоборот (как в раскомментаренном)?

И, надеюсь, Вы понимаете, что из-за того что Вы закладываетесь на определенную реализацию компилятора, Ваш код становится непереносимым?


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Oct 14 2013, 05:58
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.02147 секунд с 7
ELECTRONIX ©2004-2016