发表于:2010/5/21 9:27:05
#0楼
英创公司的ARM9工控主板系列产品均预装了正版的Window CE操作系统,支持客户采用强大的微软开发工具直接开发应用程序。Windows CE是目前针对嵌入式应用的主流操作系统之一,具有灵活的可裁剪性能,以支持客户对应用功能的不同选择。在实际应用中,客户的需求一方面可能反映在对CE不同功能的选择上,另一方面会反映在英创公司对产品的BSP的不断改进与完善之中。而不论是CE功能的删减添加,还是驱动程序的升级,对客户来讲都是更新系统的内核。为了及时满足客户需求的变化,英创公司针对不同的主板类型设计了相应的内核更新软件工具。英创公司将把当前内核文件通过互联网发给需要的客户,客户再利用相关工具,就可方便的把新的内核文件直接写入英创工控主板中。
在实际应用中的另外一个问题是,作为工控产品一般都具有较长的产品生命周期,往往会出现一部分产品已经投入市场,而针对某些应用又产生了新的需求,因此需要对这一部分的产品进行内核更新的工作。这时就需要了解当前主板产品的内核版本信息,而内核版本信息一般很难从主板外观上看出。为此英创公司从2009年12月起,为新出品的主板产品加入了内核的时间标签作为版本信息。客户若需查看内核时间标签,可通过以太网Telnet登录到主板,然后运行“\>BTS”命令,就可读到系统的时间标签信息,格式如下:
Emtronix Built at Dec 1 2009 12:30:00
客户的应用程序也可通过以下代码读取相应的时间标签字串:
// GetBuiltStamp.cpp : Defines the entry point for the application.
//
#include 'stdafx.h'
#include
#define IOCTL_KLIB_USER 256 // where OEM defined IOCTL starts.
#define HAL_EM9XXX_BUILT_STAMP_READ 117
#define IOCTL_EM9XXX_BUILT_STAMP_READ CTL_CODE(FILE_DEVICE_HAL, IOCTL_KLIB_USER+HAL_EM9XXX_BUILT_STAMP_READ, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern 'C' __declspec(dllimport) BOOL KernelIoControl( DWORD dwIoControlCode,
LPVOID pInBuffer,
DWORD InSize,
LPVOID pOutBuffer,
DWORD OutSize,
LPDWORD pReturnBytes);
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
char StampString[128];
DWORD dwOutBufSize;
DWORD dwReturnBytes;
BOOL bRet;
dwOutBufSize = 128;
bRet = KernelIoControl(IOCTL_EM9XXX_BUILT_STAMP_READ,
NULL,
0,
(LPVOID)StampString,
dwOutBufSize,
&dwReturnBytes);
if(!bRet)
{
printf('Kernel Built Stamp is unavailable\r\n');
}
else
{
StampString[dwReturnBytes] = '\0';
printf('%s\r\n', StampString);
}
return 0;
}
[查看全文]
[关于英创]
[更多文章]
[技术论坛]
[本文PDF格式下载]
在实际应用中的另外一个问题是,作为工控产品一般都具有较长的产品生命周期,往往会出现一部分产品已经投入市场,而针对某些应用又产生了新的需求,因此需要对这一部分的产品进行内核更新的工作。这时就需要了解当前主板产品的内核版本信息,而内核版本信息一般很难从主板外观上看出。为此英创公司从2009年12月起,为新出品的主板产品加入了内核的时间标签作为版本信息。客户若需查看内核时间标签,可通过以太网Telnet登录到主板,然后运行“\>BTS”命令,就可读到系统的时间标签信息,格式如下:
Emtronix Built at Dec 1 2009 12:30:00
客户的应用程序也可通过以下代码读取相应的时间标签字串:
// GetBuiltStamp.cpp : Defines the entry point for the application.
//
#include 'stdafx.h'
#include
#define IOCTL_KLIB_USER 256 // where OEM defined IOCTL starts.
#define HAL_EM9XXX_BUILT_STAMP_READ 117
#define IOCTL_EM9XXX_BUILT_STAMP_READ CTL_CODE(FILE_DEVICE_HAL, IOCTL_KLIB_USER+HAL_EM9XXX_BUILT_STAMP_READ, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern 'C' __declspec(dllimport) BOOL KernelIoControl( DWORD dwIoControlCode,
LPVOID pInBuffer,
DWORD InSize,
LPVOID pOutBuffer,
DWORD OutSize,
LPDWORD pReturnBytes);
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
char StampString[128];
DWORD dwOutBufSize;
DWORD dwReturnBytes;
BOOL bRet;
dwOutBufSize = 128;
bRet = KernelIoControl(IOCTL_EM9XXX_BUILT_STAMP_READ,
NULL,
0,
(LPVOID)StampString,
dwOutBufSize,
&dwReturnBytes);
if(!bRet)
{
printf('Kernel Built Stamp is unavailable\r\n');
}
else
{
StampString[dwReturnBytes] = '\0';
printf('%s\r\n', StampString);
}
return 0;
}
[查看全文]
[关于英创]
[更多文章]
[技术论坛]
[本文PDF格式下载]