阅读:1431回复:0
问一个关于linux下串口初始化的问题
在开发板上,串口经常被用来作为终端console使用,通过阅读源代码可以看到在内核启动代码调用console_init的时候,作为终端初始化关于串口的代码
static int s3c24xx_serial_initconsole(void) { struct s3c24xx_uart_info *info; struct platform_device *dev = s3c24xx_uart_devs[0]; dbg("s3c24xx_serial_initconsole\n"); /* select driver based on the cpu */ if (dev == NULL) { printk(KERN_ERR "s3c24xx: no devices for console init\n"); return 0; } if (strcmp(dev->name, "s3c2400-uart") == 0) { info = s3c2400_uart_inf_at; } else if (strcmp(dev->name, "s3c2410-uart") == 0) { info = s3c2410_uart_inf_at; } else if (strcmp(dev->name, "s3c2440-uart") == 0) { info = s3c2440_uart_inf_at; } else if (strcmp(dev->name, "s3c2412-uart") == 0) { info = s3c2412_uart_inf_at; } else { printk(KERN_ERR "s3c24xx: no driver for %s\n", dev->name); return 0; } if (info == NULL) { printk(KERN_ERR "s3c24xx: no driver for console\n"); return 0; } s3c24xx_serial_console.data = &s3c24xx_uart_drv; s3c24xx_serial_init_ports(info); register_console(&s3c24xx_serial_console); return 0; } 其中s3c24xx_uart_devs[0]在没有初始化赋值的时候里面什么也没有,所以不可能会有strcmp(dev->name, "s3c2410-uart") == 0的可能,这就说明在调用这个函数之前已经调用过了platform_driver_unregister(&s3c2410_serial_drv);这个函数,可是我没有在之前的代码里看到有这个动作,我想问的就是串口设备的注册是在那个函数里进行的,请不吝赐教 |
|