В мануале акцент сделан на то, что можно адресовать две несмежных области памяти, предположительно для того чтобы принимаемые пакеты сразу укладывались как в фильме Веном: "бошки в одну сторону, тела в другую". Сомнительный функционал. Жопой чую, этому должно быть какое-то особое применение.
ethernet descriptors stm32h7
ethernet descriptors stm32h7
Вопрос наверное риторический: для чего дескрипторам два буфера?
В мануале акцент сделан на то, что можно адресовать две несмежных области памяти, предположительно для того чтобы принимаемые пакеты сразу укладывались как в фильме Веном: "бошки в одну сторону, тела в другую". Сомнительный функционал. Жопой чую, этому должно быть какое-то особое применение.
В мануале акцент сделан на то, что можно адресовать две несмежных области памяти, предположительно для того чтобы принимаемые пакеты сразу укладывались как в фильме Веном: "бошки в одну сторону, тела в другую". Сомнительный функционал. Жопой чую, этому должно быть какое-то особое применение.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: ethernet descriptors stm32h7
Не знаю есть ли специфика именно Эзернета, но обычно двойная буферизация используется чтобы пока железо складывало "бошки в одну сторону", софт мог спокойно ковырять "тела с другой стороны", не боясь, что пока он этим занимается, ему какое-нибудь "тело" "башкой" подменят.
И в обратную сторону: софт заполняет один буфер на передачу, говорит "буфер готов, передавай" и, пока железо передает, заполняет второй.
И в обратную сторону: софт заполняет один буфер на передачу, говорит "буфер готов, передавай" и, пока железо передает, заполняет второй.
Re: ethernet descriptors stm32h7
[uquote="danone78",url="/forum/viewtopic.php?p=4564654#p4564654"]Вопрос наверное риторический: для чего дескрипторам два буфера?
В мануале акцент сделан на то, что можно адресовать две несмежных области памяти, предположительно для того чтобы принимаемые пакеты сразу укладывались[/uquote]Так и есть. Очень удобная и нужная функция если нужно что-то передавать или принимать быстро и большим потоком через какой-то протокол типа TCP или UDP.
Если например устройство что-то измеряет в потоковом режиме, то в ОЗУ эти данные из АЦП пишутся в кольцевой буфер. И нужно этот поток из кольцевого буфера передавать наружу например через TCP или UDP. С опцией передачи из двух несмежных областей памяти, можно первым сегментом передавать заголовок (IP, TCP или UDP), а вторым - тело данных (очередной кусок из кольцевого буфера). Без всяких копирований. Без этого пришлось бы копировать, тратить на это такты CPU и тратить дополнительно ОЗУ.
Вроде как это само собой очевидное предназначение. Хорошо, что STM32 наконец-то додумалась до такого. В других МК эта опция имеется уже давным-давно. Но лучше поздно, чем никогда.
В мануале акцент сделан на то, что можно адресовать две несмежных области памяти, предположительно для того чтобы принимаемые пакеты сразу укладывались[/uquote]Так и есть. Очень удобная и нужная функция если нужно что-то передавать или принимать быстро и большим потоком через какой-то протокол типа TCP или UDP.
Если например устройство что-то измеряет в потоковом режиме, то в ОЗУ эти данные из АЦП пишутся в кольцевой буфер. И нужно этот поток из кольцевого буфера передавать наружу например через TCP или UDP. С опцией передачи из двух несмежных областей памяти, можно первым сегментом передавать заголовок (IP, TCP или UDP), а вторым - тело данных (очередной кусок из кольцевого буфера). Без всяких копирований. Без этого пришлось бы копировать, тратить на это такты CPU и тратить дополнительно ОЗУ.
Вроде как это само собой очевидное предназначение. Хорошо, что STM32 наконец-то додумалась до такого. В других МК эта опция имеется уже давным-давно. Но лучше поздно, чем никогда.
Re: ethernet descriptors stm32h7
Еще это может быть удобно при отправке повторяющихся шаблонов.