Цитата(TU-104 @ Apr 15 2016, 08:06)

... дошло да DMA и всё, а там в MII. А там еще физика....
...похоже, что там(всё в том же примере драйвера)...что такое ПДП? ...организовано 4 буфера...
речь идёт о стандарте. т.е. если управление вернулось в вызываемую программу - значит ушло гарантированно. либо ошибка на возврате.
перепишите "драйвер" (с учётом возврата ошибки и синхронизации вызова. если считаете, что вероятность сбоя высока), делоф то...
DMA = пдп (простите, старый советский слэнг в крови)

если присмотритесь как устроено(STM32F4xx), то там выделяются заголовки описательные(которые ставятся в очередь dma) и сами буфера выделенные под это дело.
причём на приёме автоматически разруливается наполнение этих входных буферов поставленных в кольцо. И Вы при анализе выбираете только те, которые обозначены как
уже отработанные. По коду ошибки и состоянию флагов Вы имеете цепочку пакетов с полезными данными(либо один пакет - не суть). Вам требуется
заменить эти буфера - вот именно в этом месте Вам необходимо решать следующие задачи - тупо копировать данные, либо уменьшать объём
буферов на приёме, либо заменять на новые освободившиеся блоки памяти под буфера.
Лично сам тупо заменяю блоки памяти. А беру их из специальной очереди для драйвера. Заполненные буфера - так и уходят на верхний уровень.
т.е. нет операций копирования совсем. А заголовки так и остаются стоять в кольце (после обработки естественно флаги им выставляем правильные).
как то так - давно рисовал, по памяти сейчас изложил.
(круглый)
Сообщение отредактировал kolobok0 - Apr 15 2016, 08:52