已绑定手机
|
1.概述
1.1.编写目的
介绍Linux内核中UART驱动的接口及使用方法,为UART设备的使用者提供参考。
1.2.适用范围
适用于 T3 sdk 配套的Linux 3.10 内核。
1.3.相关人员
UART驱动、及应用层的开发/维护人员。
2.模块介绍
2.1.模块功能介绍
Linux 内核中,UART 驱动的结构图2.1所示,可以分为三个层次∶
1. Sunxi UART Driver,负责 SUNXI 平台 UART 控制器的初始化、数据通信等,也是我们要实现的部分;
2. UART Core,为 UART 驱动提供了一套 API,完成设备和驱动的注册等;
3. TTY core,实现了内核中所有 TTY 设备的注册和管理。
2.3.模块配置介绍
2.3.1.Device tree 配置说明
在 Device Tree 中对每一个UART控制器进行配置,一个UART控制器对应一个UART节点,如下;
uart0: uart@01c28000 { compatible = "Allwinner,sun8i-uart";
reg = <0x0 0x01c28000 0x0 0x400>;
interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk_uart0>;
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins_a>;
pinctrl-1 = <&uart0_pins_b>;
port-number = <0>;
io-number = <2>;
status = "disabled";
};
其中:
1. compatible:表征具体的设备,用于驱动和设备的绑定;
2. reg:设备使用的地址;
3. interrupts:设备使用的中断;
4. clocks:设备使用的时钟;
5. pinctrl-0:设备使用的 PIN 脚;
6. port-number:UART 控制器对应的 ttyS 端口编号,取值不能和其它 UART 控制器重复;
7. io-number:UART 控制器的线数,取值范围为 2、4 和 8;
8. status:是否使用该节点。
为了在 UART 驱动代码中区分每一个 UART 控制器,需要在 Device Tree 中的 aliases 节点中为每一个 UART 节点指定别名:
serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; serial3 = &uart3; serial4 = &uart4; serial5 = &uart5; serial6 = &uart6; serial7 = &uart7;
别名形式为字符串“serial”加连续编号的数字,在 UART 驱动程序中可以通过 of_alias_get_id() 函数获取对应 UART 控制器的数字编号,从而区别每一个 UART 控制器。
2.3.2.menuconfig 配置说明
在命令行中进入内核根目录,执行 make ARCH=arm menuconfig 进入配置主界面,并按以下步骤操作。 首先,选择 Device Drivers 选项进入下一级配置,如下图所示:
更多详细内容请下载附件查看
|
|