新内核2.6.30编译完之后在目标板上看不到ttyS1
发布时间:2020-12-15 18:33:45 所属栏目:百科 来源:网络整理
导读:问题: 在老内核2.6.24.3的目标板上,/dev下能看到ttyS0,ttyS1和ttyS2;没有ttys*文件; 但是,内核升级到2.6.30后,在/dev下只能看到ttyS0和ttyS2,有ttys0~ttysf共16个文件; 并且,不能通过open命令打开ttyS1设备。 解决办法: 1. 进入到内核所在目录linu
问题: 在老内核2.6.24.3的目标板上,/dev下能看到ttyS0,ttyS1和ttyS2;没有ttys*文件; 但是,内核升级到2.6.30后,在/dev下只能看到ttyS0和ttyS2,有ttys0~ttysf共16个文件; 并且,不能通过open命令打开ttyS1设备。 解决办法: 1. 进入到内核所在目录linux-2.6.30,运行命令: make menuconfig使用/来查找serial字符,看到这么一行, Symbol: SERIAL_ATMEL_CONSOLE [=n] │ │ Prompt: Support for console on AT91 / AT32 serial port │ │ Defined at drivers/serial/Kconfig:370 │ │ Depends on: HAS_IOMEM && SERIAL_ATMEL │ │ Location: │ │ -> Device Drivers │ │ -> Character devices │ │ -> Serial drivers │ │ -> AT91 / AT32 on-chip serial port support (SERIAL_ATMEL [=n]) │ │ Selects: SERIAL_CORE_CONSOLE从SERIAL_ATMEL_CONSOLE = n,本来以为是内核配置有误,但是,查了一下.config文件,有这么几行: # Non-8250 serial port support # CONFIG_SERIAL_ATMEL=y CONFIG_SERIAL_ATMEL_CONSOLE=y CONFIG_SERIAL_ATMEL_PDC=y # CONFIG_SERIAL_ATMEL_TTYAT is not set看来在.config文件中已经设定好了,那为什么make menuconfig看不到AT91 / AT32 on-chip serila port support呢? 原来,是make命令用错了,不只是要指定交叉编译名称,也要指定目标处理器的体系结构,应该使用命令: make ARCH=arm CROSS_COMPILE=arm-ilnux- menuconfig这样,就能看到Device Drivers -> Serial drivers -> AT91 / AT32 on-chip serial port support的选择界面了。 2. 既然内核的选项中已经把所有的开关都打开了,ttyS1还是不能显示,那真正影响到ttyS1显示的是这个文件: arch/arm/mach-at91/board-sam9260ek.c 在函数ek_map_io()中,注册ttyS1的串口被屏蔽掉了。 static void __init ek_map_io(void) { /* Initialize processor: 18.432 MHz crystal */ at91sam9260_initialize(18432000); /* DGBU on ttyS0. (Rx & Tx only) */ at91_register_uart(0,0); /* USART0 on ttyS1. (Rx,Tx,CTS,RTS,DTR,DSR,DCD,RI) */ /* at91_register_uart(AT91SAM9260_ID_US0,1,ATMEL_UART_CTS | ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD | ATMEL_UART_RI); */ /* USART1 on ttyS2. (Rx,CTS) */ // at91_register_uart(AT91SAM9260_ID_US1,2,ATMEL_UART_CTS | ATMEL_UART_RTS); at91_register_uart(AT91SAM9260_ID_US1,0); /* set serial console to ttyS0 (ie,DBGU) */ at91_set_serial_console(0); } 将屏蔽语句去除,改为: static void __init ek_map_io(void) { /* Initialize processor: 18.432 MHz crystal */ at91sam9260_initialize(18432000); /* DGBU on ttyS0. (Rx & Tx only) */ at91_register_uart(0,0); /* USART0 on ttyS1. (Rx,RI) */ at91_register_uart(AT91SAM9260_ID_US0,ATMEL_UART_CTS | ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD | ATMEL_UART_RI); /* */ /* USART1 on ttyS2. (Rx,0); /* set serial console to ttyS0 (ie,DBGU) */ at91_set_serial_console(0); }重新编译内核,使用命令: make ARCH=arm CROSS_COMPILE=arm-linux- uImage 将新生成的uImage通过U-Boot烧写到Flash的0xa0000处开始的2M字节(0x200000)中, 重启目标板,到/dev目录下查看ttyS*,看到ttyS1了。 问题解决。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c#-3.0 – C#.NET中的Environment.CurrentDirectory
- wpf – 使用具有FormattedText的TextOptions.TextFormattin
- ruby-on-rails – 请求规范中的Stub方法错误
- oracle goldengate报错解决之OGG-00446、OGG-00529、OGG-00
- 使用L脚本语言开发一个XML访问库
- vb.net – 如何抑制VB的“迭代变量不应该在lambda表达式中使
- c – 选择从最小和最大两端排序
- ruby-on-rails – rspec集成测试中的会话对象
- Swift之键盘类型与常见的键盘隐藏方法
- ruby-on-rails – rails比较params [:id]和session [:use