因为想用cdlinux做嵌入式,所以一直想搞定串口维护的问题,之前走了一些弯路,
现在终于搞定了^_^
好像虚拟机的串口只能是com1的(也可能是cdlinux的限制,不确定)
我的本本没有物理串口。需要使用虚拟串口。
有2个办法
1.通过vpsm虚拟串口
开始使用vpsm软件虚拟出com4,对应到tcp端口
VMware的串口选择com4
使用crt登录到本机的6020,显示连接成功
运行echo hi >ttyS3
报错。说明串口虚拟有问题
折腾了n久,后来
尝试echo hi > ttyS0 成功
说明虽然虚拟的是com4,但是在CDlinux中还是com1
Cdlinux中有0~3三个串口设备,但是只有ttyS0和ttyS1可以写入,ttyS2,ttyS3报错,原因不明
2.改用name pipe proxy软件实现
Vmare的串口选择\\.\pipe\com_1。虚拟com1(这个命名管道即使叫com2,实际还是ttyS0)
Named pipe proxy 选择吧\\.\pipe\com1映射到1500
使用crt登录到本机的1500,显示连接成功
Echo hi >/dev/ttyS0
Crt上显示hi,说明连接成功
运行getty –L 9600 ttyS0 vt100
Crt上出现登录页面
登录也ok
下面就是通过修改inttab可以默认支持串口登录
Mount /dev/sda1 /media/sda1
Cd /media/sda1
Mkdir init
Mount –o loop initrd /media/sda1/init
Cp –r init init1 #这个init目录是只读的,复制一下就可写了
Cd init1
修改inittab
增加ttyS0::respawn:/sbin/getty –L 9600 ttyS0 vt100
再重新mksquashfs init1 init.md
在复制到启动目录,覆盖原来的initrd
Cp init.md /media/sda1/CDlinux/initrd
如果要把启动选择页面输出到串口就比较简单了
直接改/media/sda1/boor/grub/menu.lst就行了
添加如下行:
serial –unit=0 –speed=9600 –word=8 –parity=no –stop=1
terminal –timeout=10 serial console
grub引导过程中, 会将输出同时发送到终端屏幕和串口. grub引导过程中将在终端和连接到串口的超级终端上提示Press any key to continue, 每秒钟提示一次, 共10次, 可修改menu.lst文件terminal行中的–timeout=10改变提示次数, 在这一段时间内, 可以在终端的键盘, 或者连接到串口的超级终端中按任意键进入grub选择菜单. 如果10秒内没有在终端和连接串口的超级终端上按任意键, 则grub的选择菜单将出现在连接串口的超级终端上, 如果希望默认情况下, grub选择菜单出现在终端上, 则可修改menu.lst将serial console修改为console serial.
将kernel输出信息输出到串口
修改kernel行, 在该行后增加增加
QUOTE:
console=ttyS0,9600n8 console=tty0