2

gpio 割り込みの問題で困っています。ep93xx ポート A、B、F のドキュメントによると、割り込みを生成するように構成できます。見積もり:

19 の GPIO ラインのいずれかが割り込みを生成するように構成されている可能性があります

ただし、arch/arm/march-ep93xx/gpio.c はポート A からの割り込みのみを処理しており、ポート B と F には反応しません。

static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
{
    unsigned char status;
    int i;
    printk(KERN_INFO "ep93xx_gpio_ab_irq_handler: irq=%u", irq);

irq_handlers で printk がひどいことは知っています。

sysfs 経由でイターラプトを設定しています。

発行することが重要な場合、GPIO 0,8 はポート F に配線されます。また、ポート A を構成せずにポート B で割り込みを有効にすると、次の警告が表示されます。

------------[ cut here ]------------
WARNING: at drivers/gpio/gpiolib.c:103 gpio_ensure_requested+0x54/0x118()
autorequest GPIO-1
Modules linked in:
[<c002696c>] (unwind_backtrace+0x0/0xf0) from [<c00399d4>] (warn_slowpath_fmt+0x54/0x78)
[<c00399d4>] (warn_slowpath_fmt+0x54/0x78) from [<c019dd90>] (gpio_ensure_requested+0x54/0x118)
[<c019dd90>] (gpio_ensure_requested+0x54/0x118) from [<c019e05c>] (gpio_direction_input+0xb0/0x150)
[<c019e05c>] (gpio_direction_input+0xb0/0x150) from [<c002c9a8>] (ep93xx_gpio_irq_type+0x3c/0x1d8)
[<c002c9a8>] (ep93xx_gpio_irq_type+0x3c/0x1d8) from [<c0066ad8>] (__irq_set_trigger+0x38/0x9c)
[<c0066ad8>] (__irq_set_trigger+0x38/0x9c) from [<c0066e14>] (__setup_irq+0x2d8/0x354)
[<c0066e14>] (__setup_irq+0x2d8/0x354) from [<c0066f38>] (request_threaded_irq+0xa8/0x140)
[<c0066f38>] (request_threaded_irq+0xa8/0x140) from [<c019e784>] (gpio_setup_irq+0x14c/0x260)
[<c019e784>] (gpio_setup_irq+0x14c/0x260) from [<c019ec1c>] (gpio_edge_store+0x90/0xac)
[<c019ec1c>] (gpio_edge_store+0x90/0xac) from [<c01be8fc>] (dev_attr_store+0x1c/0x28)
[<c01be8fc>] (dev_attr_store+0x1c/0x28) from [<c00e8b2c>] (sysfs_write_file+0x168/0x19c)
[<c00e8b2c>] (sysfs_write_file+0x168/0x19c) from [<c009a3d4>] (vfs_write+0xa4/0x160)
[<c009a3d4>] (vfs_write+0xa4/0x160) from [<c009a6a4>] (sys_write+0x3c/0x7c)
[<c009a6a4>] (sys_write+0x3c/0x7c) from [<c0020e40>] (ret_fast_syscall+0x0/0x2c)
---[ end trace ff56c09a294dbe68 ]---

カーネル バージョン 2.6.34.14 と linux-2.6.34-ts7200_matt-6.tar.gz パッチを使用しています (ただし、gpio.c または gpiolib.c のパッチは含まれていないようです) クロス バージョン:

binutils-2.23.1
gcc-4.7.3
glibc-2.17

また、gpio.c と gpiolib.c の変更履歴をクロールしましたが、この問題に関連するものは見つかりませんでした。

誰かがこの問題について私とアドバイスをくれますか? Aだけでなく、すべてのポート(A、B、F)で割り込みが必要です。

4

2 に答える 2

2

この問題(およびARM irq OR interrupt )について多くの質問があります。それらを見てください。

最新のLinux 3.0 gpio.c の変更ログと2.6.34 のログおよび現在のバージョンを比較すると、多くの変更点を確認できます。現在のLinux 安定版ツリーを取得し、これらのパッチを抽出してカーネルにバックポートできるはずです。たとえば、ポート CFが入れ替わるバグがあります。これがts7200_mattバリアントにあるかどうかはわかりません。

注目すべきいくつかの重要な変更セット

  1. arm: irq_set_chip/irq_set_handler を折りたたむ
  2. arm: irq 名前空間をクリーンアップします
  3. arm: ep93xx: 適切な irq アクセサ関数を使用してください
  4. arm: ep93xx: 基本的な割り込み情報を追加
  5. ARM: ep93xx: irq_data 変換。
  6. ARM: 5954/1: ep93xx: gpio 割り込みサポートを gpio.c に移動
  7. [ARM] 5243/1: ep93xx: バグ修正、GPIO ポート C と F が入れ替わる

#6があるかもしれませんが、基本的にはコントローラーの割り込み実装で​​あるため、一見の価値があります。linux-3.0の後、SOC の GPIO コントローラーはdrivers/gpio/gpio-ep93xx.cに移動されました。これらの変更を確認したい場合がありますが、問題に関連するものはないようです。Linuxの構造上の変更に注意する必要があります。つまり、割り込み処理および/または一般的なGPIO インフラストラクチャに対する全体的な変更です。Thomas GleixnerまたはRussell Kingがこれらの変更を行うと推測できます。

パッチは、特定のLinux 安定版ツリーから .xml を使用して抽出できますgit format-patch b685004.. b0ec5cf1 gpio.c。これにより、複数のパッチ ファイルが作成されます。それらをツリーに移動し、git amまたはで適用しますpatch -p1。これらのファイルをツリーにきれいに適用するには、これらのファイルをマッサージする必要がある場合があります。それらが割り込み処理に関係していなくても、それらをすべて取得すると、これを自動的に実行する方がうまくいきます。パッチ セットを確認し、テキスト エディタを使用してファイルに手動でパッチを適用することもできます。

これはどれも、あなたの特定の質問には対応していません。ただし、最新の Linux バージョンからの変更をマージするためのパスが提供されます。また、以前のスタック オーバーフローの質問では、 GPIO 割り込み処理の構造について詳しく説明しています。データ シート、Linux GPIO ドキュメント、および指定された変更セットを組み合わせることで、独自の問題を修正できるはずです。それ以外の場合は、EP93xxに詳しい人が必要で、質問はかなりローカライズされています。

注:スタック トレースは、GPIOが対応するなしで使用されていることを示しますgpio_request() 。これは、マシン ファイルまたはEP93xx GPIO 割り込み処理コードのバグです。

于 2013-06-02T16:53:26.540 に答える
2

同じ警告がありました:

------------[ cut here ]------------
WARNING: at drivers/gpio/gpiolib.c:103 gpio_ensure_requested

私の調査によると、 の前にgpio_request_one/を呼び出す必要があります。gpio_requestgpio_direction_input

それは私のために問題を解決しました。

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=99789

http://e2e.ti.com/support/embedded/linux/f/354/p/119946/427889.aspx

于 2014-04-20T23:45:29.377 に答える