首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

X86工控主板DOS应用程序的动态加载

X86工控主板DOS应用程序的动态加载

在嵌入式操作系统中,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
            abApp1
            APP1
            GOTO LabApp3
            abApp2
            APP2
            GOTO LabApp3
            abApp3
            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格式下载
返回列表