tty驅動調試

這兩週調試tty驅動從uboot到linux驅動,遇到了一下問題,也學到了解決的方法,乘現在還有點印象總結一下:

question one:目的是打開串口uart1,對應ttyS1設備,首先要打開uart1的對應的引腳配置,在Board-m3-reff33.c  (z:\amlogic-0920-updata-fv-new\kernel\arch\arm\mach-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中修改較好,大多數的驅動文件的權限修改都在在這裏(device\amlogic\f16ref\init.rc)和(device\amlogic\common\ueventd.rc)


接下來,基礎的介紹一下tty驅動的設備平臺:tty驅動有三種:控制檯、串口和PTY。

1.查看tty設備,在proc/tty/drivers文件中可以看到它們對應的類型。

2.當註冊class後,在sys\class\tty中有對應的子目錄。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章