apq8053 Androidthings 底层硬件接口分析
//Androidthings 传感器流程
注册 SensorManager.DynamicSensorCallback
注册驱动服务 ProximityService
ProximityService中注册 Vcnl4200SensorDriver
Vcnl4200SensorDriver注册 UserDriverManager
UserDriverManager 调用 UserSensorReading
UserSensorReading调用readLight 真正的读取设备数据
在使能函数中做设备初始化。
//命令获取到的硬件接口
adb shell pio list uart
msm8x53_som:/ # pio list
gpio GPIO_0
gpio GPIO_1
gpio GPIO_117
gpio GPIO_127
gpio GPIO_13
gpio GPIO_140
gpio GPIO_35
gpio GPIO_42
gpio GPIO_43
gpio GPIO_44
gpio GPIO_45
gpio GPIO_46
gpio GPIO_48
gpio GPIO_65
gpio GPIO_68
gpio GPIO_85
gpio GPIO_86
gpio GPIO_87
gpio GPIO_98
gpio GPIO_99
i2c I2C1
i2c I2C2
uart UART6
接口配置
./msm8x53/somconfig/hardware_capabilities.xml
//在命令行测定GPIO
msm8x53_som:/ # pio gpio GPIO_85 read
1
系统中调用的是:
/etc/somconfig/default_configuration.pb
配置了需要的接口
在/device/qcom/msm8x53/msm8x53.mk中
P I/O HAL and SOM config for 8x53
202 PRODUCT_PACKAGES +=
203 default_configuration.pb
204 peripheral_io.msm8x53
205
206 # Camera
207 include device/qcom/msm8x53/camera.mk
208
209 # Keymaster
//映射函数
./qcom/msm8x53/pio_hal/pio_hal.cpp:98: // GPIO_1019 is a special-case, virtual GPIO that reflects the state of
./qcom/msm8x53/pio_hal/pio_hal.cpp:104: callbacks->register_sysfs_hidden_gpio(“GPIO_1019”, 1019);
//注册函数RegisterPeripherals
//从底层中取到节点然后注册 这个是example,更能直观的看出接口获取
// Initialization callback from PIO to register all known I/O. Called once
// on PIO daemon startup.
static int RegisterPeripherals(const pio_module_v1_t* /module/,
const pio_registration_callbacks_t* callbacks) {
// Register all the pins first.
for (const PioPin* pin : GetPins()) {
callbacks->register_pin(pin->hal_pin());
}
// Now link functions to their sysfs paths so PIO knows where to find them.
// Sysfs paths are just made up for this example HAL.
// GPIOs: /sys/class/gpio/gpio
callbacks->register_sysfs_gpio(“GPIO_A0”, 0);
callbacks->register_sysfs_gpio(“GPIO_A1”, 1);
callbacks->register_sysfs_gpio(“GPIO_A2”, 2);
callbacks->register_sysfs_gpio(“GPIO_A3”, 3);
callbacks->register_sysfs_gpio(“GPIO_B0”, 8);
callbacks->register_sysfs_gpio(“GPIO_B1”, 9);
callbacks->register_sysfs_gpio(“GPIO_B2”, 10);
callbacks->register_sysfs_gpio(“GPIO_B3”, 11);
callbacks->register_sysfs_gpio(“GPIO_B4”, 12);
callbacks->register_sysfs_gpio(“GPIO_B5”, 13);
callbacks->register_sysfs_gpio(“GPIO_B6”, 14);
callbacks->register_sysfs_gpio(“GPIO_B7”, 15);
// I2C0: /dev/i2c-4
callbacks->register_sysfs_i2c(“I2C0”, 4);
// PWM0: /sys/class/pwm/pwmchip0/pwm0
// PWM1: /sys/class/pwm/pwmchip1/pwm2
callbacks->register_sysfs_pwm(“PWM0”, 0, 0);
callbacks->register_sysfs_pwm(“PWM1”, 1, 2);
// SPI0.0: /dev/spidev1.0
// SPI0.1: /dev/spidev1.15
// SPI0.2: /dev/spidev1.32767
pio_sysfs_spi_chip_select_t chip_selects[] = {{0, 0}, {1, 15}, {2, 32767}};
callbacks->register_sysfs_spi(
“SPI0”, 1, chip_selects, arraysize(chip_selects));
// UART0: /dev/ttyS4
callbacks->register_sysfs_uart(“UART0”, “/dev/ttyS4”);
return 0;
}
系统中跑了一个peripheralman进程
peripheralman.rc
service peripheralman /system/bin/peripheralman
class main
user root
# Some UARTs are shared with Bluetooth, so give peripheralman access to the
# bluetooth group rather than giving everyone rw access to those devices.
# See b/78327678 and b/112380556.
group system bluetooth
onrestart restart zygote
msm8x53_som:/ # ps -A |grep peripheralman
root 517 1 38500 12516 SyS_epoll_wait 0 S peripheralman
apq8053 Androidthings 底层硬件接口分析相关推荐
- linux底层硬件需求,Linux系统的硬件设备驱动的底层结构讲解
什么是驱动?最通俗的解释就是"驱使硬件设备行动" 作用?设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询.中断处理.DMA通信,进行物理内存向 ...
- 避免关注底层硬件,Nvidia将机器学习与GPU绑定
Nvidia释放的一组cuDNN的库,有效的实现了其与多种深度学习框架的整合.基于cuDNN,加速了代码的运行,同时让研究员避免去关心底层硬件性能. 关键字: 编程语言语音识别Nvidia 原文链接: ...
- 大数据基础环境搭建的从spark到hadoop,从底层硬件到上层软件的一些必备注意事项
一.硬件环境 硬件如何搭配,能做到比较高的性价比,不存在短板.合理的硬件搭配,对系统的稳定性也很关键. 1.CPU不是核数越高越好,性价比才是关键. 经常遇到很多的企业级客户,他们机器配置非常高,CP ...
- 三菱A系列老PLC的数据采集,MES系统采集,工业智能数据采集底层硬件方案
三菱老款A系列PLC,采用的是DB25接口,该接口目前已被淘汰,目前主流采用DB9针口,进行串行数据通讯:本文介绍一种DB25针转换成以太网网口的可行方案: 通过BCNet-A以太网通讯处理器,满足日 ...
- IBM发明世界首个人造神经元,人工智能的底层硬件基石已完成!
from: http://it.sohu.com/20160804/n462610626.shtml 图片来源:IBM 编者按:从AlphaGo击败李世石,宣布超级计算机攻克了围棋这一穷举法不可能征服 ...
- Linux内核协议栈-一个socket的调用过程,从用户态接口到底层硬件
用户创建socket 调用内核__sock_create int __sock_create(struct net *net, int family, int type, int protocol,s ...
- 04【Verilog实战】SPI协议底层硬件接口设计(附源码RTL/TB)
脚 本:makefile 工 具:vcs 和 verdi 写在前面 这个专栏的内容记录的是个人学习过程,博文中贴出来的代码是调试前的代码,方便bug重现. 调试后的程序提供下载,[下载地址] 发现 ...
- 三菱FX以太网采集,MES系统采集,数据采集底层硬件方案,GX Works2以太网连接FX
简介 BCNet-FX是一款经济型的以太网通讯处理器,是为满足日益增多的工厂设备信息化需求(设备网络监控和生产管理)而设计,用于三菱FX1S/1N/2N/3S/3G/3GA/3GC/3U/3UC系列. ...
- 底层硬件创新夯实算力、应用创新贴近业务:英特尔至强助力下的VR医疗培训系统
早在1935年,科幻小说家斯坦利·温鲍姆的小说<皮格马利翁的眼镜>中,就构想了一款实现虚拟现实(VR)的眼镜.近年来,除游戏.娱乐等大众熟知的应用场景外,VR逐渐涉足医疗.教育.生产制造等 ...
最新文章
- 配置安装光盘为yum源
- idea 新建的java项目没发run_IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行...
- 17.QT-事件处理分析、事件过滤器、拖放事件
- CentOS7加入windows 2008 AD域
- java foreach跳出本次循环_Java中提供三种常用的循环语句
- Visual.Assist.X.V10.7.1946的汉化破解补丁
- 信息学奥赛一本通C++语言——1119:矩阵交换行
- Open3d之python版本快速安装和使用
- html的vue项目怎么兼容ie,Vue项目兼容IE/360方法
- java中aop和aoc的区别_你喝到的波尔多AOC、AOP红酒是真的吗?
- 爬虫实战 -- QQ空间自动点赞
- js pug 代码_Pug模板(一)
- 科学家们认为 计算机不可能,健汉语语法与中国人的思维能力
- UED团队规范设计参考及建议
- DeskMini310 黑苹果(hackintosh)
- 泛在网作业-----码分多址通信
- android游戏降低画质,sky光遇画质模糊怎么办 调整游戏画质的方法
- 你会微信小程序自定义底部导航栏吗?
- J2EE struts2MVC应用在线书签1
- HTTP/1.1 中 If-Modified-Since 和 If-Unmodified-Since 区别简记