Наконец-то проследил цепочку вызовов - в результате вставил в transmitt_chars () установку и сброс сигнала RTS
mcr |= TIOCM_RTS;
serial_out (up, UART_MCR, mcr);
//передача данных
mcr &= ~TIOCM_RTS;
serial_out (up, UART_MCR, mcr);
В результате тестовые программы приема/передачи работают, но когда пытаюсь сделать так, что сначала программа что-то передает, а затем принимает, то передача идет успешно, а принять ничего не могу. С помощью добавления множества отладочных сообщений удалось выяснить, что в таком случае просто не происходит прерывания на прием. Такое впечатление, что после передачи данных сбрасывается/устанавливается какой-то бит, который не дает возникнуть этому прерыванию, но определить, что это за бит, мне пока не удается.
Возможно, вы сталкивались с подобной проблемой.
Буду признателен за любую помощь.