概述
这两周调试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驱动调试<一>所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复