ARM9 Atmel AT91SAM960 ボード用に Linux をカスタマイズしています。
デバイス ファイルで、Atmel はすべての USART に同じ名前を付けましたatmel_usart
。もちろん、ID列挙を使用:
static struct platform_device at91sam9260_uart0_device = {
.name = "atmel_usart",
.id = 1,
.dev = { ...}
}
Linux デバイス モデルによると、これらすべてのデバイス (SAM9260 上の 5 つの UART) は、 という名前のドライバーatmel_usart
にバインドされます。
登録されるすべての UART に TTYS ドライバーを設定したくありません。さまざまな特殊な目的 (LON、RS-485 など) に対応する独自のドライバーがいくつかあります。特定の USART に対応するドライバーを制御したいと考えています。だから私は何ができるでしょうか:
Atmel デバイス ファイルは不十分であり、改善することができます。そのため、デバイス ファイル内のデバイスの名前を変更 (パッチ) します。ただし、UART4 で TTYS ドライバーが必要な場合は、問題が発生します。
構造体にアクセスできるように、デバイス ファイルを操作 (パッチ) します
platform_device
。登録する前に名前を変更できました。しかし、 Linux Driver Modelの考え方を理解している限り、デバイスは起動時の早い段階で登録する必要がありますが、ドライバーへのバインドは後で .... 後で行います。エイリアス名を持ち、特定の bus_Id -> にバインドされるドライバーを作成できます
atmel_usart.4
。私は本当にできますか?
他にどのような解決策が存在しますか。カーネルファイルの最小限のセットに触れたいのですが、可能な限りすべての自由が欲しいですか?
補遺私にとって自由とは何か:実行時にUARTSの使用方法を指定できます
- Atmel-Serial ドライバー (ttyS) を使用
- 自分のドライバーで
これは、カーネル ソースへの変更が最小限であることも意味します。