免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3158 | 回复: 1
打印 上一主题 下一主题

串口驱动框架的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-04 19:34 |只看该作者 |倒序浏览
今天一直在串口驱动程序,看了之后有几个问题不明白,希望大家指点一下:
   串口驱动里头有几个定义如下:
static struct uart_driver s3c24xx_uart_drv = {
        .owner                = THIS_MODULE,
        .dev_name        = "s3c2410_serial",
        .nr                = CONFIG_SERIAL_SAMSUNG_UARTS,
        .cons                = S3C24XX_SERIAL_CONSOLE,
        .driver_name        = S3C24XX_SERIAL_NAME,
        .major                = S3C24XX_SERIAL_MAJOR,
        .minor                = S3C24XX_SERIAL_MINOR,
};
static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS] = {
        [0] = {
                .port = {
                        .lock                = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[0].port.lock),
                        .iotype                = UPIO_MEM,
                        .irq                = IRQ_S3CUART_RX0,
                        .uartclk        = 0,
                        .fifosize        = 16,
                        .ops                = &s3c24xx_serial_ops,
                        .flags                = UPF_BOOT_AUTOCONF,
                        .line                = 0,
                }
        }
}

static struct uart_ops s3c24xx_serial_ops = {
        .pm                = s3c24xx_serial_pm,
        .tx_empty        = s3c24xx_serial_tx_empty,
        .get_mctrl        = s3c24xx_serial_get_mctrl,
        .set_mctrl        = s3c24xx_serial_set_mctrl,
        .stop_tx        = s3c24xx_serial_stop_tx,
        .start_tx        = s3c24xx_serial_start_tx,
        .stop_rx        = s3c24xx_serial_stop_rx,
        .enable_ms        = s3c24xx_serial_enable_ms,
        .break_ctl        = s3c24xx_serial_break_ctl,
        .startup        = s3c24xx_serial_startup,
        .shutdown        = s3c24xx_serial_shutdown,
        .set_termios        = s3c24xx_serial_set_termios,
        .type                = s3c24xx_serial_type,
        .release_port        = s3c24xx_serial_release_port,
        .request_port        = s3c24xx_serial_request_port,
        .config_port        = s3c24xx_serial_config_port,
        .verify_port        = s3c24xx_serial_verify_port,
};
在我读完程序后,还不知道static struct uart_driver s3c24xx_uart_drv ,static struct uart_ops s3c24xx_serial_ops ,static struct s3c24xx_uart_port s3c24xx_serial_ports是怎么关联上的,感觉在程序中三者是孤立的。在static struct uart_driver s3c24xx_uart_drv 中全是宏常量,并没有指定串口的操作函数集是&s3c24xx_serial_ops,但是程序中确实是使用这些函数来操作串口。
    请高手指点下是怎么回事!

论坛徽章:
0
2 [报告]
发表于 2011-11-30 17:25 |只看该作者
看下设备描述结构
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP