主機:Centos Linux 7 64位
目標機:FS4412
交叉編譯工具鏈:arm-linux-gcc 4.6.4
ser2net提供了網絡和串口之間的連接,可以很方便完成網絡和串口之間的數據透傳,在很多項目中都有其應用。比如在基于Wi-Fi的智能小車項目中,ser2net用于接收客戶端發來的控制命令,并將其通過串口轉發給控制板,從而控制小車的行駛和攝像頭舵機的角度。另外一方面,串口收到的數據通過ser2net又反過來發送給客戶端,從而可以獲取智能小車離障礙物的一些距離值。在智能小車項目中,移植OpenWrt時通過簡單的選配就可以完成ser2net的移植。但如果要用到其他項目中,就需要手動移植。在基于FS4412開發板的一些物聯網項目中,FS4412開發板會通過串口連接ZigBee的協調節點,從而完成和其他終端節點的通信。另外在FS4412上會運行一些服務器程序,這些服務器程序將通過串口來進行物聯網設備的控制,或獲取一些傳感數據。如果將ser2net應用其中,將會大大簡化服務器程序的開發。于是本文給出了ser2net的移植方法和一些問題的解決方法,其步驟如下:
1、下載源碼
ser2net的官網為://ser2net.sourceforge.net/,在頁面中可以找到下載鏈接。目前新版本為3.4。可以通過頁面中的下載鏈接進行下載,也可以通過下面的命令行進行下載。
$ wget -c https://nchc.dl.sourceforge.net/project/ser2net/ser2net/ser2net-3.4.tar.gz
2、解壓并配置源碼
$ tar -xvf ser2net-3.4.tar.gz
$ cd ser2net-3.4/
$ ./configure --prefix=/path/to/rootfs --host=arm-linux
其中“/path/to/rootfs”表示的是ser2net的安裝目錄,根據自己的根文件系統目錄進行指定。“arm-linux”是交叉編譯工具的前綴,根據自己的實際情況進行修改。
3、編譯并安裝
$ make
$ make install
4、添加配置文件和開機啟動腳本
配置文件為/etc/ser2net.conf,在源碼目錄下有該配置文件的一個范本,并對各配置項做了詳細的說明。運行ser2net時可以指定讀取該配置文件來完成一些參數的設置。但是還有比較簡單的方法,就是在運行ser2net時在命令行中直接給出運行的參數。為了讓該程序在開機后自動啟動,在開發板的根文件系統的/etc/init.d/rcS文件中添加了如下一行代碼:
ser2net -C "2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS"
各項的含義如下:
2001:服務器的端口為2001
raw:表示用原始的方式來對串口數據進行收發
600:超時時間,表示如果600秒沒有活動的話,將會斷開。
/dev/ttyUSB0:串口設備,根據實際情況進行修改。
115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL:表示波特率為115200,無奇偶校驗,1位停止位,8位數據位, XONXOFF流量控制,不檢測modem信號線。
5、運行錯誤處理
如果運行時出現“Error creating port lock file”錯誤,請確保根文件系統下有/var/lock目錄。