AOSPにあるContextHubのファームウェアのソースコードを眺めてみました。
このソースコードは、SensorHub(センサー制御用)MCUのファームウェアのソースコードです。
Google Nexus6Pで実際に使われているっぽいです。
(それ以降の機種は基板上にMCUが見当たらないので、SoC内臓されているCPUコアをつかっているのでしょうか?)
linkedinの情報によると、ExynosとかHTCの人もContexthubのコードを使っているみたいなので、Google以外の端末メーカーも使っているっぽいっです。
OS
- Googleが開発した独自OSです。名前は不明です。 (ソースコード内にseosという表記もあるけど。)
- タスク
- タイマ
- イベント
- メモリ管理 SlabAllocatorがある。
- システムコール
- AOSPにあるのはSTM32F411RE用のコードです。
センサー
- 対応しているセンサー
ams_tmd2772 色センサ
ams_tmd4903 色センサ
bosch_bmi160 BMI160 BMM150 AK09915 地磁気センサ
bosch_bmp280 気圧センサー
intersil_isl29034 光センサー
invensense_icm40600
rohm_rpr0521 照度・近接センサー
si_si7034 SI7037 湿度・温度センサー
st_acc44 LIS2DW12 加速度センサ
st_hts221 HTS221 湿度・温度センサー
st_lps22hb LPS22HB
st_lsm6dsm LIS3MDL LSM303AGR AK09916
st_mag40 LSM303AGR LSM303AH LIS2MDL磁気センサー
synaptics_s3708 タッチセンター
vsync GPIOでvsyncを検出
ライブラリ
- libc
- ARM, FreeBSD, OpenBSD 由来のコードを使っている
- crtとmemとstrぐらい
- libm
- cygnus, FreeBSD由来のコード
- センサーのデータ処理に浮動小数点の算術関数が必要です。
ホストインターフェース
- Androidが動いているホストとの接続はI2CまたはSPIを使う。
ボード
このソースコードを動かすためのボードが96boardsの拡張ボードとして提供されています。
aliexpressで29.99USDで購入できます。