因為想用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
CreateFile開啟串列埠時串列埠名字的寫法
開啟com1到com9用 m hcom createfile t com1 generic read generic write,0,null,open existing,null,null 或者m hcom createfile t com1 generic read generic write,...
串列埠的使用
序列通訊 終端與計算機之間或者計算機與計算機之間進行交換資訊時,除了採用並行通訊方式之外,還經常採用序列通訊方式。並行通訊是指資料的各位同時進行傳送,其有點是傳送資料速度快,缺點是有多少位資料就需要多少根傳輸線,這在資料位數較多,傳送距離較遠時就不宜採用。序列通訊是指資料一位一位地按順序傳送,其突出...
C 串列埠通訊,串列埠的傳送與接收,獲取本機串列埠
serialport 串列埠類 1.引用命名空間 using system.io.ports 2.建立物件 serialport com new serialport 3.給串列埠埠與波特率屬性賦值 com.portname com4 com.baudrate 9600 4.開啟串列埠 com.op...