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