1. 程式人生 > >飛思卡爾imx6開發板網路設定

飛思卡爾imx6開發板網路設定

imx6q 網路除錯方式彙總 2016年01月25日 21:34:35 海邊自在生活 閱讀數:2322更多 個人分類: linux 前面完成了linux平臺的移植,下面介紹部分除錯手段,可以加快專案開發速度.先簡介除錯手段

( 1 ) 在uboot下使用TFTP下載linux核心.這樣可以只要重啟開發板就可以載入新的核心,方便你在進行核心移植時,隨時測試新配置的核心.

( 2 ) 通過NFS掛載根檔案系統.同理,也是隻要重啟開發板就可以掛載新的根檔案系統,方便你在進行根檔案系統移植時,隨時測試新跟檔案系統.

( 3 ) 通過telnet訪問開發板.目的就是使用網路代替串列埠終端與開發板進行互動,因為有時裝置沒有外接串列埠到機殼,在進行現場除錯時,使用網路基本可以不用開啟裝置外殼.

( 4 ) 通過NFS與除錯計算機進行檔案共享.配合telnet,就可完成通過網路就可以完成檔案的傳輸等工作.

( 5 ) 通過ftp進行檔案的傳輸.將開發板設定成ftp伺服器,這樣遠端控制端只要使用遵守ftp協議的軟體就可以與開發板進行檔案的上傳和下傳,這個於NFS共享不同之處在於,ftp客戶端軟體豐富,而且自己的上位機軟體也可以簡單實現.

下面依次進行介紹

  1. 配置計算機網路

我的電腦配置了兩塊網絡卡,一個為乙太網介面ETH0,一個為WIFI介面WLAN0,我準備讓WLAN0作為外網介面,可以上網;ETH0作為內網介面,連線開發板.

( 1 ) 讓我的ETH0配置為靜態IP,

sudo vi /etc/network/interfaces

auto eth0 iface eth0 inet static address 192.168.1.101 netmask 255.255.255.0

這樣我網段192.168.1.*的網路通訊都走ETH0網絡卡了

( 2 ) 配置防火牆,讓防火牆放過我的開發板

sudo ufw allow from 192.168.1.103

我的開發板地址為192.168.1.103,這樣我就可以和開發板無障礙的通訊了.

  1. tftp下載linux核心

(1)配置pc機,開啟TFTP服務

①安裝相關軟體包 sudo apt-get install tftpd (服務端) sudo apt-get install tftp (客戶端) sudo apt-get install xinetd

②配置tftp服務

cd /etc/xinetd.d/ sudo vim tftp 輸入 service tftp { socket_type = dgram protocol = udp wait = yes user = shirf server = /usr/sbin/in.tftpd server_args = -s /home/shirf/my_explore/tftp_file/ disable = no per_source = 11 cps = 100 2 flags = IPv4 }

其中user=shirf為使用者名稱,server_args = -s /home/shirf/my_explore/tftp_file/ 為tftp共享目錄。

③建立tftp共享目錄

cd /home/shirf/my_explore/

mkdir tftp_file/

這個目錄的許可權可以根據具體情況更改,我用的預設許可權

④重啟tftp服務

sudo /etc/init.d/xinetd restart

⑤測試

在tftp共享目錄中,建立檔案

vi hello_world

輸入你的內容。

tftp 192.168.1.101

tftp> get hello_world Received 14 bytes in 0.0 seconds tftp> 這是檢視你獲取的檔案,

tftp> q

退出

至此,tftp伺服器配置完畢

  1. nfs掛載根檔案系統

PC端:

sudo apt-get install portmap nfs-kernel-server

sudo vi /etc/exports

/home/shirf/my_explore/nfs_file 192.168.1.103(rw,sync,no_root_squash)

我的共享資料夾為/home/shirf/my_explore/nfs_file 我只允許192.168.1.103訪問我的共享資料夾

sudo /etc/init.d/nfs-kernel-server restart 重啟nfs服務

至此,通過網路掛載核心和根檔案系統的pc端已經配置完畢,下面就是從uboot端配置成從網路下載核心和根檔案系統了。

更改uboot環境變數為

“bootcmd=run bootcmd_net\0” 即可執行網路掛載部分。 這裡我出了點問題,我使用直連線連線開發板和PC機,uboot通過tftp載入核心時,一直在超時,觀察開發板端的指示燈,發現活動燈在閃爍,當通過pc端的wireshark發現無任何資料,判斷可能需要交叉線,換了根交叉線,還是不行,後來只能講開發板和pc機通過路由器(交換機也可)連線,就可以正常掛載核心和根檔案系統。通過閱讀手冊,網路端現在之所以可以通過直連線(無任何交換裝置)就可以實現連個兩個pc機進行通訊,是因為phy晶片的功能,phy晶片有自動探測和交叉收發線的功能,但是上述問題並未解決,暫時先使用路由器,後期有時間了在試試更改uboot原始碼看看是不是需要配置什麼暫存器,因為同樣的硬體在正常啟動linux後,可以使用網路於pc機通訊。

  1. telnet與開發板互動

