今天终于找到了这个问题的原因。
原来我是这样创建 ttyAMA0 的:
mknod ttyAMA0 c 204 16
这样创建的问题是minor number不是可以随意设置的,它有固定的值,是64.
所以,正确的方法是:
mknod ttyAMA0 c 204 64
我们可以在linux 内核代码里找到根据(drivers/tty/serial/amba-pl011.c):
#define SERIAL_AMBA_MAJOR 204
#define SERIAL_AMBA_MINOR 64
顺便说一下,AMA是Advanced Microcontroller Bus Architecture的缩写,是ARM的一款 UART设备(ARM AMBA PL011)。