6

Android デバイスにファームウェアを正しく配置できません。

<3>[ 3590.997375] usb 3-1.4: ath9k_htc: Firmware - htc_7010.fw not found

Ubuntu を実行している標準の Linux マシンで、htc_7010.fw を /lib/firmware に配置すると、このエラーは発生しません。

ただし、このファームウェアを Android の /lib/firmware に配置すると、エラーが発生します。次のディレクトリをすべて試しましたが、それでもエラーが発生します。

/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc

そのような運はありません...ファームウェアがどこにあるべきかを決定するものは何ですか?また、ファームウェアをスキャンしているディレクトリをどのように判断できますか?

4

3 に答える 3

8

Android(とにかくICS)には、ファームウェア要求を含むホットプラグイベントを管理するための独自のデーモン/サービス(またはあなたがそれを呼びたいもの)があります。では、ファームウェアがチェックされる場所を指定する<android>/system/core/init/devices.c2 つの があります。#define

#define FIRMWARE_DIR1   "/etc/firmware"
#define FIRMWARE_DIR2   "/vendor/firmware"

ICS ファイルシステムの最初のビルドでは、/etc/firmware存在しませんでした (そして、etc ディレクトリは、ブート/初期化時に作成されたシンボリック リンクのようです)。NFS マウントされた rootfs にファームウェアを配置する必要があったディレクトリは、<mount point>/system/etc/firmware

これを行った後、モジュールからの request_firmware() 呼び出しが正常に完了しました。

于 2012-08-09T13:23:15.630 に答える
1

カーネルは、ユーザー空間スクリプトを実行してファームウェアをロードします。スクリプトが正しい場所にあるかどうかを確認します。

  1. カーネルがスクリプトを探す場所を確認します。/ # cat /proc/sys/kernel/hotplug. デフォルトの場所は「/sbin/hotplug」です。
  2. この場所に、カーネルが探しているスクリプトがあるかどうかを確認してください。Android では、スクリプトは "/system/busybox/sbin/mdev" である必要があるため、そうでない場合は "/proc/sys/kernel/hotplug" をこれに設定できます。
于 2011-06-27T09:33:42.720 に答える