EM9000是英创公司极具特色的一款ARM9工控主板。经过长时间的完善,现系统已完全稳定。这其间,EM9000已在应用的版本多达4个,分别是:EM9000 V8、EM9000 V9、EM9000 V9.1、EM9000 V10.1。
它们各自的特点及改进:
·EM9000 V8:它的最大特点是系统可以使用DOC作为外部扩展的存贮设备。
·EM9000 V9:在系统中新增加了NANDFLASH,作为系统的常规存贮器,还将系统的IDE控制器信号引出了系统,以方便扩展外部存贮设备。同时,将原有的DOC扩展口去掉。
·EM9000 V9.1:改善了系统的启动,系统引出了第二条中断信号到ISA总线。
·EM9000 V10.1:在系统中新增了LVDS接口以直接支持更多高清的LCD屏,还新扩展了一个串口以提供给用户使用,即系统拥有4个独立的用户可使用的串口。
由于EM9000V10.1新增加了一个独立的串口,与这之前的系统在串口资源上出现了一些变化,具体变化如下表:
物理串口 |
EM9000 V8 - V9.1 |
EM9000 V10.1 |
COM1 |
调试串口 |
COM1 |
COM2 |
COM1 |
COM2 |
COM3 |
COM2 |
COM3 |
COM4 |
COM3 |
COM4 |
在上表中,“COM1:”表示应用软件中要打开的物理串口所对应的设备名称。
从表中可以知道,V8-V9版的EM9000,应用程序只有3个串口可用,即物理串口COM2 - COM4,且物理串口与系统中的串口设备名称没有对应起来,V10.1及以后版本的系统中,应用程序有4个串口可用,物理串口与应用程序中的串口设置备名称是一一对应的。因此,用户在使用EM9000V10.1版本替换以前的系统时,就会出现串口资源不对应的现象。为了解决系统的兼容问题,英创公司修改了EM9000_ISA_API.lib和EM9000_ISA_API.h文件,新增了读取系统版本的函数EM9000_Version()。通过该函数可以识别到系统的版本,从而,可根据上面的表格中,对串口进行合理的安排及应用。该函数的描述如下:
// 功能描述: 返回EM9000板卡的硬件版本信息。
// 返回值 = 0: EM9000 V8版或更早版本。
// = 1: EM9000 V9。
// = 2: EM9000 V9.1。
// = 3: EM9000 V9.2。
// = 4: EM9000 V10.1。
// = -1: 未知型号的板卡
int EM9000_Version();
下面的代码就是利用该函数来读取系统的版本号以设置正确的串口设备名称。
TCHAR szPort[20]; // 要打开的串口设备名称
HANDLE SerHandle; // 打开的串口设备的handle
int PortNo; // 要打开的物理串口号,仅为:1、2、3、4有效
………
// 设置串口名称
// 如读取出来的版本号为4(V10.1)或是以后的版本,则物理串口与串口设备名称对应
// 如读取出来的版本号低于4(版本低于V10.1),则物理串口需要减1,才是所对应的串口设备名称
if(EM9000_Version() >= 4)
wsprintf(szPort, L'COM%d:', PortNo);
else
wsprintf(szPort, L'COM%d:', PortNo-1);
SerHandle = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); // 打开串口设置
相当一部分客户已把EM9000 V9版作为部件应用到其产品中,自然希望应用程序能够完全不修改的在EM9000 V10上运行。为此,我们专门在EM9000 V10板中增加了把EM9000 V10设置成EM9000 V9的命令“setver”。具体操作如下:
\> setver 9
上述操作把板卡设置成V9模式。重起系统后,即按EM9000 V9完全兼容模式运行。若要把板子设置回V10的状态,只需运行:
\> setver 10
注意,当设置成V9模式后,应用程序就不能操作EM9000 V10的物理串口1了。
全部0条评论
快来发表一下你的评论吧 !