-
- Там ситуация такая. FIFO разбит, допустим, на 2 блока. Один блок
читаю, второй заполняю. Признак, что я полностью прочел блок
имеется. Но признака, что второй блок заполнен отсутствует. То есть
я могу продолжить считывать старые данные. Интересно то, что это не
дефект чипа. Это как-то работает, судя по описанию. Но вот как...
Технического писателя, я бы кастрировал, чтобы предотвратить
появления подобных талантов в будущем. - st256(15.11.2023 22:35)
- Разбивка на блоки произвольная или фиксированная? Как определяется
факт неполного прочтения блока? Признак полного прочтения один на
все блоки или индивидуальный для каждого блока? Как определить,
какой из блоков сейчас пишется, а какой - читать? - Nikolay_Po(15.11.2023 22:43)
- Да произвольная. FIFO там специфическое. Есть область памяти,
которая может быть отдана под FIFO. Есть регистр, который в этой
области показывает на начало, есть который показывает на конец. И
есть, блин, который показывает на размер FIFO. ЗАЧЕМ? Меня это
удручает, так как сие явное излишество. Далее, в области FIFO могу
выделить блок произвольной длины, где хранятся уже принятые данные.
Оставшаяся область, отведенная под FIFO, видимо, заполняется, пока
я обрабатываю блок с st256(263 знак., 15.11.2023 23:03)
- По сути, это похоже на обычную работу с ПДП (DMA). А размер FIFO
может быть нужен как раз для разбивки буфера на блоки (и, возможно,
должен быть строго кратен размеру от мин до макс). Это мои домыслы. Nikolay_Po(158 знак., 15.11.2023 23:14)
- Примеры то есть. Только они на асме и очень большие. Вообще, это я бы и назвал ПДП. Только в документации сие называют FIFO. И не понятно, как ее синхронизировать. Пока, никаких флагов я не вижу. Есть подозрение, что счетчик, когда достиг размера блока, а следующий блок еще не готов, просто не сбрасывается. Вот сейчас проверяю эту гипотезу. - st256(15.11.2023 23:27)
- По сути, это похоже на обычную работу с ПДП (DMA). А размер FIFO
может быть нужен как раз для разбивки буфера на блоки (и, возможно,
должен быть строго кратен размеру от мин до макс). Это мои домыслы. Nikolay_Po(158 знак., 15.11.2023 23:14)
- Да произвольная. FIFO там специфическое. Есть область памяти,
которая может быть отдана под FIFO. Есть регистр, который в этой
области показывает на начало, есть который показывает на конец. И
есть, блин, который показывает на размер FIFO. ЗАЧЕМ? Меня это
удручает, так как сие явное излишество. Далее, в области FIFO могу
выделить блок произвольной длины, где хранятся уже принятые данные.
Оставшаяся область, отведенная под FIFO, видимо, заполняется, пока
я обрабатываю блок с st256(263 знак., 15.11.2023 23:03)
- Разбивка на блоки произвольная или фиксированная? Как определяется
факт неполного прочтения блока? Признак полного прочтения один на
все блоки или индивидуальный для каждого блока? Как определить,
какой из блоков сейчас пишется, а какой - читать? - Nikolay_Po(15.11.2023 22:43)
- Там ситуация такая. FIFO разбит, допустим, на 2 блока. Один блок
читаю, второй заполняю. Признак, что я полностью прочел блок
имеется. Но признака, что второй блок заполнен отсутствует. То есть
я могу продолжить считывать старые данные. Интересно то, что это не
дефект чипа. Это как-то работает, судя по описанию. Но вот как...
Технического писателя, я бы кастрировал, чтобы предотвратить
появления подобных талантов в будущем. - st256(15.11.2023 22:35)