
Dear Wolfgang Denk,
Dear Marek Vasut,
In message 201311301642.36531.marex@denx.de you wrote:
Dear Vladimir Zapolskiy,
For LPC32XX high-speed UART it is required to send a carriage return symbol along with line feed.
Why ?
Because we are actually emulating a classical type writer here, and to start printing at the beginning of a new line requires two separate actions: performing a line feed (i. e. scrolling the paper one line up) and a crriage return (i. e. repositioning the drum such that the next character will be printed in column 1.
In the strict sense, the ASCII characters represent the line feed and '\r' the carriage return, respectively. To print the equivalent of the "new line" as it is interpreted by the C standard, we have to translate the single C character into a two-character sequence. You can trace this back to the very beginnings of Unix; you can see the same in Unix version 6 drivers, for example.
Thanks for such a nice explanations ;-) I still have to wonder, why do we not do this emulation in the serial subsystem core now, but still have such a duplication of code in drivers ? I guess I can answer this myself though:
a) We didn't clean this up, even if we do now have a CONFIG_SERIAL_MULTI enabled by default b) There might still be people invoking the driver functions directly
There might be even more reasons, but OK, I guess I get it now.
Best regards, Marek Vasut