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了。
成都英創信息技術有限公司 028-8618 0660