TI官網下載StellarisWare軟體包,,按預設路徑解壓縮,在C:\StellarisWare內有多個檔案夾,其中C:\StellarisWare\board\rdk-s2e檔案夾內即為主角:串口轉乙太網路的源碼。它使用lwIP1.3.2為TCP/IP協議棧。
TI的串口轉乙太網路模組可以快速的將串列傳輸轉為乙太網路傳輸,模組包括一個基於ARM Cortex M3的微控制器,一對串口,一個網路連接埠。
這個串口轉乙太網路模組軟體支援以下功能:
可以靜態分配IP也可通過DHCP動態分配IP;
一個用於參數配置的WEB伺服器;
用於裝置發現的UPnP(隨插即用);
支援基於RFC2217(遠程串口配置)的Telnet用戶端
通過乙太網路遠程韌體升級。
實驗用硬體:
利爾達送的LSD-S2E21-01開發板,處理器是LM3S6432.
在C:\StellarisWare\board\rdk-s2e 檔案夾下有兩個檔案夾,分別是boot_eth和ser2enet,boot_eth內是boot loader原始碼,它是整個模組代碼的一小部分,位於Flash開始的4K內(0x0~0xFFF),它既可用於應用程式的載入,又可用於使用者程式的“在應用編程”(IAP),即遠程升級韌體,它可以通過bl_config.h配置為通過串口、IIC、SSI、乙太網路和USB中的一個作為遠程升級的通訊方式。ser2enet檔案夾裡是串口轉乙太網路的主要代碼,從Flash的0x1000處開始存放代碼映象。
下面將代碼下載到硬體中:開啟boot_eth檔案夾下的boot loader工程,編譯下載,再開啟ser2enet檔案夾下的工程檔案,編譯下載。
將硬體通過網線串連電腦,如果不修改串口轉乙太網路模組的代碼,它會自動從autoip.c中建立一個IP位址範圍:169.254.1.0 ~ 169.254.254.255,子網路遮罩預設為:255, 255, 0, 0,預設會從上面IP位址範圍中選一個,所以要先將電腦的IP設定成和上面的IP池同網段,1-1所示。
圖1-1
開啟C:\StellarisWare\tools\bin檔案夾下的finder.exe程式,點擊介面的“refresh”按鈕,稍等片刻即可看到開發板的IP地址,1-2所示。
圖1-2
在瀏覽器中輸入finder.exe程式獲得的IP地址,就可以訪問串口轉乙太網路的配置參數WEB伺服器,1-3所示,圖中也可看出我用的軟體包版本是6288.
圖1-3
可是,並不是所有人的電腦IP都在169.254.x.x這個Ip段,那麼怎麼改程式才能讓開發板的IP和自己的電腦同IP段呢,修改的好處是顯而易見的,這樣只要通過一個交換器,就能實現電腦上網和訪問開發板兩不誤。
首先開啟ser2enet檔案夾內的工程,定位到autoip.c的static void
autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr) 函數,將這個函數的
ipaddr->addr=htonl(addr);改為:
ipaddr->addr =0xAC101430; //172.16.20.48 byzhu
ipaddr->addr = htonl(ipaddr->addr);
這裡我將我的開發板IP地址定位172.16.20.48,因為我的電腦IP也屬於同網段。另外也可以通過WEB伺服器修改,一旦更改之後,除非完全擦除整個Flash,才可以再配置新IP。