Этот вопрос касается запуска механизма SDMA на устройствах Freescale i.mx (i.MX535, если быть точным)?
Я хотел бы получать пакеты размером более 32 байт от UART и автоматически извлекать их с помощью механизма SDMA. Это возможно? Есть ли у кого-нибудь дополнительная информация об использовании SDMA?
Редактировать: я немного подробнее расскажу о своей ситуации и проблемах.
Мне удалось загрузить и запустить собственный сценарий SDMA. Испытательный стенд есть,
- Настройте связь UART (9600, raw) на UART2 (без использования стандартного драйвера Freescale UART).
- Настройте запрос UART2 rx dma с пороговым уровнем 16.
- Настройте канал SDMA для UART2, который запускает скрипт, такой как внешняя память UART 2.
Эта настройка хорошо работает с пакетами размером менее 32 байт, но если размер больше 32 байт, данные удаляются с установленным битом RX FIFO Overrun
. Та же ошибка возникает, если мы используем стандартный драйвер Freescale UART с включенным SDMA на UART2 (распечатывает регистры состояния из UART с меткой DMA ERROR).
Вопрос 1. Удалось ли кому-нибудь получить пакеты размером более 32 байт на обычные UART, такие как UART2. Подразумевая, что в моем сценарии есть ОШИБКА.
Как обычные UART указывают, что они также являются общими UART, которые подключаются непосредственно к ядру SDMA. Я также тестировал этот скрипт UART на UART3. Мой вывод и наблюдение таковы:
Сначала я тестирую его со стандартным драйвером Freescale UART и включенным SDMA, используя стандартные скрипты. Это прекрасно работает с пакетами размером более 32 байт и скоростью передачи данных 1 МГц. Поэтому я надеялся заставить это работать с моим собственным скриптом и драйвером UART, но я не могу создать скрипт, который читает из регистра UART3 RX.
Вопрос 2. Кто-нибудь написал сценарий, считывающий данные с общего UART?