I want to know the difference between
ttyAMA0 on Linux.
What you get on the host when you connect to target with this:
This port is not present on most laptops or small devboards, but is still present on many desktops, and is very convenient for OS developers as mentioned at: https://askubuntu.com/questions/104771/where-are-kernel-panic-logs/932380#932380
You also get it with
qemu -device isa-serial.
For example could hook up two desktops with one of those cables, and communicate directly between them to get a shell on the remote desktop from your own. From Linux computer 1 you would run:
screen /dev/ttyS0 115200
and then computer 2 would reply with the login prompt, and then you can log in from computer 1 into computer 2.
So this is a bit like SSH and can be seen as an early form of networking. I think those cables cannot be too long or else the signal is lost though, and you can't do as much without the TCP/IP addressing/packet mechanisms.
What you get on host when using something like:
I also get it when I connect the GPIOs of my Raspberry Pi to my laptop to get a shell on a Raspberry Pi without a screen!
And another more integrated RPI connector version of the above:
This is the TTY interface that what you get when you connect your computer to either of:
via an USB cable. They've just implemented a TTY directly on the same USB that can power on and program the device, it is very convenient!
Haven't used this one on a real board yet.
It seems that I would be able to connect my desktop with a serial port to my RPI with that interface: https://raspberrypi.stackexchange.com/questions/69697/what-is-dev-ttyama0
It seem that AMA is a shortened form of AMBA? https://www.raspberrypi.org/forums/viewtopic.php?t=8075 But why would they shorten a 4 character acronym?!
The only interesting Linux kernel hits are under: https://github.com/torvalds/linux/blob/v4.16/drivers/tty/serial/amba-pl011.c#L2488 so it seems to be strictly linked to the PL011: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0183g/index.html which is a UART controller licensed by ARM, which I think is the dominating implementation.
ttyS0is the device for the first UART serial port on x86 and x86_64 architectures. If you have a PC motherboard with serial ports you'd be using a
ttySnto attach a modem or a serial console.
ttyUSB0is the device for the first USB serial convertor. If you have an USB serial cable you'd be using a
ttyUSBnto connect to the serial port of a router.
ttyAMA0is the device for the first serial port on ARM architecture. If you have an ARM-based TV box with a serial console and running Android or OpenELEC, you'd be using a
ttyAMAnto attach a console to it.