This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3354:Variscite 板上的 UART3问题

Guru**** 2616675 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/579503/linux-am3354-uart3-issue-on-variscite-board

器件型号:AM3354

工具/软件:Linux

供参考我已在标记中设置了我的帖子的格式、它以单间距字体显示效果最佳。 


我有 一个- Variscite VAR-SOM-AM33 SoM 和开发板(VAR-AM33CustomBoard) ,我尝试让 UART3与 - SparkFun FTDI Basic Breakout - 3.3V TTL UART 转 USB 适配器(http://sfe.io/p9873) **困惑部件摘要:**我还在基于定制 SoM 载板的工作 在这个 Variscite 开发板上、我知道当我剪切迹线并连接 SparkFun UART/USB 时、UART0工作得非常完美。 因此、UART0的配置方式与 UART3的配置方式明显不同。 软件 ==== 我在很多项目上都使用了这个完全 FTDI USB 适配器、它一直运行得很好。 下面是我尝试在开发板上启用 UART3的情况: TI 基于 Web 的适用于 AM335x 的 PinMux 配置(http://dev.ti.com/pinmux) ------------ -仅带 RXD 和 TXD 的 UART3 - UART 引脚 - C15为 RXD、无拉电阻(顺便说一下与 UART0不同) C18是 TXD,下拉(就像 UART0一样) Yocto Kernel Serial Driver Selection (Yocto 内核串行驱动程序选择)------------------------------------------------------- 在``默认内核串行8250堆栈的庞大规模后、我最终偶然发现了 Δ Σ OMAP-serial.c Δ Σ 驱动器。 我想看看它是否能解决我的问题、或者至少要减少代码量(作为一个.c 文件)。 因此我配置了内核(make menuconfig)以禁用8250并启用 Device Drivers->Char Drivers->Serial Drivers 中的 CONFIG_SERIAL_OMAP。 Yocto 内核设备树配置 ------------------------------------------------------- TI Pinmux 生成了此代码、我将其添加到 Yocto 环境的内核器件树中: myuart3_PINS_DEFAULT:myuart3_PINS_DEFAULT{ pinctrl-single、pins =< 0x160 (PIN_INPUT | MUX_MODE1)/*(C15) spi0_CS1.uart3_RXD * 0x164 (PIN_OUTPUT 下拉| MUX_MODE1)/*(C18) eCAP0_IN_PWM0_OUT.uart3_TXD */ >; `;**我注意到**在编辑` kernel-source/arch/arm/boot/dts/var-som-am33.dts`时,有一个名为`spi1_pins_default`的 SPI 设备,它使用`0x164引脚,因此我也删除了它的条目(未显示在 git diff 中)。 默认情况下不使用 SPI1、但我只是偏执了。 以下是我的器件树源的`git diff`: diff --git a/arch/arm/boot/dts/var-som-am33.dts b/arch/arm/boot/dts/var-som-am33.dts 索引0fdb4e3..05fbd0a 100644 ---- a/arch/arm/boot/dts/var-som-am33.dts ++ b/arch/arm/boot/dts/var-som-am33.dts @@-263,6+263,13 @@ >; }; + myuart3_PINS_DEFAULT:myuart3_PINS_DEFAULT{ + pinctrl-single、pins =< + 0x160 (PIN_INPUT | MUX_MODE1)/*(C15) spi0_CS1.uart3_RXD * + 0x164 (PIN_OUTPUT 下拉| MUX_MODE1)/*(C18) eCAP0_IN_PWM0_OUT.uart3_TXD */ + >; + }; + @@-533,11 +522,8 @@ }; uart3{(&U) - /* - pinctrl-names ="default"、"sleep"; - pinctrl-0 =<&uart3_PINS_DEFAULT>; - pinctrl-1 =<&uart3_PINS_SLEEP>; - * + pinctrl-names ="default"; + pinctrl-0 =<&myuart3_PINS_DEFAULT>; 状态="正常"; }; 最后使用 bitbake 重建内核/设备树: yocto_varsomam33/tisdk/build $ machine=varsomam33 bitbake -C 编译 linux-ti-variscite 验证设备树设置------------------------------------------------------- 内核和设备树构建完成后、引导它们(在我的情况下是通过 TFTP/NFS 内核服务器)、并检查我们的设备树设置是否符合我们的预期: root@varsomam33:~# find /sys/firmware/devicetree -name "*myuart*" /sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/CM@210000/引脚多路复用@800/myuart3_PINS_DEFAULT root@varsomam33:~# od -x /sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/SCM@210000/ pinmux@800/myuart3_pins_default/pinctrl-single、pins 0000000 0000 6001 0000 2900 0000 6401 0000 0100 0000020 如果我们以字节序修复输出值(我的总线框工具不支持"od -t x1")、我们可以看到: 引脚 |值 ---- |---- 0x0160 | 0x0029 0x0164 | 0x0001 、此操作使用`include/dt-bindings/pinctrL/am33xx.h`中的定义进行精确验证 #define PULL_DISABLE (1 << 3) #define INPUT_EN (1 << 5) #define PIN_OUTPUT 下拉0 #define MUX_MODE1 硬件 === 连接: 载板 | SparkFun USB -------------- |--- J18引脚9 (UART3_RXD)| TXO J18引脚10 (UART3_TXD)| RXI J15引脚4 (接地) | GND 测试 ==== 我使用了一个用 C 语言编写的非常简单的198线路串行终端程序(github.com/.../minitrem)。 我已经在各种嵌入式 Linux 和桌面 Linux 器件上使用了它多年了。 它不使用第123行所示的流量控制: newsertiio.c_cflag = fed_Baud | CS8 | CLOCAL | CREAD; 接下来、我将使用 SparkFun 器 件(本例中为/dev/ttyUSB1)和嵌入式端(/dev/ttyO3)在我的台式 Linux 机器上打开串行终端。 我在每个终端会话中键入字符。 请注意 、从嵌入式会话键入时、桌面上会接收到"A"字符、但从桌面会话键入时、在嵌入式端不会接收到字符。 嵌入式串行终端 --- -我在嵌入式终端上键入三个"A"字符。 -我不接收从桌面终端键入的任何字符 输出: root@varsomam33:~./minitrem -d/dev/ttyO3 *********** 远程控制台:Ctrl-]退出***** 台式串行终端 --- -请注意,我在桌面上收到了三个"A"字符。 -我在此终端中键入"t"、但它不会显示在嵌入式终端上。 输出: #./minitrem -d/dev/ttyUSB1 *********** 远程控制台:Ctrl-]退出***** AAA 检查 UART 状态 --- **注意:我们已在 UART3上传送了一些字符,但尚未收到任何** root@varsomam33:~# cat /proc/tty/driver/OMAP-SERIAL serinfo:1.0驱动程序修订版: 0:UART:OMAP UART0 MMIO:0x44E09000 IRQ:155 TX:3080 Rx:8 RTS|CTS|DTR|DSR 1:UART:OMAP UART1 MMIO:0x48022000 IRQ:156 TX:0 Rx:0 DSR|CD|RI 2:UART:OMAP UART2 MMIO:0x48024000 IRQ:157 TX:0 Rx:0 CTS|DSR 3:UART:OMAP UART3 MMIO:0x481A6000 IRQ:158 TX:3 Rx:0 CTS|DSR 4:UART:OMAP UART4 MMIO:0x481A8000 IRQ:159 TX:0 Rx:0 CTS|DSR 5:UART:OMAP UART5 MMIO:0x481AA000 IRQ:160 TX:0 Rx:0 CTS|DSR Saleae 逻辑分析仪屏幕截图 ========================================== UART3 TX 在0和3.3V 之间看起来很好 --- UART3 RX 只能从3.3V 降至2.5V --- 总结: 到目前为止我的测试结果中的真值表。 请注意、当我说它不起作用时、它会出现上述问题(2.5V 至3.3V 摆幅)。 电路板 | UART |配置|结果 ------------------------ Variscite | UART0 | RS232 DCE |工作 Variscite | UART1 | RS232 DTE |工作 Variscite | UART3 | TTL/UART |无工作(此帖子对此进行了说明) 定制 | UART0 | TTL/UART |工作 定制 | UART1 | RS232 DTE |工作 定制 | UART1 | TTL/UART |无工作(使用本帖子中描述的相同过程) 我觉得这与调制解调器控制线(流控制)有关、并且我的配置设置未被采用(如`/proc/tty/driver/OMAP-SERIAL`) 任何帮助都值得赞赏、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们在 Variscite SOM 上无能为力。 我们没有该板的文档。 这是第三方产品、您应联系电路板制造商获取支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正因为如此、我才正确理解、不应讨论官方 TI 评估板上未包含的任何 TI 产品?  例如、没有讨论 BeagleBone 或 LeopardBoard?


    即使供应商是 TI 网站上宣传的 TI 合作伙伴:

    (ti.com/devnet/docs/catalog/companyfolder.tsp?actionPerformed=companyFolder&companyId=5778)

    网站上免费提供了他们的所有原理图和文档:

    (variscite.com/products/system-on-module-som/cortex-a8/var-som-am33-cpu-ti-am335x-am3354-am3352)

    我知道自己不能为 Variscite 说话、但如果人们不讨论常用的 TI 平台、TI 会尝试支持什么类型的社区?  对于像我这样为 TI 芯片开发定制硬件的工程师、这意味着什么?

    我之所以在 TI 论坛上发帖、是因为我已经尝试进入 Variscite 论坛超过一周了、但没有任何结果。  这使得 Freescale 和 Qualcomm 等替代产品看起来非常有吸引力!


    同样、UART3之所以保持高电平的具体原因可在开发板原理图中找到、也可在 Variscite 站点免费获取、其中 UART3还连接到 RS-485芯片(LTC2852)的引脚1。  幸运的是、电路板设计人员知道自己在做什么、并在该线路上连接了一个0欧姆电阻器(R83)、因此将其移除会释放 UART3的 RX 线路。

    虽然这对于其他想要使用 UART3的 Variscite 客户来说应该很有帮助、但这并不能解决我真正的问题、即为什么 UART1在我们的定制硬件上不工作、但这可能是另一个论坛的 Linux 配置问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了完整起见、我忘记在原始帖子中附加 Saleae 逻辑分析仪的屏幕截图。


    其中包括:

    UART3 TX 在0和3.3V 之间看起来正常
    ------------------------------------


    UART3 RX 仅从3.3V 降至2.5V
    ----------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Brad、
    是的、您回答正确。 我们列出了合作伙伴拥有的产品、下面是 TI 参考设计网络页面的免责声明:

    免责声明:

    此处包含的信息由 TI 的设计网络成员提供。 TI 网站上提供此信息只是为了方便起见、TI 不对本页面的内容或对本页面上发布的信息的任何更改或更新负责。 此处提供的某些链接允许您离开本站点并进入非 TI 站点。 这些链接的站点不受 TI 控制。 TI 不对任何链接站点的内容或对此类站点的任何更改或更新负责。 TI 为您提供这些链接只是为了方便起见。 包含任何链接并不意味着 TI 认可任何链接站点。

    TI 发布的与第三方产品或服务相关的信息不构成与此类产品或服务或保修的适用性相关的认可、也不构成此类产品或服务单独或与任何 TI 产品或服务组合的表示或认可。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Brad、
    另一个详细信息...一位朋友提请我注意、我应该已经指定 TI 不通过参与讨论来支持董事会、但社区可能会阅读该帖子并将供应商 reply....including 发送给供应商。 :)我希望这对您有所帮助。