新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > fl2440使用u-boot-1.1.6原版串口沒信息問題

        fl2440使用u-boot-1.1.6原版串口沒信息問題

        作者: 時間:2016-11-21 來源:網絡 收藏
        問題描述:

        硬件條件:fl2440開發板 jtag下載器 串口接在com1 115200 8n1

        本文引用地址:http://www.104case.com/article/201611/319267.htm

        軟件條件:官方原版u-boot-1.1.6 arm-linux-gcc-3.3.2 make 3.81 os ubuntu 10.04

        uboot解壓縮以后,執行

        make smdk2410_config

        make

        成功生成u-boot.bin,使用jtag燒寫以后,復位arm板子,串口無信息輸出

        解決辦法:

        1.查看uboot代碼中串口初始化過程是不是符合 115200 8n1 串口1

        首先明白uboot中串口的初始化及配置分為三個步驟

        step1:ns16550.c這個文件完成DUART異步串口收發器驅動

        -----------------------ns16550.c全文代碼如下-------------------------------------------

        #include 包含的是./include/linux/config.h

        #ifdef CFG_NS16550 如果配置相應的控制變量要求配置ns16550,則編譯下面的代碼

        #include 包含ns16550頭文件

        #define LCRVAL LCR_8N1實際上是0x03
        #define MCRVAL (MCR_DTR | MCR_RTS)
        #define FCRVAL (FCR_FIFO_EN | FCR_RXSR | FCR_TXSR)

        void NS16550_init (NS16550_t com_port, int baud_divisor)
        {
        com_port->ier = 0x00;
        #ifdef CONFIG_OMAP
        com_port->mdr1 = 0x7;
        #endif
        com_port->lcr = LCR_BKSE | LCRVAL;
        com_port->dll = baud_divisor & 0xff;
        com_port->dlm = (baud_divisor >> 8) & 0xff;
        com_port->lcr = LCRVAL;
        com_port->mcr = MCRVAL;
        com_port->fcr = FCRVAL;
        #if defined(CONFIG_OMAP)
        #if defined(CONFIG_APTIX)
        com_port->mdr1 = 3;
        #else
        com_port->mdr1 = 0;
        #endif
        #endif
        }

        void NS16550_reinit (NS16550_t com_port, int baud_divisor)
        {
        com_port->ier = 0x00;
        com_port->lcr = LCR_BKSE;
        com_port->dll = baud_divisor & 0xff;
        com_port->dlm = (baud_divisor >> 8) & 0xff;
        com_port->lcr = LCRVAL;
        com_port->mcr = MCRVAL;
        com_port->fcr = FCRVAL;
        }

        void NS16550_putc (NS16550_t com_port, char c)
        {
        while ((com_port->lsr & LSR_THRE) == 0);
        com_port->thr = c;
        }

        char NS16550_getc (NS16550_t com_port)
        {
        while ((com_port->lsr & LSR_DR) == 0) {
        #ifdef CONFIG_USB_TTY
        extern void usbtty_poll(void);
        usbtty_poll();
        #endif
        }
        return (com_port->rbr);
        }

        int NS16550_tstc (NS16550_t com_port)
        {
        return ((com_port->lsr & LSR_DR) != 0);
        }

        #endif
        -----------------------------------ns16550.c全文代碼結束------------------------------------



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兴山县| 屏山县| 永登县| 东城区| 青州市| 二手房| 六安市| 改则县| 上林县| 大兴区| 常德市| 临漳县| 桂平市| 绿春县| 饶阳县| 象州县| 思茅市| 鹿泉市| 安平县| 姜堰市| 山东省| 类乌齐县| 板桥市| 土默特右旗| 芦山县| 云浮市| 芦溪县| 宜兴市| 萝北县| 岑巩县| 长寿区| 阜城县| 南乐县| 保德县| 辉县市| 鹤峰县| 土默特右旗| 柳江县| 西充县| 会泽县| 泸水县|