我是靠谱客的博主 伶俐发卡,最近开发中收集的这篇文章主要介绍tty驱动调试<一>,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这两周调试tty驱动从uboot到linux驱动,遇到了一下问题,也学到了解决的方法,乘现在还有点印象总结一下:

question one:目的是打开串口uart1,对应ttyS1设备,首先要打开uart1的对应的引脚配置,在Board-m3-reff33.c  (z:amlogic-0920-updata-fv-newkernelarcharmmach-meson3)中配置引脚。

question two:在uboot中打开串口,可以知道有串口数据接收,但接受的数据不对让我郁闷很久,最后发现在uboot中为了节能主时钟频率为32k当让读不到了,我的uart1波特率9600。要注意调试顺序。

question three:打开uart2,我勒个去呀,首先我直接调用ttyS2连设备都打不开,真的很郁闷,最后发现是ttyS2的设备权限是root不是system的,在android的环境先不想linux权限吃的很紧,只好在驱动init第一个进程(那时还处于system权限下)时,调用init.rc和uevent.rc来配置,最后发现还是uevent.rc中修改较好,大多数的驱动文件的权限修改都在在这里(deviceamlogicf16refinit.rc)和(deviceamlogiccommonueventd.rc)


接下来,基础的介绍一下tty驱动的设备平台:tty驱动有三种:控制台、串口和PTY。

1.查看tty设备,在proc/tty/drivers文件中可以看到它们对应的类型。

2.当注册class后,在sysclasstty中有对应的子目录。

3.tty的驱动程序的主要结构体是tty_driver,用来注册和注销驱动程序<linux/tty_driver.h>

 a.通过alloc_tty_driver(type):申请分配

 b.tty_set_operations是拷贝具体的操作函数到operation中,

 c.tty_register_driver(tty_driver):向tty核心注册驱动程序,注册时会有三个参数,tty_driver结构指针、设备的此设备号、指向该设备的所绑定的device结构体指针。

 d.tty_driver中的init_termios可以配置都铎初始化参数,同时tty接收到数据后直接送到tty核心,而不是read函数,所以tty驱动中没有read函数,提供了几个函数:

<1>tty_flip_buffer_push

<2>tty_insert_flip_char

最后

以上就是伶俐发卡为你收集整理的tty驱动调试<一>的全部内容,希望文章能够帮你解决tty驱动调试<一>所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部