MTK平台学习

1. 如果需要定制GPIO口呢,需要使用mediatek/dct/DrvGen.exe工具,点击Open,选择mediatek/custom/project_dir/kernel/dct/dct/codegen.dws文件,点击Edit,将出现如图所示的一个窗口:

2.  中断设置,你参考下代码TP的中断设置 medtek/custom/common/kernel/tpuchpanel/S3202 你看下 probe里面 就是一个初始化mt_set_gpio还有就是中断注册mt65xx_eint 

mt_set_gpio函数 

3. 函数宏DEVICE_ATTR内封装的是__ATTR(_name,_mode,_show,_stroe)方法,_show表示的是读方法,_stroe表示的是写方法。

当我们将数据 echo 到接口中时,在上层实际上完成了一次 write 操作,对应到 kernel ,调用了驱动中的 “store”。同理,当我们cat 一个接口时则会调用 “show” 。到这里,只是简单的建立了 android 层到 kernel 的桥梁,真正实现对硬件操作的,还是在 "show" 和 "store" 中完成的

在内核中, sysfs 属性一般是由 __ATTR 系列的宏来声明的,如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_ATTR ,对驱动使用 DRIVER_ATTR ,对类别(class)使用 CLASS_ATTR, 这四个高级的宏来自于 <include/linux/device.h>, 都是以更低层的来自 <include/linux/sysfs.h> 中的 __ATTR/__ATRR_RO 宏实现。

4. 权限问题  find . -name "init.rc" | xargs -n 10 grep -i "mtgpio" --color

./mediatek/custom/banyan_addon_x86/factory/init.rc: chmod 0666 /dev/mtgpio

5. cust_gpio_boot.h 这个就是配置后的gpio  

关于event及input子系统

6. 在下面的H:中可以看到对应的eventxx。cat /proc/bus/input/devices

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="mtk-tpd-kpd"
P: Phys=
S: Sysfs=/devices/virtual/input/input5
U: Uniq=
H: Handlers=event5
B: PROP=0
B: EV=3
B: KEY=1000 40000800 0 0 0 0


ll /dev/input
crw-rw---- root input 13, 64 2010-01-02 04:31 event0
crw-rw---- root input 13, 65 2010-01-02 04:31 event1
crw-rw---- root input 13, 66 2010-01-02 04:31 event2
crw-rw---- root input 13, 67 2010-01-02 04:31 event3
crw-rw---- root input 13, 68 2010-01-02 04:31 event4
crw-rw---- root input 13, 69 2010-01-02 04:31 event5
crw-rw---- root input 13, 63 2010-01-02 04:31 mice
crw-rw---- root input 13, 32 2010-01-02 04:31 mouse0

关于Android getevent 的值定义在kernel/include/linux/input.h 里,结合我们实际项目中echo 0/1 > sim_pinde event如下:

type  code  value

0002 0009 00000001 EV_REL REL_MISC value
0000 0000 00000000 EV_SYNC
0002 0009 00000002 EV_REL REL_MISC value
0000 0000 00000000 EV_SYNC ABS_X 

 可以打开/dev/input/的设备,读取鼠标键盘的event值。

需要设置uart奇偶校验。要不然数据不对。而且要设置成8736。偶校验。

TermiosTemp.c_cflag &= ~PARODD; // Enable even parity type.

 input子系统 kernel\documentation\input\input-programming.txt

init.rc

关于开机启动init.rc E:\BaiduYunDownload\materials\20151104sourcecode\alps\system\core\init\readme.txt

init脚本的关键字可以参考init进程的system/core/init/keyword.h文件。

init.rc的使用方法,可以参考说明文件system/core/init/readme.txt。

init进程代码的路径:system/core/init/init.c

 在Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。使用方法参考system/core/init/readme.txt,关键字参考system/core/init/keyword.h。

串口模拟与modem交互

rx tx信号的高电平是I/O口拉起来的,IO是一个单独的线,IO口是modem拉起来的vcc,modem然后会发reset,reset会一直拉高,除非交互发生错误了,会发第二个reset。所以 rx tx会比rst的信号起来的早,也下降的晚。

tx默认是高电平,rx如果tx环回过来或者有I/O接上去的话,就会拉高,rx默认是被IO拉到低电平。

mediatek\kernel\drivers\uart\uart.c mtk_uart_set_baud中联发科的处理逻辑:
custom_divisor[31] == 1, then custom_divisor[30..0] == custom baud rate
uart_ioctl case TIOCSSERIAL:->uart_set_info->uart_change_speed->mtk_uart_set_termios->mtk_uart_set_baud
There are three different types of tty drivers: console, serial port, and pty.tty驱动包括三种 console, 串口,还有pty。

关闭打印

echo "0 0 0 0" > /proc/sys/kernel/printk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值