加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

U-Boot串口初始化分析

发布时间:2021-11-23 17:54:17 所属栏目:教程 来源:互联网
导读:目录 零、概述 一、init_baudrate 二、serial_init 三、console_init_f 四、devices_init 五、console_init_r 六、打印信息 七、为什么要使用devlist,std_device[]? 零、概述 上面这张图是U-Boot中串口设备驱动的流程,从寄存器级别的设置到最后终端信息的

目录
零、概述
一、init_baudrate
二、serial_init
三、console_init_f
四、devices_init
五、console_init_r
六、打印信息
七、为什么要使用devlist,std_device[]?
零、概述
 
 
上面这张图是U-Boot中串口设备驱动的流程,从寄存器级别的设置到最后终端信息的输出。下面我们详细讲解每一个步骤。
 
一、init_baudrate
该函数设置了gd->bd->bi_baudrate。
 
static int init_baudrate (void)  
{  
    char tmp[64];   /* long enough for environment variables */  
    int i = getenv_r ("baudrate", tmp, sizeof (tmp));  
    gd->bd->bi_baudrate = gd->baudrate = (i > 0)  
            ? (int) simple_strtoul (tmp, NULL, 10)  
            : CONFIG_BAUDRATE;  
//#define CONFIG_BAUDRATE   115200  定义在/include/configs/smdk2410.c中  
//如果环境中没有保存,则使用宏定义的参数  
    return (0);  
}  
二、serial_init
UART控制器的初始化。
 
void serial_setbrg (void)  
{  
    S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UART_NR);  
    int i;  
    unsigned int reg = 0;  
  
    /* value is calculated so : (int)(PCLK/16./baudrate) -1 */  
    reg = get_PCLK() / (16 * gd->baudrate) - 1;  
  
    /* FIFO enable, Tx/Rx FIFO clear */  
    uart->UFCON = 0x07;  
    uart->UMCON = 0x0;  
    /* Normal,No parity,1 stop,8 bit */  
    uart->ULCON = 0x3;  
    /*  
     * tx=level,rx=edge,disable timeout int.,enable rx error int.,  
     * normal,interrupt or polling  
     */  
    uart->UCON = 0x245;  
    uart->UBRDIV = reg;  
  
#ifdef CONFIG_HWFLOW  
    uart->UMCON = 0x1; /* RTS up */  
#endif  
    for (i = 0; i < 100; i++);  
}  
  
/*  
 * Initialise the serial port with the given baudrate. The settings  
 * are always 8 data bits, no parity, 1 stop bit, no start bits.  
 *  
 */  
int serial_init (void)  
{  
    serial_setbrg ();//UART寄存器设置  
  
    return (0);  
}  
linux

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读