嵌入式设备串口命名的地方
一下函數(shù)在dricers/serial/s3c2410.c中
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); //向內(nèi)核注冊(cè)串口return 0; } /* s3c24xx_serial_initconsole** initialise the console from one of the uart drivers */static struct console s3c24xx_serial_console = {.name = S3C24XX_SERIAL_NAME,.device = uart_console_device,.flags = CON_PRINTBUFFER,.index = -1,.write = s3c24xx_serial_console_write,.setup = s3c24xx_serial_console_setup }可以看出S3C24XX_SERIAL_NAME被定義為ttySAC因此在創(chuàng)建串口設(shè)備的時(shí)候使用的是名字是ttySAC0,其中的0代表使用的是串口0,也就是第一個(gè)串口。
從途中還是可以看出設(shè)備的主設(shè)備號(hào)是204次設(shè)備號(hào)是64,要是使用手動(dòng)創(chuàng)建也使用這個(gè)主設(shè)備號(hào)和次設(shè)備號(hào)
內(nèi)核根據(jù)kernel/printk.c中的
__setup("console=", console_setup);確定printk輸出的設(shè)備。
內(nèi)核開始執(zhí)行時(shí),發(fā)現(xiàn)形如"console=…“的命令參數(shù)時(shí),就會(huì)調(diào)用console_setup函數(shù)進(jìn)行解析。對(duì)于參數(shù)"console=ttySAC0”,它會(huì)解析出設(shè)備名(name)為ttySAC,索引為(index)0,這些信息會(huì)保存在console_cmdline中,
.flags = CON_PRINTBUFFER, 定義之后就可以使用printk打印在內(nèi)核沒(méi)有啟動(dòng)console之前的printk信息,因?yàn)樵谟布跏蓟熬褪怯昧藀rintk函數(shù),但是當(dāng)時(shí)沒(méi)有初始化串口無(wú)法與用戶進(jìn)行交互,只能將信息放到緩沖區(qū)中。
既然printk輸出的信息是先保存在緩沖區(qū)log_buf中的,那么也可以讀取log_buf,以獲取這些信息,系統(tǒng)啟動(dòng)之后想看printk信息,直接運(yùn)行dmesg命令即可。
總結(jié)
以上是生活随笔為你收集整理的嵌入式设备串口命名的地方的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【2016年第4期】经济发展的顶层设计
- 下一篇: 数据自治开放与治理模式创新