第四期 第二十四讲 Linux串口实验 第二十五讲 Linux多点电容触摸屏实验

第二十四讲 Linux串口实验

一、串口驱动框架

两个重要的结构体uart_port和uart_driver:

uart_driver需要驱动编写人员实现,并使用uart_register_driver注册到内核,卸载驱动的时候,使用uart_unregister_driver卸载。

uart_port用于描述一个具体的串口端口,驱动编写人员需要实现uart_port,然后使用uart_add_one_port函数向内核添加一个uart端口,卸载的时候uart_remove_one_port卸载。

uart_port里面有个非常重要的成员变量uart_ops,此结构体包含了针对uart端口进行的所有操作,需要驱动编写人员实现!

串口驱动是和TTY结合起来的。

NXP官方串口驱动入口函数为imx_serial_init,此函数会调用uart_register_driver先先内核注册uart_driver,为imx_reg。

为什么I.MX6ULL的串口为/dev/ttymxc0,1。因为uart_driver的dev_name来确定的。

接下来就是uart_port的处理,NXP自定义了一个imx_port,里面包含uart_port。

uart_ops为imx_pops。

串口接收中断处理函数imx_rxint获取到串口接收到的数据,然后使用tty_insert_flip_char将其放到tty里面。

二、驱动编写与测试

1、修改设备树,添加IO相关信息

2、修改设备树,使能对应的串口

三、minicom移植

Linux下的软件移植,基本都是自己编译源码,步骤都是配置,然后编译,安装

注意:

配置的时候会设置—prefix参数,也就是我们最终安装的位置,如果不设置的话就是默认安装位置。将编译出来的库要放到开发板里面去,

第二十五讲 Linux多点电容触摸屏实验

一、多点电容触摸屏驱动框架

1、电容触摸屏,上报多点触摸信息,通过触摸芯片,比如FT5426,这是一个IIC。多点电容触摸屏本质是IIC驱动。

2、触摸IC一般都是有INT,当检测到触摸信息以后就会触发中断,那么就要在中断处理函数里面读取触摸点信息。

3、得到触摸点信息,linux系统如何使用,input设备,linux系统下有触摸屏上报的流程,涉及到input子系统下触摸信息的上报。

2、触摸协议分为:TypeA和TypeB

TypeA:一股脑全部上报所有触摸点信息,系统去甄别这些信息属于哪个触摸点的。上报方式:

ABS_MT_POSITION_X x[0] //第一个点X轴坐标,ABS_MT_POSITION_X, 使用input_report_abs

ABS_MT_POSITION_Y y[0] //第一个点Y轴坐标,ABS_MT_POSITION_Y,

SYN_MT_REPORT //点与点之间使用SYN_MT_REPORT隔离,使用input_mt_sync

ABS_MT_POSITION_X x[1] //第二个点X轴坐标,ABS_MT_POSITION_X,

ABS_MT_POSITION_Y y[1]

SYN_MT_REPORT

SYN_REPORT //所有点发送完成以后,input_sync

TypeB:适用于触摸芯片有硬件追踪能力的,TypeB使用slot来区分触摸点,slot使用ABS_MT_TRACKING_ID来增加、删除,替换一个触摸点信息。

ABS_MT_SLOT 0 //表示要上报第一个触摸点信息

ABS_MT_TRACKING_ID 45 //通过调用input_mt_report_slot_state。

ABS_MT_POSITION_X x[0] //

ABS_MT_POSITION_Y y[0]

ABS_MT_SLOT 1 //第二个触摸点,使用input_mt_slot。

ABS_MT_TRACKING_ID 46 //input_mt_report_slot_state

ABS_MT_POSITION_X x[1]

ABS_MT_POSITION_Y y[1]

SYN_REPORT //所有点发送完成以后,input_sync

上报触摸信息是通过不同的事件来上报的:ABS_MT_XXX

二、驱动编写与测试

1、驱动主框架是IIC设备,会用到中断,在中断处理函数里面上报触摸点信息,要用到inuput子系统框架,

2、设备树IO修改,IIC节点添加:

INT -> GPIO1_IO09 GPIO

RST -> SNVS_TAMPER9 GPIO

I2C_SDA -> UART5_RXD

I2C_SCL -> UART5_RXD

3、在I2C2节点下添加ft5426

/* zuozhongkai 7寸FT5426 */

ft5426:ft5426@38 {

compatible = "edt,edt-ft5426";

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_tsc

&pinctrl_tsc_reset>;

interrupt-parent = <&gpio1>;

interrupts=<9 0>;

reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;

interrupt-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;

status = "okay";

};

1、主题I2C框架准备好

2、复位引脚和中断引脚,包括中断

3、初始化FT5426。

4、input子系统框架

5、在中断服务函数里面读取触摸坐标值,然后上报给系统

三、tslib移植

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值