tp133
驱动牛犊
驱动牛犊
  • 注册日期2006-04-24
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:1431回复:0

问一个关于linux下串口初始化的问题

楼主#
更多 发布于:2007-04-18 20:36
  在开发板上,串口经常被用来作为终端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);这个函数,可是我没有在之前的代码里看到有这个动作,我想问的就是串口设备的注册是在那个函数里进行的,请不吝赐教
游客

返回顶部