您现在所在的是:

微软嵌入式

回帖:0个,阅读:706 [上一页] [1] [下一页]
458
emtronix2010
文章数:91
年度积分:50
历史总积分:458
注册时间:2010/4/2
发站内信
发表于:2010/4/14 9:55:40
#0楼
在嵌入式操作系统中,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下应用程序的动态加载。



[查看全文]

[关于英创]

[更多文章]

[技术论坛]

本文PDF格式下载

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002