找回密码
 注册
关于网站域名变更的通知
查看: 190|回复: 0
打印 上一主题 下一主题

【嵌入式开发教程9】疯壳·平板电脑-G-sensor 驱动实验教程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-8 16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
G-sensor 驱动实验教程
——疯壳·嵌入式平板开发
# N6 W. c6 j3 G( t4 S1 _

5 g# T  F& K3 y  n( g7 R  l
$ ~1 T# u: _2 f4 M3 X2 E! v2 o4 ]" s7 O4 o
第一节 引言 --- G-sensor 电路原理图详解
/ m0 D# C  G( k- }8 N* |+ [. m5 Y9 X) J  {5 t
  下图来源于文档 3128_sdk_a02_20170325.pdf 中第 2 页和第 12 页。' q; k+ ?3 M0 n' T5 G* O5 ?/ U2 G
  如下两张图可以确定 G-sensor 是通过 I2c 与 cpu 相互通信的,cpu 作为主设备,G-sensor 作为从设备。因为 cpu 的 I2c 不仅仅与 G-sensor 相连,它连接了多个 I2c 从设备,并且通过从设备地址来确定当前和哪个从设备通信。
/ Y" d! c7 B, X' |2 }2 ?, _' u
/ F& U" e* C/ I! P- P
! U" t! t. j( ~. {; s. p图18 S# K, W6 K1 u, }0 R$ V
& m% q, x6 ?4 V9 y
( i  B" b: F0 @/ Y
图2
' M2 T, j- p/ `" Y  C" Z  h5 f+ |, P; Z* Z: J
第二节 G-sensor 驱动代码结构
+ F: ^' x% L# U) z3 w" |+ T1 K7 ]  Z, k) c% n0 k# i( J8 u
  $(dir)\rk3128-source\kernel\drivers\input\sensors\accel\mma8452.c
  \1 u8 H8 b" Z3 r' z) x: y4 e" {  从代码路径可以看出 G-sensor 驱动和 input,sensor 设备有莫大的关系。
5 `, g9 L4 b' E% z
2 O3 Y8 K& m6 |* A+ u 5 D4 N! T7 E* ]$ D% W6 O
图3
8 H* u; M% n. v# v  $(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-dev.c
. u9 y* C- _3 K% W  --- sensor 设备注册,主要是注册 sensor,input 设备,解析 dts 配置文件0 I6 G; C% K+ N& K
  $(dir)\rk3128-source\kernel\drivers\input\sensors\sensor-i2c.c; J$ x2 T  Q+ ~
  ---sensor 的 I2c 相关处理
+ i7 S0 C$ l' v3 g& f0 [) s/ |, q& Y
第三节 实验代码
+ ^% l' z$ X+ o6 h! Q; u
% C) e8 H- v; @1.dts 修改:  z* z% B7 [" _3 f- a5 E0 V
9 G, M+ g& f4 ]6 z1 f

8 s& O& G: `: n0 U0 k  ~代码1
& @5 b% I. v" J$ D! m2.增加一个可以动态调节方向的测试函数如下(在 sensor-dev.c 中),用户可以通过adb shell 或者串口去输入数据完成屏幕方向调节的功能。" |  q3 U. Y6 H0 `8 S9 l

, U* g" p! V9 H$ F6 p+ Z: ?. f2 p
7 m8 |' I9 N( f* E0 O# n
( G; b1 z" Q: g1 n8 g( L. m& z代码2: b( G. N( z6 m" g4 a, S- U
3.输入命令格式
8 T/ D& h+ d- T5 R3 la.系统缺省的方向配置如下. U6 K9 r, a! {0 p
echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation b.测试命令如下5 P$ t- a0 d& a4 l
echo gsensor_class={1, 0, 0, 0, 0, 1, 0, 1, 0} > /sys/class/gsensor_class/orientation- D& q: Y8 q3 O

8 ^- f$ i# a. r& m% i! Hecho gsensor_class={0, 1, 0, 1, 0, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation
  Z. a4 d4 y1 Q9 L, k8 c9 @* g4 K8 l5 @5 x& ?% M
echo gsensor_class={0, 1, 0, 0, 0, 1, 1, 0, 0} > /sys/class/gsensor_class/orientation
3 p5 ?' e2 M/ m: L4 X8 H' |8 M3 x; t3 z1 _7 D$ f$ N6 N
echo gsensor_class={0, 0, 1, 1, 0, 0, 0, 1, 0} > /sys/class/gsensor_class/orientation8 }5 d  P$ Q9 k9 J
echo gsensor_class={0, 0, 1, 0, 1, 0, 1, 0, 0} > /sys/class/gsensor_class/orientation 2 f% J( {% E. _5 [
2 W  m8 g1 I# C+ f
4.代码调试中遇到问题! s9 K& J# [8 k4 E& ]$ s
  如果 gsensor_set_orientation_online()直接返回 0 或 1 而不是 count,会出现什么情况?为什么?   1 Z9 {2 s" }* P  b" y
  如果 echo gsensor_class={1, 0, 0, 0, 1, 0, 0, 0, 1} > /sys/class/gsensor_class/orientation 命令提示输入不生效,可以尝试输入 su 命令提高一下权限。在我们开发板上面, adb 默认是 root 的,所以 adb shell 之后,直接是 root 用户。可以用 su 切换,也可以不用切换。
/ ?! \4 V- |- g
0 v2 ]9 ~. N2 ^3 \2 a2 W第四节 实验步骤 --- GSENSOR 怎么调节方向
4 W) F9 X6 |# k0 y* @' `7 X, H5 g) c
  一般 GSENSOR 芯片贴片的位置变了,变换坐标就要跟着调整。& x' d/ V  A; J% R1 g4 v# {. l
  我们 Gsensor 是贴片好了的,这个用户无法更改,但是用户可以模拟一下如果板子不平放而是竖着放,屏幕平放的情况看优酷,如果保证屏幕的正常显示。
8 t3 k: j; F' H3 J3 {
( Z: S3 [: ^/ H$ ?. M$ E, ~第五节 实验现象7 f- [1 S2 }. N7 r! P
! y; Z% R+ y* K- [8 t% U9 Q6 G
  开发板放置成如下图一方向,什么命令可以让屏幕横着播放视频?3 o8 b7 F4 G1 D3 p/ V# v8 \6 q
  echo gsensor_class={-1, 0, 0, 0, -1, 0, 0, 0, -1} > /sys/class/gsensor_class/orientation
7 `: v  P$ y4 \* A. N, }7 b$ v9 o- J  输入如上命令后,屏幕变了,如图二。
7 z  X, Z) a# Y) N# ]; C# i1 Q$ [. T  H' R

8 D6 {3 R. u, j$ f+ A图4
6 T3 b4 n) a4 O6 U( `# f
4 E  z9 W$ ~6 `* p% w# f# C * n6 @+ ^, V: f( @" ^' S
图5% e9 h5 A' Q  a* r
) W6 O7 ]# i5 G; ?1 Y$ Y

+ A( O2 m# t# v3 n3 G6 m1 s$ j) S( C  y

3 I; M5 b( E% X' W" O文件下载请点击: 9、G-sensor驱动实验教程.pdf (631.95 KB, 下载次数: 0) 5 x4 {+ [4 I1 g9 E" @

( Z. `$ v) g8 ^7 k8 `7 g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 02:50 , Processed in 0.140625 second(s), 28 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表