Цитата(Golikov A. @ Jan 20 2015, 20:43)

Вверх присылает данные по TCP первому контроллеру, а тот их дальше гонит по SPI как мастер уже на LPC1768. С верху приходят пакеты от 1 до 513 байт длинной, такими я их и шлю дальше обвешав контрольной суммой и длинной. Разбивка на пакеты потребует ответов о статусе каждого пакета - усложнение трафика. То есть пока не вижу большого бонуса в этом. Разьве только прерывание по окончанию пакета вместо поллинга длинны. А мусорные байты в канале так и остаются мусорными и так же гадят обмен и переполняют буфер...
Если мастеру не нужен ответ на предыдущую посылку, то зачем ждать? Мастер шлёт следующую, а в обратном канале ему возвращается состояние о полученной ранее посылке
(нормально получена или с ошибкой) и на основании этого он решает - повторить с какой-то позиции или гнать дальше. В слове состояния можно хранить например какой-то номер последовательности
для принимаемого потока байт и увеличивать каждый раз на сумму принятых байт при удачном приёме (аналогично номерам последовательности TCP-сокета).
Если как Вы пишете - Вы обвешиваете контрольной суммой и длиной данные, то получается у Вас уже должна быть разбивка на пакеты.
А как Вы её делаете если у Вас пакет не обрамлен CS? В моём способе CS как раз служит для определения границ пакета (стандартно для большинства SPI-микросхем памяти и пр.).
В Вашем случае Вам нужно предпринимать ещё какие-то действия для определения границ пакета (делать канальное кодирование).
У вас передача получается подобно UART, т.е. - байтовый поток. А в таком случае из потока байт нужно выделять пакеты.
А раз Вы вводите контрольную сумму, значит - возможны помехи, значит метод выделения границ пакетов должен быть устойчив к этим помехам.
Тут получается излишнее усложнение на ровном месте.
Цитата(Golikov A. @ Jan 20 2015, 20:43)

В чем преимущество burst? Я понимаю если идут 32 битные данные которые надо разом записывать в память, тут я понимаю смысл burst, а если данные 1 байтные в чем бизнес?
Вы забываете, что шина через которую DMA обменивается с памятью - сильно загруженный ресурс. Её же может в это время интенсивно использовать CPU, исполняя код.
Если-б она была всё время свободна, то не было бы разницы как писать - побайтно или пакетом.
Но она свободна очень редко. Вот в эти то дырки и должен влезть DMA. FIFO в 4 слова в DMA, в 4 раза снижает требования по доступности шины.
И к тому же думаю, что транзакции обмена по шине идут в пакетном режиме (типа как с SDRAM-памятью): вначале - адрес, упр. инфа, потом - неск. слов данных.
И к тому-же DMA должен сперва считать эти данные в своё FIFO по шине, а потом ещё записать (опять по шине) в ОЗУ.