DMA (Direct Memory Access) - передача данных сторонним контроллером с прямым доступом в память. Например на PCI шине у вас находится ATA контроллер, который принял данные от жесткого диска и самостоятельно положил их в ОЗУ. А ЦПУ при этом периодически проверяет факт завершения передачи (обычно в аппаратном регистре самого контроллера).
Для использования DMA при передаче по UART вам необходим аппаратный UART контроллер с поддержкой DMA (для x86 PC я таких не видал). Предположим, вы нашли такой контроллер. Контроллер работает с физической памятью, а ПО на x86 PC - с виртуальной, поэтому вам необходимо будет написать свой kernel driver, который:
1) будет иметь доступ к аппаратным регистрам UART контроллера (для задания физических регионов памяти и проверки флагов состояния)
2) сможет выделять диапазоны физической памяти и выставлять их контроллеру
3) взаимодействовать с системой через IOCTL чтобы передавать конечному ПО считанные двнные
Реализация сильно зависит от вашего устройства и самого UART контроллера. Нужно смотреть документацию и по ней писать драйвер. Вы даже не указали, на ПК вы это делаете или на каком-нибудь WiFi роутере.