基于網(wǎng)絡(luò)加載的嵌入式BootLoader的設(shè)計(jì)與實(shí)現(xiàn)
摘要:由于嵌入式系統(tǒng)引導(dǎo)裝載程序(BootLoader)的網(wǎng)絡(luò)加載方式在產(chǎn)品開發(fā)初期階段的廣泛應(yīng)用,因此基于網(wǎng)絡(luò)的BootLoader設(shè)計(jì)與實(shí)現(xiàn)具有較強(qiáng)的實(shí)際意義。提出了基于網(wǎng)絡(luò)加載的BootLoader整套設(shè)計(jì)與解決方案,并將該方案應(yīng)用到實(shí)際產(chǎn)品DVB—C中。最后,通過BootLoad er引導(dǎo)裝載過程的測試與分析,驗(yàn)證該方案的可行性與高效性。
關(guān)鍵詞:嵌入式系統(tǒng);BootLoader;網(wǎng)絡(luò);DVB—C機(jī)頂盒
嵌入式系統(tǒng)從軟件結(jié)構(gòu)層次的角度來看,一般由引導(dǎo)裝載程序(BootLoader,BSP)、操作系統(tǒng)和應(yīng)用程序幾部分組成。然而在有的嵌入式系統(tǒng)中,操作系統(tǒng)和應(yīng)用程序存放在系統(tǒng)以外的設(shè)備中,如網(wǎng)絡(luò)、硬盤等,整個(gè)系統(tǒng)只有引導(dǎo)裝載程序。因此BootLoader是嵌入式系統(tǒng)設(shè)計(jì)中比較重要的一部分。
在嵌入式系統(tǒng)的引導(dǎo)中,按照應(yīng)用程序存放位置,可以有3種不同的加載方式:固態(tài)存儲(chǔ)媒體、磁盤以及網(wǎng)絡(luò),每種方式都會(huì)有自己特有的配置和用法。3種設(shè)置方式各有其優(yōu)缺點(diǎn),固態(tài)儲(chǔ)存媒體啟動(dòng)方式一般適用于帶有ROM/FLASH的嵌入式系統(tǒng)中,是大多數(shù)嵌入式設(shè)備的首選方案如手機(jī),mp3等,但當(dāng)應(yīng)用程序較大的情況下,為了降低嵌入式設(shè)備的單價(jià),磁盤啟動(dòng)方式也被大量使用,典型應(yīng)用如SDH電信傳輸網(wǎng)絡(luò)設(shè)備測試儀ANT-20等,而基于網(wǎng)絡(luò)加載方式則是最便宜的嵌入式設(shè)備的應(yīng)用方案,應(yīng)用程序存放在網(wǎng)絡(luò)服務(wù)器端,嵌入式設(shè)備啟動(dòng)時(shí),只需要將它通過網(wǎng)絡(luò)當(dāng)?shù)絻?nèi)存并運(yùn)行,一方面可以快速解決應(yīng)用程序升級問題,另一方面也可以降低嵌入設(shè)備的整體成本,且在開發(fā)初期這種方式也能大幅提高調(diào)試速度,典型的應(yīng)用如嵌入式設(shè)備的瘦客戶端。
1 基于網(wǎng)絡(luò)加載的BootLoader方案設(shè)計(jì)
這種方案重點(diǎn)解決兩個(gè)問題,一是嵌入式設(shè)備加電后啟動(dòng)前與服務(wù)器端之間的通信與聯(lián)系,二是嵌入設(shè)備在啟動(dòng)過程中應(yīng)用程序下載方式的實(shí)現(xiàn)。前者需要將嵌入式設(shè)備驅(qū)動(dòng)起來,實(shí)現(xiàn)通信能力,網(wǎng)卡驅(qū)動(dòng)是必須實(shí)現(xiàn)的步驟,后者需要通過相關(guān)的協(xié)議棧將應(yīng)用程序下載到系統(tǒng)內(nèi)存,運(yùn)行起來。本文重點(diǎn)介始基于UDP/IP協(xié)議棧的(DHCP、TFIP、NFS)加載方案設(shè)計(jì)。
1.1 BooiLoader中網(wǎng)卡驅(qū)動(dòng)的設(shè)計(jì)
網(wǎng)絡(luò)適配器(網(wǎng)卡)一般由可編程數(shù)據(jù)鏈路控制器、曼徹斯特編碼/譯碼器、收發(fā)器接口和控制電路等幾部分組成,其中可編程數(shù)據(jù)鏈路控制器由微處理器和網(wǎng)絡(luò)管理部分等組成,如圖1所示。
在BootLoader網(wǎng)卡驅(qū)動(dòng)設(shè)計(jì)中,主要包括3種基本的操作(文中以Realtek8139網(wǎng)卡作為實(shí)例進(jìn)行具體分析):
1)網(wǎng)卡的初始化
應(yīng)完成的工作是初始化網(wǎng)卡中的相關(guān)硬件,包括網(wǎng)卡中斷向量的設(shè)置、網(wǎng)卡接收與發(fā)送緩沖區(qū)在內(nèi)存中的映射、網(wǎng)卡數(shù)據(jù)結(jié)構(gòu)的初始化等。
2)數(shù)據(jù)包發(fā)送
發(fā)送和發(fā)送控制部分負(fù)責(zé)幀的發(fā)送。發(fā)送部分接受來自“NBZ曼徹斯特轉(zhuǎn)換器”的曼徹斯特碼的數(shù)據(jù),并在發(fā)送控制部分允許的條件下將數(shù)據(jù)發(fā)送到媒體,發(fā)送的數(shù)據(jù)稱為TxD。發(fā)送控制部分判定是否進(jìn)行發(fā)送,這種判定基于LAN管理部分和TxD來進(jìn)行。
3)數(shù)據(jù)包的接收
接收和接收控制部分負(fù)責(zé)幀的接收。這一部分產(chǎn)生網(wǎng)絡(luò)是否有載波存在的信號(hào),產(chǎn)生的依據(jù)是從RxD中獲得。因此,網(wǎng)絡(luò)上來的信號(hào)一方面饋送給接收器,另一方面要饋送給接收控制部分。接收控制部分根據(jù)LAN管理部分和媒體上接收的信號(hào)判定是否使接收器工作。
1.2 網(wǎng)絡(luò)服務(wù)器端應(yīng)用方案的設(shè)計(jì)
在網(wǎng)絡(luò)加載BootLoader中,使用到的應(yīng)用層協(xié)議有DHCP、TFTP和NFS。目標(biāo)平臺(tái)在工作中,需要服務(wù)器端提供以上協(xié)議的服務(wù):
1)建立服務(wù)器端的DHCP服務(wù)
該服務(wù)完成的功能是為目標(biāo)平臺(tái)提供有效的IP地址分配,保證目標(biāo)平臺(tái)與服務(wù)器之間正常通信時(shí)地址唯一。其配置過程如下:
在確信DHCP協(xié)議已經(jīng)被正確安裝后,需修改/etc/dhcpd.conf文件,例如:
評論