UART I/O编程:从C到汇编的深入探索
1. UART简介
UART(通用异步收发传输器)在计算机通信中扮演着重要角色,它在发送器和接收器端口都设有缓冲区,还能通过编程来控制串行调制解调器。在过去,旧的个人电脑通常将UART连接到COM端口,COM端口常被用于连接打印机和调制解调器等设备。不过如今,大多数个人电脑使用USB端口进行串行输入输出(I/O)。以我的台式电脑为例,其16550 UART有一组内部连接引脚,但没有外部连接端口。
为了用C语言展示相关算法,我们假设UART安装在采用内存映射I/O的计算机中。为简化操作,这里仅采用轮询I/O,需要以下三个函数:
- init_io :初始化UART,包括设置硬件参数,如速度、通信协议等。
- charin :读取UART接收到的一个字符。
- charout :向UART写入一个待传输的字符。
需要注意的是,我们讨论的代码并不完整,无法在已知的计算机上运行,仅用于说明一些基本概念。
2. UART内存映射I/O的C语言实现
2.1 寄存器定义
首先,我们需要一个文件来为寄存器提供符号名和一些在示例程序中会用到的数值,如下所示:
/* UART_defs.h
* Definitions for a 16550 UART.
* WARNING: This code does not run on any known
* device. It
超级会员免费看
订阅专栏 解锁全文
63

被折叠的 条评论
为什么被折叠?



