色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > linux UART串口驅(qū)動開發(fā)文檔

          linux UART串口驅(qū)動開發(fā)文檔

          作者: 時間:2012-09-06 來源:網(wǎng)絡(luò) 收藏

          要能夠成為終端,必須客外加入終端注冊及初始化的代碼,這部分很簡單,基本上所有的都是固定的模式,并無什么修改,主要包括如下結(jié)構(gòu):

          static struct console cs_amba_console = {

          .name = ttyBM,

          .write = w83697uart_console_write,

          .device = w83697uart_console_device,

          .setup = w83697uart_console_setup,

          .flags = CON_PRINTBUFFER,

          .index = -1,

          };

          終端的注冊通過下面的函數(shù),將cs_amba_console注冊成為終端, 這個函數(shù)調(diào)用路徑是:

          start_kernel()→console_init()→ep93xxuart_w83697_console_init()

          void __init ep93xxuart_w83697_console_init(void)

          終端會對應一種具體設(shè)備的driver, 相對于串口這個結(jié)構(gòu)是uart_driver, 在中我們已經(jīng)提供了一個這樣的結(jié)構(gòu). static struct uart_driver amba_reg, uart_register_driver會將它注冊成為終端對應的driver, 因此真正串口與終端的關(guān)聯(lián)就在此處建立.

          函數(shù): static int __init w83697uart_init(void)

          描述: 調(diào)用uart_register_driver()完成串口與終端的關(guān)聯(lián),將串口注冊成為一種TTY設(shè)備,在uart_register_driver()當中調(diào)用tty_register_driver()完成TTY設(shè)備注冊; 其次是完成串口port口的注冊,將靜態(tài)描述的所有串口port(結(jié)構(gòu)為struct uart_port)注冊到uart_driver當中.

          特別說明: 注冊串口TTY設(shè)備時,由于歷史的原因會注冊兩個TTY設(shè)備,一個是normal, 另一個是callout, 是兩個設(shè)備來的, 在我們這里兩者沒有什么差別,請看源碼中的注解:

          .normal_name = ttyBM,

          .callout_name = cuaam,

          /*

          * The callout device is just like the normal device except for

          * the major number and the subtype code.

          */

          函數(shù): static void __exit w83697uart_exit(void)

          描述: 卸截設(shè)備,卸截port口,因為我編譯的是與內(nèi)核綁定在一起的,因此實際上根本不會調(diào)用此函數(shù).

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁 1 2 3 4 5 6 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