新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > linux UART串口驅動開發文檔

        linux UART串口驅動開發文檔

        作者: 時間:2012-09-06 來源:網絡 收藏

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

        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,

        };

        終端的注冊通過下面的函數,將cs_amba_console注冊成為終端, 這個函數調用路徑是:

        start_kernel()→console_init()→ep93xxuart_w83697_console_init()

        void __init ep93xxuart_w83697_console_init(void)

        終端會對應一種具體設備的driver, 相對于串口這個結構是uart_driver, 在中我們已經提供了一個這樣的結構. static struct uart_driver amba_reg, uart_register_driver會將它注冊成為終端對應的driver, 因此真正串口與終端的關聯就在此處建立.

        函數: static int __init w83697uart_init(void)

        描述: 調用uart_register_driver()完成串口與終端的關聯,將串口注冊成為一種TTY設備,在uart_register_driver()當中調用tty_register_driver()完成TTY設備注冊; 其次是完成串口port口的注冊,將靜態描述的所有串口port(結構為struct uart_port)注冊到uart_driver當中.

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

        .normal_name = ttyBM,

        .callout_name = cuaam,

        /*

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

        * the major number and the subtype code.

        */

        函數: static void __exit w83697uart_exit(void)

        描述: 卸截設備,卸截port口,因為我編譯的是與內核綁定在一起的,因此實際上根本不會調用此函數.

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

        linux相關文章:linux教程



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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 同德县| 永胜县| 星子县| 紫金县| 涡阳县| 佛教| 高州市| 盐池县| 虹口区| 凤冈县| 陇南市| 平利县| 延安市| 石河子市| 碌曲县| 开阳县| 隆回县| 武平县| 江阴市| 鸡东县| 海淀区| 清新县| 东乌珠穆沁旗| 灌云县| 荥经县| 宝应县| 洪雅县| 宁安市| 南召县| 洛浦县| 盘锦市| 江门市| 曲麻莱县| 延津县| 茶陵县| 株洲县| 新宁县| 六盘水市| 乐至县| 中江县| 荣昌县|