[]エイティーン組込みLinuxドライバの開発、Linuxカーネルは、LEDドライバの探査が付属しています

  あなたの人生は唯一の電気光学として持続する、だます人が負傷しました。
  たびZhiwei、日皆一つのペアを教えてくれました。
  苦難と努力倍に、フロントに前進。
  ビンに粒米製品の前に、良い毎分スロットを使用します。


A、LED駆動を運ぶLinuxカーネルが使用可能に

  ルートディレクトリへのLinuxカーネルソースは、入力パターンmakeはオープンコンフィギュレーションインターフェースをmenuconfigを、パス以下開放構成項目を駆動するLED:Device Drivers -> LED Support (NEW_LEDS [=y]) -> LED Support for GPIO connected LEDs構成した後、下に示すように:

ここに画像を挿入説明

  Linuxは、「Y」は、Linuxカーネルにコンパイルされる場合、CONFIG_LEDS_GPIOの値に応じてLEDランプ・ドライバをコンパイルする方法を選択することができます。示すように、コンフィギュレーション・インターフェースを出た後に設定されたLinuxカーネル、.configファイルを開くと、「CONFIG_LEDS_GPIO = Y」この行を、見つけます:

ここに画像を挿入説明

  カーネルのLinuxを再コンパイルした後、開発ボードから外れ、新たにコンパイルしたzImageのミラーを起動を使用します。[代替の方法ではなく、ここでは繰り返しで]

二、Linuxのカーネルは、LEDドライバ分析が付属しています

  用LEDランプ・ドライバ・ファイル/drivers/leds/leds-gpio.cのファイル、あなたは以下を参照してくださいファイルを開きます

......
static const struct of_device_id of_gpio_leds_match[] = {
	{ .compatible = "gpio-leds", },
	{},
};
......
static struct platform_driver gpio_led_driver = {
	.probe		= gpio_led_probe,
	.shutdown	= gpio_led_shutdown,
	.driver		= {
		.name	= "leds-gpio",
		.of_match_table = of_gpio_leds_match,
	},
};

  デバイスツリー内のノードのLEDランプ装置の互換性属性値はまた、「GPIO-のLED」であるので、上記のコードによれば、LEDドライバは、一致テーブル、互換性のあるコンテンツ「GPIO-LED」を見ることができます。

  さらに、機能ドライバgpio_led_probe主な機能は、LEDランプのデバイス情報を取得することで、出力に、情報に基づいて、対応するIOを初期化します。したがって、再多重化と電気特性無しデバイスツリー、すなわちもはやセットpinctrlが設けられています。

第三に、書き込みデバイスツリーノード

  ドキュメントには、Documentation/devicetree/bindings/leds/leds-gpio.txt私たちは次のことに注意するデバイスノードを作成する際に、書き込みの対応するデバイスツリーノードに付属しているのLinuxを駆動する方法を詳細に説明します。

  • 複数のLEDは、それがdtsledsの子ノードとしてボード上の各LEDを点灯ランプがある場合①、ノードを作成すると、LEDランプ装置、そのようなdtsledsを表します。
  • ②、互換性のある属性値dtsledsノードは「GPIO-LEDの」としなければなりません。
  • ③、ラベルプロパティを設定し、このプロパティはオプションで、それぞれの子ノードは、ラベルのプロパティラベル属性のような緑色及び赤色れるよう色分け語として一般的LEDランプの名前を示しています。
  • 各子ノードは、プロパティ値のGPIOを設定する必要があり④、このLEDは、GPIOピンを使用示します!
  • ⑤、あなたが光機能をLEDデフォルト設定での「Linux、デフォルト・トリガー」プロパティの値を設定することができ、あなたが確認することができますDocumentation/devicetree/bindings/leds/common.txt次のようなオプションが表示された文書を
    • バックライト:バックライトとしてのLEDランプ。
    • デフォルトオン:LEDライトで
    • ハートビート:ハートビートなどのLEDインジケータが点灯し、システムは警告ランプとして実行することができます。
    • IDEディスク:ハードドライブ動作インジケータとしてLEDランプ。
    • タイマー:定期的に点滅するLEDランプ、タイマーによって駆動されるが、点滅周波数を変更することができます
  • ⑥、「デフォルト状態」属性の値を設定することができ、それはオフ、上にセット、または維持、LEDランプ、LEDランプが消灯しているが、その後、現在のモードを保持し続けるために、デフォルトでは、次に、LEDランプをオフにしたときにデフォルトでオンにすることができます。

デバイスノードのためのサンプルコード

dtsleds {
	compatible = "gpio-leds";
	
	led0 {
		label = "red";
		gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
		default-state = "off";
	};
};

第四には、プログラムを実行します

  スタートチェックが/後の新しい開発ボードとzImageのデバイスファイルツリーで始まるsys/bus/platform/devices/dtsledsディレクトリが存在するが、示されているようにも、LSディレクトリのLEDの下に見ることができます:

ここに画像を挿入説明

  LEDが「赤」というサブディレクトリディレクトリがあるでは、サブディレクトリ名は我々がデバイスツリーで設定というラベル属性値です!その後、LEDの点滅コマンドテストを入力します。

echo 1 > /sys/class/leds/red/brightness //打开 LED0
echo 0 > /sys/class/leds/red/brightness //关闭 LED0

  正常に開閉LEDライトが、それは私たちにLEDランプドライバが正常に動作しているが付属してLinuxカーネルを示しています。我々は、一般としてLEDを使用するシステムインジケータシステムが正常動作している場合、LEDインジケータが点滅します。属性情報に「Linuxの、デフォルト・トリガ」を追加することによって、設定方法、このdtsledsノード装置の属性値「ハートビート」は、ノードの内容は、以下の完了後に変更dtsleds。

dtsleds {
	compatible = "gpio-leds";
	
	led0 {
		label = "red";
		gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
		linux,default-trigger = "heartbeat";
		default-state = "on";
	};
};

ボードを実行し、再び再コンパイル交換用のデバイスツリーは、LEDが点滅を見ることができます!

公開された722元の記事 ウォンの賞賛1207 ビュー86万+

おすすめ

転載: blog.csdn.net/ReCclay/article/details/105376106