嵌入式Linux開(kāi)發(fā)環(huán)境的搭建之:嵌入式開(kāi)發(fā)環(huán)境的搭建
| 通過(guò)串口打印信息是一個(gè)很常見(jiàn)的手段,很多其他情況如路由器等也是通過(guò)配置串口的波特率這些參數來(lái)顯示對應信息的。 |
5.1.3下載映像到開(kāi)發(fā)板
正如第4章中所述,嵌入式開(kāi)發(fā)的運行環(huán)境是目標板,而開(kāi)發(fā)環(huán)境是宿主機。因此,需要把宿主機中經(jīng)過(guò)編譯之后的可執行文件下載到目標板上。要注意的是,這里所說(shuō)的下載是下載到目標機中的SDRAM。然后,用戶(hù)可以選擇直接從SDRAM中運行或寫(xiě)入到Flash中再運行。運行常見(jiàn)的下載方式有網(wǎng)絡(luò )下載(如tftp、ftp等方式)、串口下載、USB下載等,本書(shū)主要講解網(wǎng)絡(luò )下載中的tftp方式和串口下載方式。
1.tftp
tftp是簡(jiǎn)單文件傳輸協(xié)議,它可以看作是一個(gè)FTP協(xié)議的簡(jiǎn)化版本,與FTP協(xié)議相比,它的最大區別在于沒(méi)有用戶(hù)管理的功能。它的傳輸速度快,可以通過(guò)防火墻,使用方便快捷,因此在嵌入式的文件傳輸中廣泛使用。
同FTP一樣,tftp分為客戶(hù)端和服務(wù)器端兩種。通常,首先在宿主機上開(kāi)啟tftp服務(wù)器端服務(wù),設置好tftp的根目錄內容(也就是供客戶(hù)端訪(fǎng)問(wèn)的根目錄),接著(zhù),在目標板上開(kāi)啟tftp的客戶(hù)端程序(現在很多Bootloader幾乎都提供該服務(wù))。這樣,把目標板和宿主機用直連線(xiàn)相連之后,就可以通過(guò)tftp協(xié)議傳輸可執行文件了。
下面分別講述在Linux下和Windows下的配置方法。
(1)Linux下tftp服務(wù)配置。
Linux下tftp的服務(wù)器服務(wù)是由xinetd所設定的,默認情況下是處于關(guān)閉狀態(tài)。
首先,要修改tftp的配置文件,開(kāi)啟tftp服務(wù),如下所示:
[root@localhosttftpboot]#vim/etc/xinetd.d/tftp
#default:off
#description:Thetftpserverservesfilesusingthetrivialfiletransfer
#protocol.Thetftpprotocolisoftenusedtobootdiskless
#workstations,downloadconfigurationfilestonetwork-awareprinters,
#andtostarttheinstallationprocessforsomeoperatingsystems.
servicetftp
{
socket_type=dgram/*使用數據報套接字*/
protocol=udp/*使用UDP協(xié)議*/
wait=yes/*允許等待*/
user=root/*用戶(hù)*/
server=/usr/sbin/in.tftpd/*服務(wù)程序*/
server_args=-s/tftpboot/*服務(wù)器端的根目錄*/
disable=no/*使能*/
per_source=11
cps=1002
flags=IPv4
}
在這里,主要要將“disable=yes”改為“no”,另外,從“server_args”可以看出,tftp服務(wù)器端的默認根目錄為“/tftpboot”,用戶(hù)如果需要則可以更改為其他目錄。
接下來(lái),重啟xinetd服務(wù),使剛才的更改生效,如下所示:
[root@localhosttftpboot]#servicexinetdrestart
(或者使用/etc/init.d/xinetdrestart,而且因發(fā)行版的不同具體路徑會(huì )有所不同)
關(guān)閉xinetd:[確定]
啟動(dòng)xinetd:[確定]
接著(zhù),使用命令“netstat-au”以確認tftp服務(wù)是否已經(jīng)開(kāi)啟,如下所示:
[root@localhosttftpboot]#netstat–au|greptftp
ActiveInternetconnections(serversandestablished)
ProtoRecv-QSend-QLocalAddressForeignAddressState
udp00*:tftp*:*
這時(shí),用戶(hù)就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機上的tftp服務(wù)就可以建立起來(lái)了(注意:需要在服務(wù)端關(guān)閉防火墻)。
接下來(lái),用直連線(xiàn)把目標板和宿主機連起來(lái),并且將其配置成一個(gè)網(wǎng)段的地址(例如兩個(gè)IP都可以設置為192.168.1.XXX格式),再在目標板上啟動(dòng)tftp客戶(hù)端程序(注意:不同的Bootloader所使用的命令可能會(huì )不同,例如:在RedBoot中使用load命令下載文件是基于tftp協(xié)議的。讀者可以查看幫助來(lái)獲得確切的命令名及格式),如下所示:
=>tftpboot0x30200000zImage
TFTPfromserver192.168.1.1;ourIPaddressis192.168.1.100
Filename'zImage'.
Loadaddress:0x30200000
Loading:#################################################################
###############################################################
#############################################
done
Bytestransferred=881988(d7544hex)
可以看到,此處目標板使用的IP為“192.168.1.100”,宿主機使用的IP為“192.168.1.1”,下載到目標板的地址為0x30200000,文件名為“zImage”。
(2)Windows下tftp服務(wù)配置。
在Windows下配置tftp服務(wù)器端需要下載tftp服務(wù)器軟件,常見(jiàn)的為tftpd32。
首先,單擊tftpd32下方的設置按鈕,進(jìn)入設置界面,如圖5.14所示,在這里,主要配置tftp服務(wù)器端地址,也就是宿主機的地址。
接下來(lái),重新啟動(dòng)tftpd32軟件使剛才的配置生效,這樣服務(wù)器端的配置就完成了,這時(shí),就可以用直連線(xiàn)連接目標機和宿主機,且在目標機上開(kāi)啟tftp服務(wù)進(jìn)行文件傳輸,這時(shí),tftp服務(wù)器端如圖5.15和圖5.16所示。
圖5.14tftp文件傳輸圖5.15tftpd32配置界面圖5.16tftp服務(wù)器端顯示情況
| tftp是一個(gè)很好的文件傳輸協(xié)議,它的簡(jiǎn)單易用吸引了廣大用戶(hù)。但它同時(shí)也存在著(zhù)較大的安全隱患。由于tftp不需要用戶(hù)的身份認證,因此給了黑客的可乘之機。2003年8月12日爆發(fā)的全球沖擊波(Worm.Blaster)病毒就是模擬一個(gè)tftp服務(wù)器,并啟動(dòng)一個(gè)攻擊傳播線(xiàn)程,不斷地隨機生成攻擊地址進(jìn)行入侵。因此在使用tftp時(shí)一定要設置一個(gè)單獨的目錄作為tftp服務(wù)的根目錄,如上文所述的“/tftpboot”等。 |
linux相關(guān)文章:linux教程
評論