【TX2】TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口
1、简述
TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口。
2、设备树
设备树中关于串口部分的描述
2.1 基础配置
注意:在这里状态都配置成禁止(status = “disabled”;)
在设备树描述文件tegra186-quill-common.dtsi中,根据需要配置成使能(status = “okay”;)
sources/hardware/nvidia/soc/t18x/kernel-dts/tegra186-soc/tegra186-soc-uart.dtsi
/*tegra186-soc-uart.dtsi: Tegra186 soc dtsi file for UART instances*/
/ {uarta: serial@3100000 {compatible = "nvidia,tegra20-uart";#stream-id-cells = <1>;reg = <0x0 0x03100000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTA 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 8>, <&gpcdma 8>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTA>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTA>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uartb: serial@3110000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0x03110000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTB 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 9>, <&gpcdma 9>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTB>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTB>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uartc: serial@c280000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0xc280000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTC 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 3>, <&gpcdma 3>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTC>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTC>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uartd: serial@3130000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0x03130000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTD 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 19>, <&gpcdma 19>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTD>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTD>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uarte: serial@3140000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0x03140000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTE 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 20>, <&gpcdma 20>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTE>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTE>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uartf: serial@3150000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0x03150000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTF 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 12>, <&gpcdma 12>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTF>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTF>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};uartg: serial@c290000 {compatible = "nvidia,tegra186-hsuart";#stream-id-cells = <1>;reg = <0x0 0xc290000 0x0 0x40>;reg-shift = <2>;interrupts = <0 TEGRA186_IRQ_UARTG 0x04>;nvidia,memory-clients = <14>;dmas = <&gpcdma 2>, <&gpcdma 2>;dma-names = "rx", "tx";clocks = <&tegra_car TEGRA186_CLK_UARTG>,<&tegra_car TEGRA186_CLK_PLLP_OUT0>;clock-names = "serial", "parent";resets = <&tegra_car TEGRA186_RESET_UARTG>;reset-names = "serial";status = "disabled";nvidia,adjust-baud-rates = <115200 115200 100>;};combined-uart {compatible = "nvidia,tegra186-combined-uart";reg = <0x0 0x3c10000 0x0 0x4 /* TOP0_HSP_SM_0_1_BASE */0x0 0xc168000 0x0 0x4 /* AON_HSP_SM_1_BASE */0x0 0x3c00000 0x0 0x1000>; /* TOP0_HSP_COMMON_BASE */interrupts = <0 120 0x04>;status = "okay";};
};
2.2 别名定义
aliases {serial0 = &uarta;serial1 = &uartb;serial2 = &uartc;serial3 = &uartd;serial4 = &uarte;serial5 = &uartf;serial6 = &uartg;
2.3 中断配置
sources/hardware/nvidia/soc/t18x/kernel-include/dt-bindings/interrupt/tegra186-irq.h
#define TEGRA186_IRQ_UARTA 112
#define TEGRA186_IRQ_UARTB 113
#define TEGRA186_IRQ_UARTC 114
#define TEGRA186_IRQ_UARTD 115
#define TEGRA186_IRQ_UARTE 116
#define TEGRA186_IRQ_UARTF 117
#define TEGRA186_IRQ_UARTG 118
2.4 时钟配置
sources/hardware/nvidia/soc/t18x/kernel-dts/tegra186-soc/tegra186-soc-base.dtsitegra_car: clock@5000000 {compatible = "nvidia,tegra18x-car";reg = <0x0 0x05000000 0x0 0x01000000>;#clock-cells = <1>;#reset-cells = <1>;status = "disabled";
};
#define TEGRA186_CLK_UARTA 55
#define TEGRA186_CLK_UARTB 56
#define TEGRA186_CLK_UARTC 215
#define TEGRA186_CLK_UARTD 77
#define TEGRA186_CLK_UARTE 194
#define TEGRA186_CLK_UARTF 195
#define TEGRA186_CLK_UARTG 216#define TEGRA186_CLK_PLLP_OUT0 269
nvidia/soc/t18x/kernel-include/dt-bindings/reset/tegra186-reset.h:
#define TEGRA186_RESET_UARTA 47
#define TEGRA186_RESET_UARTB 48
#define TEGRA186_RESET_UARTC 49
#define TEGRA186_RESET_UARTD 50
#define TEGRA186_RESET_UARTE 132
#define TEGRA186_RESET_UARTF 111
#define TEGRA186_RESET_UARTG 112
2.5 默认串口配置
sources/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi
serial@3100000 {compatible = "nvidia,tegra20-uart", "nvidia,tegra186-hsuart";console-port;sqa-automation-port;status = "okay";};serial@3110000 {compatible = "nvidia,tegra186-hsuart";status = "okay";};serial@c280000 {compatible = "nvidia,tegra186-hsuart";status = "okay";};serial@3130000 {compatible = "nvidia,tegra186-hsuart";dma-names = "tx";status = "okay";};
2.6 添加串口
添加串口ttyTHS4、ttyTHS5、ttyTHS6,注意:ttyTHS4、ttyTHS5的引脚是和其它复用的,尽量别用
sources/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi :
serial@3140000 {compatible = "nvidia,tegra186-hsuart";dma-names = "tx";status = "okay";};serial@3150000 {compatible = "nvidia,tegra186-hsuart";dma-names = "tx";status = "okay";};serial@c290000 {compatible = "nvidia,tegra186-hsuart";dma-names = "tx";status = "okay";};
3、引脚
序号 | 地址 | 设备名 | 寄存器名 | 收发引脚 | 引脚名称 | 设备树 |
---|---|---|---|---|---|---|
1 | serial@3100000 | ttyS0 | UARTA | G12、H12 | UART0_* | 已配置 |
2 | serial@3110000 | ttyTHS1 | UARTB | B15、B16 | UART2_* | 已配置 |
3 | serial@c280000 | ttyTHS2 | UARTC | D10、D9 | UART1_* | 已配置 |
4 | serial@3130000 | ttyTHS3 | UARTD | H9、H10 | UART3_* | 已配置 |
5 | serial@3140000 | ttyTHS4 | UARTE | ?、B17 | FAN_TACH | 未配置 |
6 | serial@3150000 | ttyTHS5 | UARTF | B26、F20 | LCD_VDD_EN | 未配置 |
7 | serial@c290000 | ttyTHS6 | UARTG | D5、D8 | UART7 | 未配置 |
相关手册查询记录:
4、系统中关于串口的信息
4.1 设备挂载信息
root@tegra-ubuntu:/sys/bus/platform/devices# ls *serial -l
lrwxrwxrwx 1 root root 0 3月 21 14:35 3100000.serial -> …/…/…/devices/3100000.serial
lrwxrwxrwx 1 root root 0 3月 21 14:35 3110000.serial -> …/…/…/devices/3110000.serial
lrwxrwxrwx 1 root root 0 3月 21 14:35 3130000.serial -> …/…/…/devices/3130000.serial
lrwxrwxrwx 1 root root 0 3月 21 14:35 c280000.serial -> …/…/…/devices/c280000.serial
4.2 地址和设备文件名的对应关系
/sys/devices/3100000.serial/tty/ttyS0
/sys/devices/3110000.serial/tty/ttyTHS1
/sys/devices/c280000.serial/tty/ttyTHS2
/sys/devices/3130000.serial/tty/ttyTHS3
4.3 查看ttyS0
root@tegra-ubuntu:/sys/devices/3100000.serial/tty/ttyS0# ls
close_delay closing_wait custom_divisor dev device flags iomem_base iomem_reg_shift io_type irq line port power rt_flush rx_trig_bytes subsystem type uartclk uevent xmit_fifo_size
# cat close_delay // 关闭端口时的等待时间
50
# cat closing_wait // 关闭前输出发送的延迟
3000
# cat custom_divisor
0
# cat dev
4:64
# cat flags // 用户TTY标志(ASYNC_)
0xB9000000
# cat iomem_base
0x3100000
# cat iomem_reg_shift
2
# cat io_type
2
# cat irq
37
# cat line
0
# cat port
0x0
# cat rt_flush
0
# cat rx_trig_bytes
4
# cat type
20
# cat uartclk
408000000
# cat uevent
MAJOR=4
MINOR=64
DEVNAME=ttyS0
# cat xmit_fifo_size
32
4.4 查看ttyTHS1
root@tegra-ubuntu:/sys/devices/3110000.serial/tty/ttyTHS1# ls
close_delay closing_wait custom_divisor dev device flags iomem_base iomem_reg_shift io_type irq line port power rt_flush subsystem type uartclk uevent xmit_fifo_size
# cat close_delay
50
# cat closing_wait
3000
# cat custom_divisor
0
# cat dev
238:1
# cat flags
0x0
# cat iomem_base
0x3110000
# cat iomem_reg_shift
2
# cat io_type
3
# cat irq
38
# cat line
1
# cat port
0x0
# cat rt_flush
0
# cat type
20
# cat uartclk
0
# cat uevent
MAJOR=238
MINOR=1
DEVNAME=ttyTHS1
# cat xmit_fifo_size
32
4.5 查看ttyTHS2
root@tegra-ubuntu:/sys/devices/c280000.serial/tty/ttyTHS2# ls
close_delay closing_wait custom_divisor dev device flags iomem_base iomem_reg_shift io_type irq line port power rt_flush subsystem type uartclk uevent xmit_fifo_size
# cat close_delay
50
# cat closing_wait
3000
# cat custom_divisor
0
# cat dev
238:2
# cat flags
0x0
# cat iomem_base
0xC280000
# cat iomem_reg_shift
2
# cat io_type
3
# cat irq
39
# cat line
2
# cat port
0x0
# cat rt_flush
0
# cat type
20
# cat uartclk
0
# cat uevent
MAJOR=238
MINOR=2
DEVNAME=ttyTHS2
# cat xmit_fifo_size
32
4.6 查看ttyTHS3
root@tegra-ubuntu:/sys/devices/3130000.serial/tty/ttyTHS3# ls
close_delay closing_wait custom_divisor dev device flags hci0 iomem_base iomem_reg_shift io_type irq line port power rt_flush subsystem type uartclk uevent xmit_fifo_size
# cat close_delay
50
# cat closing_wait
3000
# cat custom_divisor
0
# cat dev
238:3
# cat flags
0x0
# cat iomem_base
0x3130000
# cat iomem_reg_shift
2
# cat io_type
3
# cat irq
40
# cat line
3
# cat port
0x0
# cat rt_flush
0
# cat type
20
# cat uartclk
0
# cat uevent
MAJOR=238
MINOR=3
DEVNAME=ttyTHS3
# cat xmit_fifo_size
32
【TX2】TX2开发板系统默认串口有ttyS0(调试口)、ttyTHS1、ttyTHS2、ttyTHS3,通过修改设备树文件,可以新增三个串口相关推荐
- 全志A40I开发板10.1寸MIPI屏调试
天嵌A40i核心板,天嵌科技出品的又一款工业级核心板,采用4核ARM Cortex-A7处理器设计,每核主频高达1.2GHz. 注:本文所调试屏的参数是适配天嵌10.1寸电容触摸屏的,其他的mipi屏 ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON7串口通信
串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中 ...
- 【小月电子】安路国产FPGA开发板系统学习教程-LESSON7串口通信
串口通信例程讲解 若要观看该博客配套的视频教程,可点击此链接 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去其中一些步骤.比如非常简单的项目,我们可以 ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程
ALTERA FPGA IPCORE核之FIFO详细教程 若要观看该博客配套的视频教程,可点击此链接 一. FIFO简介 FIFO: 是英文first in first out的缩写,即先进先出,指的 ...
- ARM开发板系统移植-----rootfs的制作
前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个"僵死"的状态---无法挂载根文件系统. 这里将介绍如何制作 ...
- 香蕉派 BPI-M5折腾记录(1)—— 开发板系统烧写
最近又从咸鱼上淘了一块二手开发板Banana Pi M5,之所以选这块是因为树莓派4溢价太高,不划算了.总体而言Banana Pi M5配置还是挺不错的,性价比挺高,韩国还有一款开源开发板 Odroi ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON3 LED流水灯
LED流水灯例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省去 ...
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON4数码管静态显示
数码管静态显示例程讲解 若要观看该博客配套的视频教程,可点击此链接 开发板实物图 图1.FPGA设计流程 根据多年工作经验,总结出的FPGA的设计流程,概括起来总共有以上12步,其中根据项目难易度可省 ...
- ARM开发板系统移植-----kernel的编译
前面一篇文章http://www.cnblogs.com/linzizhang/p/4817336.html介绍了开发板上系统软件的第一部分--bootloader的编译方法. 背景:把bootloa ...
最新文章
- Linux常用命令及Shell的简单介绍
- 【C 语言】字符串拷贝 ( 优化指针操作 )
- Android Realm相关操作
- linux下解除端口占用
- boosting家族之综合理论篇
- NTC3950-10K温度传感器
- 64岁Python之父:我不退休了,我要去微软
- 一次性计划任务at与周期性计划任务crontab
- 计算机问题求解需要研究的要素,关于计算机音乐制作的空间构成要素的研究
- VirtualBox 搭建android-x86
- 虚函数表存储的位置(解析C++内存分配及其编译分段)
- 计算机毕业设计php的人事档案管理系统
- Arcgis中修改属性字段名
- 20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结
- C#线程 访问资源同步简介
- 很多人看都哭了,不信你不哭
- 用mysql建销售订单主表_mysql订单表如何设计?
- 微信小程序学习笔记3
- (9)隐蔽通道重点知识复习笔记
- 【钉钉-场景化能力包】钉钉群机器人助力工单管理
热门文章
- 液体测量技术:从水到血液
- java8u211_jre864位u211
- js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...
- 在CentOS 6.8 x86_64上安装ATS 6.2.1实录
- 分库分表之后,主键的处理方法
- Vue 框架-02-事件:点击, 双击事件,鼠标移上事件
- windows常用命令有哪些(整理)
- redis使用epoll
- maven 插件:Tomcat7
- (转)Linux进程调度时机