2

моего телефона Android имеет под /system/lib/hw следующие файлы среди прочего:Что использует /system/lib/hw/sensors.*.so на Android (и где источник)?

  1. sensors.exynos4.so
  2. sensors.smdk4210.so

Эти динамические библиотеки находятся где-то в цепи для датчиков, таких как компас, гироскоп и окружающий свет.

Первый файл (sensors.exynos4.so) происходит от самого дистрибутива (работает CyanogenMod 10.1 для i9100), второй (sensor.smdk4210.so) - это то, что я выловил из запасного ПЗУ для своего телефона (SHW-M250S, «Korean S2», вариант i9100) и скопировал его там.

Question1: Что использует эти файлы?

Выполнение ldd (на самом деле readelf или objdump) по всем двоичным файлам и библиотекам системы не выявило пользователей этих файлов. Мой вывод: кто-то должен загружать их, как плагины, во время выполнения после динамической компоновки! Но кто/что? (Имя исходного кода файл или ссылки на код браузер, пожалуйста)

Пользователей этих библиотек перешли от первого ко второму без каких-либо конфигураций (после того, как я положил его там). Я хотел бы вникнуть в эту тайну.

Вопрос2: Где источник этих файлов?

Файлы содержат (по крайней мере) конфигурацию датчиков (например, позиционирование на плате, диапазоны значений и этапы). Я хочу создать правильный для моего телефона. Если у меня есть источник обоих, было бы легко сделать это. - Имея только версию CyanogenMod, я могу, по крайней мере, угадать необходимые исправления.

Примечание:

  1. Нет догадки ответов.
  2. Если часть вашего ответа является «двоичный»:
    1. точка меня в сгустки в источнике CyanogenMod или скрипт, который вытягивает их.
    2. следовать цепь на первой библиотеки с открытым исходным кодом/программы, которая их использует.
  3. Вопросы на самом деле не являются конкретными устройствами. - Ответьте на любое устройство в виду, ситуация должна быть аналогичной (AOSP, AOKP, CyanogenMod, ...).

ответ

2

Это бинарные капли.

Имеет sensors.exynos4.так и другие проприетарные сгустки https://github.com/chris41g/proprietary_samsung_epic4gtouch/tree/master/proprietary/lib/hw

Капля может быть выведена из запущенного устройства со сценарием приточно-файлов, который считывает список собственных файлов из патентованного-files.txt в проекте для любого устройства вы строите CM для.

Попробуйте найти файлы в формате Google или просмотреть дерево CM или их вики.

HAL - это уровень абстракции оборудования - это интерфейс, который используется для получения данных датчиков из драйверов ядра/устройства обратно в пользовательское пространство. нашел это PDF, который обсуждали построение Android HAL, но для другого устройства, а выход описано там

После успешной загрузки и собрали Android источников, пользователь может собрать и добавить/заменить датчик HAL библиотеку. Для этого скопируйте папку библиотеки HAL датчика на пути андроид источников, как правило, находится в:
[Root Android Sources]/vendor/[vendor name]/[boardname]/

Перед операцией сборки библиотеки, пользователь должен инициализировать Android среды:
[Root Android Sources]$ source build/envsetup.sh
[Root Android Sources]$ lunch [target board]

Теперь возможно построить библиотеку; просто запустите команду «мм» в папке HAL. Результатом этого процесса является динамическая библиотека расположена в здании:
[Root Android Sources]/out/target/product/[board name]/system/lib/hw/sensors.[board name].so

В случае датчиков, то SensorService загружает HAL, чтобы он мог говорить с датчиками.

HAL
Building HAL

Update:

ли еще немного рыть вокруг моего CM дерева устройства/Samsung/i9100 содержит файл Android.mk, который строит sensors.exynos4.so. .mk файл specifieds модуль как
LOCAL_MODULE := sensors.$(TARGET_BOARD_PLATFORM), который установлен в device/samsung/galaxys2-common/BoardCommonConfig.mk.

Существует источник в device/samsung/i9100/libsensors для этого устройства. Однако, глядя на устройство/samsung/i9100g, нет никаких libsensors, и для этого устройства требуется запустить сценарии CM, чтобы вытащить blob из работающего устройства, поэтому доступность источника по-прежнему зависит от устройства.

Также просто наблюдение, что BoardConfig устанавливает некоторые значения для smdk4210.

0

я еще не могу ответить, что использует эти файлы, но источник для датчиков * так приятно перемещаться в CyanogenMod:..

Каждое поддерживаемое устройство имеет запись вики, которая указывает на GitHub репо (например, i9100 source). Там вы найдете дополнительные репозитории в cm.dependencies, которые вместе охватывают то, что вам нужно для создания CM для рассматриваемого устройства (например, ядро, общие файлы, совместно используемые для группы устройств, ...).

В случае i9100 мы можем оставаться в корневом репозитории.В libsensors/Android.mk мы видим, что файлы sensors.<ro.product.board>.so создаются по файлам в этом каталоге. Источник все там (для устройства i9100), кроме libakm.so (двоичный, в соответствии с ../proprietary-files.txt), который является dlopen() ed в AkmSensors.cpp. libakm.so используется для включения и отключения некоторых датчиков, но также создает/dev/input/eventX, виртуальное устройство ввода, отражающее три доступных датчика (компас, ускорение, ориентация). (Я не знаю, как ядро ​​«работает» виртуальные устройства.)

(датчиков * так является Аппаратно Abstraction Layer -... Для i9100 он обрабатывает некоторые/DEV/вход/событие * устройство. Я не проверял ядро ​​для получения информации об этих ...)