2017-09-29 6 views
2

私たちはカスタム開発ボードに取り組んでおり、現在はAndroid 7.1に "Sensor HAL"を実装しています。Android HALはpoll()関数でシステムをスタックさせます

私たちはAndroidセンサーサービス要件(sensor.h)に従って "Sensor HAL" APIを実装しており、.soファイルを同じように構築することができます。 (一部のカスタム修正のため、すでに利用可能なHALは使用できません)

「Sensor HAL」を統合した後、Androidはハング状態になり、Androidのロック画面まで到達できません。

私たちの観測WRT Androidのセンサーのサービス動作

  1. SensorService:nuSensorService ...

  2. を開始する "センサーHALは、" センササービスによって読み込ま

  3. "センサーHAL" オープン呼び出しに成功

  4. 「センサーHAL」get_sensor_list呼び出し成功

  5. "Sensor HAL"ポーリング関数が毎回成功して呼び出しを呼び出します。 58:48.258 1461 1461 D SensorService:nuSensorService は...
    を開始

  6. Androidのブートは "Bootanimation" 画面でREFERENCE

    01-01 00 FOR

LOGSを立ち往生01-01 00:58:48.260 1461 1461 D Sensor_HAL:OpenSensors:name = poll
01-01 00:58:48.260 1461 1461 D Sensor_HAL:終了しています... OpenSensors:name = poll
01-01 00:58:48.260 1461 1461 D Sensor_HAL:58:48.260 1461 1461 D Sensor_HAL:の終了@GetSensorList
01-01 00:58:48.261 1461 1461 D Sensor_HAL:@GetSensorList
01-01 00の入力@SensorDeviceActivateは、0を扱う入ると、0を有効に
01-01 00:58:48.261 1461 1461 D Sensor_HALは:@SensorDeviceActivateは、1を扱う入ると、0
01-01 00有効:58:48.262 1461 1461 D Sensor_HALを:入力@ SensorDeviceActivateは、2ハンドル0
01-01 00有効:58:48.262 1461 1461 D Sensor_HALを:入力@GetSensorList
01-01 00:58:48.262 1461 1461 D Sensor_HAL:の終了@GetSensorList
01-01 00:58:48.262 1461 1461 D Sensor_HAL:入力@GetSensorList
01-01 00:58:48.262 1461 1461 D Sensor_HAL:の終了@GetSensorList
01-01 00:58:48.264 1461 1463 D SensorService :nuSensorServiceスレッド 開始...
01-01 00:58:49.953 1461 1462 D SensorService:システムがハングアップする原因となっている新しいスレッドSensorEventAckReceiver

=>上記コールポーリング機能。

=>ここでAndroidが起動しました。

現在のpoll()コマンドの実装では、タイムスタンプ付きのダミーAccelerometerイベントが上位レイヤに返されています。戻り値は、コピーされたデータイベントの数です。

何かが不足しているか間違っていることがわかったら私を修正してください。

+0

私たちはまだこの問題に直面しています。これまでにこの問題に直面した人はいますか?事前にあなたの助けを感謝しました。 – Harshit

答えて

0

みんな、

は最後に、私は遅延が同じ機能に追加することでこの問題を解決することができています。

スレッドでPoll()関数が呼び出され、システムクライアント(SensorManager)にイベントが送信されています。遅れなく関数から直接戻ってくるので、イベントはより高速にプッシュされ、他のスレッドのスケジューリングの時間はありません。

これを完了するには、遅延の量が必要です。

関連する問題