英創(chuàng)公司的EM9X60系列工控主板(包括 EM9160、EM9360、EM9460、EM9660等)均具有7路物理串口。在Linux系統(tǒng)中,6路串口作為應(yīng)用串口,剩下的1路作為調(diào)試串口。一般情況下調(diào)試串口被系統(tǒng)內(nèi)核所占用,用來(lái)顯示內(nèi)核輸出信息以及console控制終端。這樣的配置可滿足大多數(shù)應(yīng)用對(duì)串口的需求。
在一些特殊的應(yīng)用中,需要的串口數(shù)超過(guò)6路,這時(shí)可把缺省作為調(diào)試的串口,經(jīng)過(guò)一定的設(shè)置,轉(zhuǎn)換為應(yīng)用串口,其設(shè)備名稱為“/dev/ttyS0”。在實(shí)際操作中,往往是直接通過(guò)應(yīng)用程序來(lái)實(shí)現(xiàn)這樣的轉(zhuǎn)換,具體的代碼如下:
利用函數(shù)ioctl( fd, TIOCCONS)來(lái)重新定義 console終端,應(yīng)用程序使用完畢后,還可將終端恢復(fù),該部分程序代碼已經(jīng)修改測(cè)試好。
重定向控制臺(tái)終端console至tty1:
int fd;
printf('Close cnsole\n');
fd = open('/dev/tty1',O_RDONLY); // 改變console
ioctl( fd, TIOCCONS );
close( fd );
恢復(fù)控制臺(tái)終端console至缺省設(shè)置:
fd = open('/dev/tty0',O_RDONLY); // 恢復(fù)console
ioctl( fd,TIOCCONS );
close( fd );
printf('change console back: ttyS0\n');
在使用調(diào)試口應(yīng)用時(shí),需要注意的是啟動(dòng)程序必須按照終端模式進(jìn)行啟動(dòng),而不能用execlp函數(shù)族的方式,因此我們調(diào)整了EM9X60系列板卡啟動(dòng)管理程序在運(yùn)行模式下的策略,應(yīng)用程序需要按照腳本的方式進(jìn)行啟動(dòng),啟動(dòng)的方法就是客戶編輯一個(gè)名為user.sh的腳本文件,并將該文件復(fù)制到EM9X60系列板卡的/mnt/nandflash,user.sh的內(nèi)容如:
#!/bin/sh
cd /mnt/nandflash/
/mnt/nandflash/step2_serialtest
這樣在板卡將會(huì)自動(dòng)運(yùn)行step2_serilatest應(yīng)用程序。
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209331 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35296
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論