Как Java работает с UART в Android?
Вопрос чисто теоретический.
В Android есть SerialPort API в Java, которое позволяет работать с UART. И тут у меня один вопрос: вот как Java работает с UART "в обход" ядра?
Смотрите, в чем проблема. Пусть даже это Java машина, вследствие чего она имеет значительные привилегии в системе, но вся поддержка внешних устройств упирается в ядро Linux. В /proc/config.gz я не нашёл строк на CP2102, RS232 или UART, а даже то, что нашёл подходящего, было в NO. Т е, в ядре нету (?) поддержки Serial USB.
Когда я подключаю CP2102 переходник в ПК, у меня там появляется /dev/ttyACM0, к которому я могу подключиться. На Android такого устройства не появляется. Зато с ним я могу работать из необходимых приложений.
Вот реально парадокс: как вообще так получилось, что zygote работает с ttyACM0 на будь здоров, а вот собственно система вообще молчит, будто и не поддерживает вовсе этот ваш Serial. Если даже в ядре есть поддержка Serial (а она должна быть, иначе я вообще не понимаю, что за чертовщина творится в Android), то почему она не работает так штатно, как в обычном Linux, и как zygote все-таки получает доступ к устройству Serial USB? Что-что, а Android на уровне базовой системы и ядра - это все-таки Linux...
Ответы (1 шт):
Узнал (причём не так уж и давно) про userspace драйвера, точнее - "uio". Пара устройств /dev/uio есть в моём телефоне, походу это они отвечают за UART.