EEPW首页 > 商机频道 > 成都英创信息技术有限公司 > 新闻 > X86工控主板DOS应用程序的动态加载 -- 英创嵌入式主板

公司信息

成都英创信息技术有限公司
所在省:四川
所在市:成都
店铺地址:http://ec.eepw.com.cn/
mfmember/index/userid/5775

联系我们

成都英创信息技术有限公司
电话:28-86180660
邮箱:web@emtronix.com
地址:成都市高新区高朋大道5号博士创业园
X86工控主板DOS应用程序的动态加载 -- 英创嵌入式主板
来源:emtronix   时间:2009-03-06
 
文章来源:http://www.emtronix.com/article/article2009264.html
   在嵌入式操作系统中,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下应用程序的动态加载。

查看全文 ]