修改profile檔案,新增開機自啟動telnet服務,新增內容如下 #start telnet mkdir /dev/pts mount -t devpts devpts /dev/pts telnetd -l /bin/sh echo echo “start telnet ok.”

我的profile就變為

/etc/profile: system-wide .profile file for the Bourne shells

PATH=/bin:/sbin:/usr/bin:/usr/sbin export LD_LIBRARY_PATH=/lib:/usr/lib

#start telnet mkdir /dev/pts mount -t devpts devpts /dev/pts telnetd -l /bin/sh

echo echo -n "Processing /etc/profile… " echo “Done” echo

重啟裝置reboot. / # netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN netstat: /proc/net/tcp6: No such file or directory netstat: /proc/net/udp6: No such file or directory netstat: /proc/net/raw6: No such file or directory Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path

開啟了一個埠號為23的tcp伺服器,並且處於監聽狀態. 此時,我在我的計算機端使用telnet連結我的開發板

我的計算機ip為192.168.1.101,使用192.168.1.103即可完成遠端訪問開發板如下圖

[email protected]:/etc/xinetd.d$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 30:65:ec:19:2f:bf inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::3265:ecff:fe19:2fbf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19910 errors:0 dropped:0 overruns:0 frame:0 TX packets:21121 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1573165 (1.5 MB) TX bytes:15315686 (15.3 MB)

[email protected]:/etc/xinetd.d$ telnet 192.168.1.103 Trying 192.168.1.103… Connected to 192.168.1.103. Escape character is ‘^]’.

/ # ls bin etc linuxrc proc sys var boot home lost+found root tmp dev lib mnt sbin usr / #

最後就是退出終端使用

ctrl+],然後在輸入q回車即可.

同時,也可使用帶使用者名稱稱登入

建立登陸的使用者資料夾,我的passwd登陸名稱是imx6q,登陸後進入/home/imx6q/目錄

mkdir home/imx6q 修改telnet登陸方式 #telnetd -l /bin/sh telnetd -l /bin/login

使用/bin/login登陸 此時使用PC機普通使用者登陸,

[email protected]:/$ telnet 192.168.1.103 Trying 192.168.1.103… Connected to 192.168.1.103. Escape character is ‘^]’.

(none) login: imx6q Password: mkdir: can’t create directory ‘/dev/pts’: File exists mount: permission denied (are you root?)

Processing /etc/profile… Done
$

使用PC機進行超級使用者登陸 [email protected]:/$ telnet 192.168.1.103 Trying 192.168.1.103… Connected to 192.168.1.103. Escape character is ‘^]’.

(none) login: root Password: mkdir: can’t create directory ‘/dev/pts’: File exists mount: mounting devpts on /dev/pts failed: Device or resource busy

Processing /etc/profile… Done
  1. nfs共享檔案

( 1 ) PC端:

sudo apt-get install portmap nfs-kernel-server

sudo vi /etc/exports

/home/shirf/my_explore/nfs_file 192.168.1.103(rw,sync,no_root_squash)

我的共享資料夾為/home/shirf/my_explore/nfs_file 我只允許192.168.1.103訪問我的共享資料夾

sudo /etc/init.d/nfs-kernel-server restart 重啟nfs服務

( 2 )開發板端 mkdir /home/imx6q/nfs_flie

mount -t nfs -o nolock 192.168.1.101:/home/shirf/my_explore/nfs_file /home/imx6q/nfs_flie

我講地址為:192.168.1.101,目錄為/home/shirf/my_explore/nfs_file 掛在到我的/home/imx6q/nfs_flie資料夾上

這樣就通過這個檔案就可實現開發板於PC機的檔案共享. 5. ftp共享檔案

( 1 )建立共享資料夾

mkdir /home/imx6q/ftp_file

chmod 777 ftp_file/

這樣任意登陸使用者都可使用ftp上傳或下載這個資料夾中的資料了

( 2 )啟動ftpd服務

tcpsvd 0 21 ftpd -w /home/imx6q/ftp_file &

使用圖形介面登陸imx6q使用者,輸入密碼,即可上傳、下載、刪除ftp資料夾中的資料了

至此,開發板開啟ftp服務