簡體   English   中英

ttyS1 / uart1已初始化,但無法通過/ dev / ttyS1訪問

[英]ttyS1/uart1 initialised but not accessible through /dev/ttyS1

抱歉,如果這是該問題的錯誤發源地,我目前無法確定問題出在哪一級,所以我在押數。

系統是運行TI自己的SDK / LSP / BusyBox內核的LeopardBoard DM368。

默認情況下,系統具有一個啟用的UART0 UART0,掛載為/ dev / ttyS0,也可以通過bootargs console=ttyS0,115200n8 earlyprintk使用/調用console=ttyS0,115200n8 earlyprintk

我們想將UART1啟用為/ dev / ttyS1,因此已經完成了設置板載復用器,時鍾等的低級板初始化代碼。

引導時,低級初始化報告(通過我添加的printk)報告它已啟用UART1,驅動程序代碼也報告幸福:

[    0.547812] serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A
[    0.569849] serial8250.0: ttyS1 at MMIO 0x1d06000 (irq = 41) is a 16550A

但是,該端口未(可靠地)出現在/ dev /中,並且其狀態(流控制位)存在差異,我懷疑這可能導致其掛起/從不傳輸:

cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:97998 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:0 rx:0 DSR

如果嘗試從命令行修改它,則會收到錯誤消息:

>: stty -F /dev/ttyS1
stty: /dev/ttyS1: Inappropriate ioctl for device

奇怪的是,如果我將bootargs更改為console=ttyS1,115200n8 earlyprintk該端口將正常工作,並且ttyS0已正確初始化並且也可以工作:

cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:0 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:11563 rx:0 RTS|DTR|DSR

現在,這很好,但是我們的引導程序必須使用UART0,因此將所有控制台內容保留在ttyS0上並為我們的輔助通信使用ttyS1會很好。

編輯添加 :我在serial_core.c中插入了一些printk,看來ttyS1從未調用過uart_open(),我假設這是Linux init / startup序列中的某些東西,需要修改嗎?

現在,我要說明我不是一個頑強的Linux黑客,所以我很可能在內核代碼,初始化序列等方面都遺漏了一些明顯/愚蠢的東西。

任何想法,不勝感激!

Linux板上的一個很好的解決了它,我需要在某處插入一個mknod /dev/ttyS1 c 4 65

相當為什么在ttyS0或我不知道的任何console端口上都發生這種情況(顯然),但是現在最重要的是它能正常工作

評論/進一步的信息,為什么會為我自己的知識/后代所歡迎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM