組み込み Linux システム用のキーボード ドライバーの実装 (1)
1 はじめに
Linux は、強力で安定したカーネル、容易な拡張と縮小、豊富なハードウェア サポートなどの多くの利点により、組み込みシステムで広く使用されています。多くの組み込み Linux システム、特にユーザーとの対話が盛んなシステムでは、多くの場合、特別なキーボードを装備する必要があります。現時点では、開発者は実際の状況に基づいて独自の特別なキーボードのドライバーを作成する必要があります。
2 Linux キーボード ドライバーの概要
Linux のほとんどのドライバーは階層アーキテクチャを採用しており、キーボード ドライバーも例外ではありません。 Linux では、キーボード ドライバーは 2 つの層で実装されます。このうち、上位層は一般的なキーボード抽象化層であり、基盤となる特定のハードウェアに依存しないキーボード ドライバーの一部の機能を完了し、基盤となる層にサービスを提供する役割を果たします。下位層はハードウェア処理層です。 、特定のハードウェアと密接に関係しており、主にハードウェアの直接処理を担当します。キーボードドライバーの上部の公開部分は driver/keyboard.c にあります。このファイルで最も重要なのは、EXPORT_SYMBOL マクロを使用してカーネルによってエクスポートされた handle_scancode 関数です。 handle_scancode によって完成される関数は次のとおりです。まずスキャン コードをキー コードに変換し、次に Shift、Alt、およびその他の拡張キーの押下に応じてキー コードをターゲット コード (通常は ASCII コード) に変換し、最後に ASCII コードを入力します。を端末デバイスのバッファに保存し、それをモニター上でエコーするようにタスクレットをスケジュールします。この関数はキーボード ドライバーのコア作業の一部を完了し、これらのコア論理関数は基礎となるハードウェアに依存しないため、分離して基礎となるハードウェア処理関数呼び出しにエクスポートできることがわかります。このファイルには他のいくつかのコールバック関数も定義されており、これらはキーボード ドライバーの上位レベルのパブリック部分によって呼び出され、基礎となるハードウェア処理関数によって実装されます。たとえば、kbd_init_hw、kbd_translate、kbd_unexpected_up などです。このうち、kbd_translate は handle_scancode によって呼び出され、スキャン コードをキー コードに変換する役割を果たします。キーボード ドライバーの基礎となるハードウェア処理部分は、ハードウェアによって実装が異なります。たとえば、PC プラットフォーム上の標準キーボードの基礎となるハードウェア処理機能は、driver/Pc_keyb.c に集中しています。このファイルには、キーボード割り込み処理関数keyboard_interrupt、スキャン コードからキー コードへの変換関数pckbd_translate、および基盤となるハードウェアに密接に関連するその他の関数が含まれています。
このアーキテクチャでは、特別なキーボードをシステムに追加することが特に明確です。開発者は、キーボードを駆動するための基礎となるハードウェア処理関数をドライバーに記述するだけで済みます。一般に、基盤となるハードウェア処理関数で最も重要な仕事は、キーボード割り込み処理で押されたキーのスキャン コードを取得し、それをパラメーターとして使用して handle_scancode を呼び出すことです。スキャン コードは自分で定義できますが、定義する必要があります。キーボード上の押されたキーの位置を一意に識別します。さらに、開発者は、カスタム スキャン コードからキー コードへの対応する変換関数 kbd_translate を提供する必要もあります。特定のキー コードの変換、ターミナルの入力バッファーへのターゲット コードの配置、およびエコー処理はすべて handle_scancode によって完了します。ここでは、カーネル エクスポート関数 handle_scancode が、キーボード ドライバー全体の上部の一般抽象化レイヤーとその下にあるハードウェア処理レイヤーを結合する上で重要な役割を果たしていることがわかります。
3 アプリケーション例
以下では、特定のアプリケーション例を使用して、組み込み Linux システムで特殊なキーボード用のドライバーを作成する具体的なプロセスを説明します。
3.1 ハードウェアモジュールの説明
このシステムの構築では、Samsung の S3C2410 開発ボードをハードウェア プラットフォームとして使用します。特別なキーボードのハードウェア モジュールは、主に 2 つの SN74hc164 チップと 4 行 16 列のマトリックス走査回路で構成されています。 SN74hc164 は、D フリップフロップを 8 個直列接続した 8 ビットのシリアル入力・パラレル出力のシフトレジスタです。その動作原理は単純に次のとおりです。SN74hc164 チップは、クロック CLK パルスの立ち上がりエッジで 8 クロック パルス後に、A ピンと B ピンのシリアル入力を出力ピン QA ~ QH に並列に出力します。その真理値表を図 1 に示します。
2 つの SN74hc164 チップを直列に接続した後、CLK ピンと CLR ピンをそれぞれ S3C2410 開発ボードの GPB2 ポートと GPB4 ポートに接続し、最初の SN74hc164 チップの A ピンと B ピンを GPB1 の開発ボードに接続します。ポートの場合、これら 3 つの GPIO ポートは出力ポートとして設定されます。このように、2 つの SN74hc164 レジスタを使用して 3 つの GPIO ポートのみを占有し、マトリックス スキャン回路の 16 列に入力を提供することで、コストを節約し、GPIO リソースの無駄を回避します。しかし、これはキーボード ドライバーの実装に特定の問題をもたらします。ドライバーは最初に SN74hc164 を駆動し、その後マトリックス回路の 16 列を制御する必要があります。マトリクス回路の 4 つの列ピンはそれぞれ S3C2410 の GPG6、GPG7、GPG8、GPG9 ポートに接続されており、これら 4 つのポートが割り込みソースとして設定されます。キーが押されていない場合、それは高電位として直接読み取られます。使用する場合、キーボードの 16 列はまず SN74hc164 チップを介して低電位に設定され、いずれかのキーが押されると、対応する行の GPG ポートに電圧がかかります。ハイからローへのジャンプ これにより割り込みがトリガーされます。
3.2 ソフトウェアモジュールの説明
上記は、組み込み Linux システムのキーボードドライバー実装 (1) の内容です。さらに関連した内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

Centosは、上流の分布であるRhel 8が閉鎖されたため、2024年に閉鎖されます。このシャットダウンはCentos 8システムに影響を与え、更新を継続し続けることができません。ユーザーは移行を計画する必要があり、提案されたオプションには、Centos Stream、Almalinux、およびRocky Linuxが含まれ、システムを安全で安定させます。

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)
