私は最初にearlycon
のパラメーターを調査してこれを見つけましたが、console
のオプションはほとんど同じに見えることがわかりました。両方とも以下にあり、 this ソースから取得されました。
console
のドキュメントから:
console= [KNL] Output console device and options.
tty<n> Use the virtual console device <n>.
ttyS<n>[,options]
ttyUSB0[,options]
Use the specified serial port. The options are of
the form "bbbbpnf", where "bbbb" is the baud rate,
"p" is parity ("n", "o", or "e"), "n" is number of
bits, and "f" is flow control ("r" for RTS or
omit it). Default is "9600n8".
See Documentation/serial-console.txt for more
information. See
Documentation/networking/netconsole.txt for an
alternative.
uart[8250],io,<addr>[,options]
uart[8250],mmio,<addr>[,options]
uart[8250],mmio16,<addr>[,options]
uart[8250],mmio32,<addr>[,options]
uart[8250],0x<addr>[,options]
Start an early, polled-mode console on the 8250/16550
UART at the specified I/O port or MMIO address,
switching to the matching ttyS device later.
MMIO inter-register address stride is either 8-bit
(mmio), 16-bit (mmio16), or 32-bit (mmio32).
If none of [io|mmio|mmio16|mmio32], <addr> is assumed
to be equivalent to 'mmio'. 'options' are specified in
the same format described for ttyS above; if unspecified,
the h/w is not re-initialized.
hvc<n> Use the hypervisor console device <n>. This is for
both Xen and PowerPC hypervisors.
If the device connected to the port is not a TTY but a braille
device, prepend "brl," before the device type, for instance
console=brl,ttyS0
For now, only VisioBraille is supported.
earlycon
のドキュメントから:
earlycon= [KNL] Output early console device and options.
When used with no options, the early console is
determined by the stdout-path property in device
tree's chosen node.
cdns,<addr>
Start an early, polled-mode console on a cadence serial
port at the specified address. The cadence serial port
must already be setup and configured. Options are not
yet supported.
uart[8250],io,<addr>[,options]
uart[8250],mmio,<addr>[,options]
uart[8250],mmio32,<addr>[,options]
uart[8250],mmio32be,<addr>[,options]
uart[8250],0x<addr>[,options]
Start an early, polled-mode console on the 8250/16550
UART at the specified I/O port or MMIO address.
MMIO inter-register address stride is either 8-bit
(mmio) or 32-bit (mmio32 or mmio32be).
If none of [io|mmio|mmio32|mmio32be], <addr> is assumed
to be equivalent to 'mmio'. 'options' are specified
in the same format described for "console=ttyS<n>"; if
unspecified, the h/w is not initialized.
pl011,<addr>
pl011,mmio32,<addr>
Start an early, polled-mode console on a pl011 serial
port at the specified address. The pl011 serial port
must already be setup and configured. Options are not
yet supported. If 'mmio32' is specified, then only
the driver will use only 32-bit accessors to read/write
the device registers.
meson,<addr>
Start an early, polled-mode console on a meson serial
port at the specified address. The serial port must
already be setup and configured. Options are not yet
supported.
msm_serial,<addr>
Start an early, polled-mode console on an msm serial
port at the specified address. The serial port
must already be setup and configured. Options are not
yet supported.
msm_serial_dm,<addr>
Start an early, polled-mode console on an msm serial
dm port at the specified address. The serial port
must already be setup and configured. Options are not
yet supported.
smh Use ARM semihosting calls for early console.
s3c2410,<addr>
s3c2412,<addr>
s3c2440,<addr>
s3c6400,<addr>
s5pv210,<addr>
exynos4210,<addr>
Use early console provided by serial driver available
on Samsung SoCs, requires selecting proper type and
a correct base address of the selected UART port. The
serial port must already be setup and configured.
Options are not yet supported.
lpuart,<addr>
lpuart32,<addr>
Use early console provided by Freescale LP UART driver
found on Freescale Vybrid and QorIQ LS1021A processors.
A valid base address must be provided, and the serial
port must already be setup and configured.
armada3700_uart,<addr>
Start an early, polled-mode console on the
Armada 3700 serial port at the specified
address. The serial port must already be setup
and configured. Options are not yet supported.
使用例は次のとおりです。
earlycon=uart8250,0x21c0500
私の質問は:
8250/1655 物理ハードウェアへの参照があるのはなぜですか?この古い実装は、モダンなデザインのインターフェース仕様に組み込まれていますか?つまり、これらの通信デバイスがSoCの外部にあるときに互換性があったUARTのドライバーをまだ使用していますか?
MMIOがMemory Mapped IOである場合、「通常」とは何ですかIOこのコンテキストで参照していますか?
<addr>
パラメータとは何ですか?これはUART構成レジスタの始まりですか?ほとんどのUART構成レジスタは特定のレジスタレイアウトに準拠しています)汎用のUARTドライバがハードウェアを適切に構成する可能性がありますか?
誰かがまだこれをやっていると確信していますが、ILO/DRACなどの前の時代に戻っています。安くてユビキタスになり、緊急時やおっとの場合にコンソールに「帯域外」でアクセスするための最良の方法は、シリアルポート経由でした。ターミナルサーバーをラックにマウントし、サーバーのシリアルポートにケーブルを接続します。一部のBIOSは、シリアルポートへのコンソールリダイレクトをサポートしていました(たとえば、1999年以降のVA LinuxおよびSuperMicroサーバー)。
8250/16550 UARTは、当時最も人気のあるシリアルポートチップの一部でした。つまり、それらはLinuxで最もサポートされているチップであり、それらすべてが8250カーネルドライバーを使用していました(そのシリーズには、すべてのモデルで使用されていたモデルがさらに多くありました)同じドライバー)。
多くのSoC設計は、Linuxが8250/16550互換のUARTを組み込んで使用することを意図していたと思います。これは、簡単なボタンであり、十分に文書化されており、wellテスト済みのドライバーであるためです。うまくいけば、彼らは新しいマルチバイトバッファバージョンをビルドしました(もちろん、今日の標準による「遅い」プロセッサでも、115kシリアルポートが受信できるよりもはるかに頻繁にシリアル割り込みを処理できます)。 IIRC the Macには、Local/Apple Talk(どちらがプロトコルでどれがハードウェアであるかを思い出せない)に使用される248kのシリアルポートがありました。それでも、CPUが60Mhzを達成したときはそれが戻ってきました。
これはおそらくMMIOとポートI/Oの違いに対する最良の答えです: https://en.wikipedia.org/wiki/Memory-mapped_I/O そのレベルを十分に理解していませんそれを煮詰める。
上記のリンクはおそらくこれらの目的のためのものであると答えますが、基本的にそれはメモリアドレスです。