linux debug串列埠改為普通串列埠

2021-07-09 14:17:09 字數 1281 閱讀 4571

origin: 

和我們的需求一樣,我們是如果使用者想把串列埠作為console的話,那麼在系統啟動的時候,輸入回車來開啟console,否則就作為普通的串列埠用。

1,  在核心驅動裡,不要將串列埠初始化為console, 如我的:

uclinux-l200v40/linux-2.4.x/drivers/char/tty_io.c

// #ifdef config_serial_winbond_console 

#if 0 

winbond_console_init();

#endif

或者在make menuconfig的時候配置,不要將ttys0設定為console;

2, 在核心啟動,進入busybox時,在/etc/inittab中不要設定串列埠登入:

# activate watchdog and logging

#ttys0::respawn:/sbin/getty -l ttys0 115200 linux

3, 設定啟動指令碼/etc/init.d/s02cmd.sh

#!/bin/sh

/usr/sbin/cmd -d 3

exit 0

其中/usr/sbin/cmd為我們從串列埠接收資料的c程式,這個程式在啟動時監聽串列埠,在1s內,如使用者按了回車鍵,那麼就作console,這個可以使用下面的方法來實現; 否則就做普通串列埠用了。

在cmd這個程式中,如果接收到回車鍵,可以使用system()執行指令碼:/usr/sbin/cmd_getty.sh 來重新啟用console,內容如下:

#!/bin/sh

/sbin/getty -l ttys0 115200 linux &

exit 0

如果使用ssh登入上去,想開啟console,也可以直接使用下面命令來開啟:

/sbin/getty -l ttys0 115200 linux &

如果有更好的方法,可以交流!

謝謝,dglwx,我從網上學習了乙個方法。目前串列埠和終端都可以同時收到到資料,同時在終端中如果輸入ctrl+c程式可以推出,哈哈,很好玩!

void closeconsole(void)

}close(fp);                       //關閉串列埠0

fp = open("/dev/console",o_rdonly);  //恢復console 到串列埠0

ioctl(fp,tioccons);

close(fp);

printf("change2\n"

}

把普通表改為Partition表

exec dbms redefinition.can redef table qa2 atgcore mf ngp user site dbms redefinition.cons use pk create table qa2 atgcore mf.ngp user site new user i...

將普通表改為分割槽表

oracle的普通表沒有辦法通過修改屬性的方式直接轉化為分割槽表,必須通過重建的方式進行轉變,下面介紹三種效率比較高的方法,並說明它們各自的特點。方法一 利用原表重建分割槽表。步驟 sql create table t id number primary key,time date 表已建立。sql...

Oracle 將普通字段型別改為Clob型別的方法

第一步 新增乙個clob型別的字段 alter table nlphistory pat add answer bak clob 第二部 將原來欄位的值拷貝到新建的clob欄位 update nlphistory pat set answer bak answer 第三步 刪除原來的字段 alter...