在嵌入式操作系統中,DOS因其自身小巧、占用資源少、啟動速度快等特點而占據了一席之地。DOS應用程序的自動加載運行,一般是通過編輯一個批處理文件來實現,對于英創x86板卡的用戶來說,則只需要編輯user.bat文件即可。一般大多數的情況是客戶指定運行單一的應用程序,編輯user.bat的內容為應用程序的文件名,就很方便地實現程序的自動加載運行了,這部分內容在英創系列X86嵌入式主板的“使用必讀”均有詳細的介紹。在實際的應用中,可能還會遇到根據不同的環境配置,需要加載不同的客戶應用程序的情況,也就是說不是加載一個單一固定的程序,還需要在加載應用程序之前先行自動判斷。在本文中將結合英創X86主板的特點,通過編輯user.bat的內容,介紹一種實現該功能的方法。
以英創公司的X86系列主板為例,英創公司的X86系列主板預裝了DOS操作系統,支持DOS的標準應用,可以通過GPRS或以太網兩種方式接入WAN,這兩種接入WAN的方式往往是單獨使用的,但也有可能對于不同的使用環境,使用者希望可以選擇接入WAN的方式。為此,可以構建兩個應用程序:通過GPRS接入WAN的應用程序APP1,通過以太網接入WAN的應用程序APP2,用戶選擇哪一種方式上網,其實就是選擇執行哪一個應用程序,在本例中用GPIO來識別用戶的選擇。英創公司的工控主板都提供了數量眾多的GPIO,關于GPIO的使用請查看相應的“編程手冊”,這里不再贅述。專門編寫一個test程序,系統啟動后,先調用程序test,在test中判斷GPIO的狀態,并由這個狀態返回一個值,系統判斷test的返回選擇執行相應的程序,所以編輯user.bat內容如下:
@ECHO OFF
Test
IF ERRORLEVEL 1 GOTO LabApp1
IF ERRORLEVEL 0 GOTO LabApp2
GOTO LabApp3
:LabApp1
APP1
GOTO LabApp3
:LabApp2
APP2
GOTO LabApp3
:LabApp3
ECHO end!
從user.bat可以看到,系統啟動后,先執行test.exe,然后利用if errorlevel命令對test的返回值進行判斷,if errorlevel命令可以判斷程序的返回值,根據不同的返回值來決定執行不同的命令,需要注意的是if errorlevel 比較返回碼的判斷條件并非等于,而是大于等于,所以對于結合使用goto命令時的習慣用法是返回值按從大到小的順序排列。在user.bat中,通過if errorlevel判斷test的返回值,從而決定執行APP1還是APP2,也就實現了上網方式的選擇。test.cpp中主要代碼如下:
#define BIT0 0x01
if( inportb( PortAddr )&BIT0 ) // 讀取GPIO狀態(PortAddr為具體的端口地址)
return 0;
return 1;
做完上面的工作后,把user.bat,test.exe,app1.exe和app2.exe下載到系統中,用戶僅需要通過一個跳線器,將相應的GPIO腳置為高或低就可以輕松的選擇應用程序的執行了,從而實現了DOS下應用程序的動態加載。
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35609
發布評論請先 登錄
相關推薦
評論