- Android系统级深入开发
- 韩超 梁泉
- 286字
- 2020-08-26 21:43:42
4.4.4 TTY终端的驱动程序
GoldFish虚拟处理器的TTY终端的驱动程序,也就是提供了虚拟串口功能的驱动程序,相关文件如下所示:
drivers/char/goldfish_tty.c
GoldFish的TTY终端的驱动程序在sys文件系统的driver路径如下所示:
# ls /sys/bus/platform/drivers/goldfish_tty goldfish_tty.0 goldfish_tty.1 goldfish_tty.2 uevent unbind bind
GoldFish的TTY终端的驱动程序在用户空间有3个设备,节点分别为/dev/ttyS0,/dev/ttyS1和/dev/ttyS2。
这个驱动程序只支持写操作,驱动程序写的功能在goldfish_tty_do_write中实现,操作如下所示:
static void goldfish_tty_do_write(int line, const char *buf, unsigned count) { unsigned long irq_flags; struct goldfish_tty *qtty = &goldfish_ttys[line]; uint32_t base = qtty->base; spin_lock_irqsave(&qtty->lock, irq_flags); writel(buf, base + GOLDFISH_TTY_DATA_PTR); /* 写入虚拟串口寄存器:数据指针 */ writel(count, base + GOLDFISH_TTY_DATA_LEN); /* 写入虚拟串口寄存器:数据长度 */ writel(GOLDFISH_TTY_CMD_WRITE_BUFFER, base + GOLDFISH_TTY_CMD); spin_unlock_irqrestore(&qtty->lock, irq_flags); }
串口的功能比实际的串口功能要简单得多,进行的是直接对虚拟寄存器的写操作,仿真器环境根据情况进行处理。