/************************************************************/ /* 新版 COM port driver (OS7_COM.Lib) 的說明文件 */ /* */ /* 此文件包含常見問題 FAQ1~FAQ7 及改版記錄 */ /* */ /* 最後更新 [2012,Sep.,28] by Tim Tsai */ /************************************************************/ ================================================================================ FAQ1: OS7_COM.lib 是何用途? ================================================================================ Ans: OS7_COM.lib 是針對 MiniOS7 控制器的新版 COM port 的 driver。 ================================================================================ FAQ2: 使用新版 driver 有何好處? ================================================================================ Ans: * 當使用多個 COM port 時,和舊版 Driver 相比,佔用較少的記憶体。 舊版 driver: 指原 CPU 的 Lib (例如 uPAC5000.Lib) 中的 COM port 相關命令。 新版 driver: 指 OS7_COM.lib. * 對於 Driver 的開發者而言,較容易維護。 ================================================================================ FAQ3: 我可以混用新、舊兩版的 driver 嗎? ================================================================================ Ans: 可以. 例如, 下面的例子是可以正常運作的 InstallCom(1,115200,8,0,1); //COM1 用舊版 driver 的命令 ToCom(1,'a'); //COM1 用舊版 driver 的命令 OS7_COM *port; port=OS7_InstallCom(2,115200,8,0,1); //COM2 用新版 driver 的命令 OS7_ToCom(port,'a'); //COM2 用新版 driver 的命令 但是對於同一個 COM port,不可以混用新、舊兩版的 Driver 例如, 下面的例子是無法正常運作的 InstallCom(1,115200,8,0,1); //COM1 用舊版 driver 的命令 OS7_ToCom(port,'a'); //COM1 用新版 driver 的命令 ================================================================================ FAQ4: OS7_COM.lib 支援哪些 MiniOS7 的控制器 ? ================================================================================ Ans: 可支援的控制器: (a) uPAC-5000 series (b) i-7186E/7188E/7188XB/7188XC series (c) COM1/COM2 of iView-100 (尚未實際測試過) (d) 其他硬体和 uPAC-7186EX 相容的控制器 (e) i-7188。 [2010/07/09] 版開始支援 (f) i-7188XA。 [2010/07/09] 版開始支援 (g) COM1/2(80186/188 CPU 內部的 UART) 支援 DMA 接收資料的模式。 [2010/07/09] 版開始支援 (h) iPAC-8000 以及插在 iPAC-8000 上的 i8112W/8114W/8142W/8144W (i) i-8000。 插在 i-8000 上的 i8112/8114/8142/8144 尚未支援。 不支援的命令/控制器: 目前使用 MiniOS7 的模組支援應該都沒問題,部分很少用的硬體有需要加上 OS7_COM 支援的請發 mail 給 service@icpdas.com,我們會儘快加上。 ================================================================================ FAQ5: 如何將原來的 code 轉換成使用新的 driver/method ? ================================================================================ Ans: 只需要處理 2 個地方 (a) 增加一個以 OS7_COM * port 宣告的變數 (b) 在 COM port 相關的命令之前加上 "OS7_" 下面是使用新、舊兩種 Driver 的例子: -------------------------------------------------------------------------------- 1. 使用舊 driver/method (全部的命令都是宣告在 CPU head file.) -------------------------------------------------------------------------------- long baud=115200; int parity=0; int stop=1; int port=1; int data; InstallCom(port,baud,parity,stop); while(IsCom(port)){ data=ReadCom(port); ToCom(port,data); //... } RestoreCom(port); -------------------------------------------------------------------------------- 2. 使用新 driver/method (全部的命令都是宣告在 OS7_COM.h 裡面) -------------------------------------------------------------------------------- long baud=115200; int parity=0; int stop=1; OS7_COM *port; // (a)modify the declaration int data; port=OS7_InstallCom(COM_1,baud,parity,stop); // (b) add one under line. while(OS7_IsCom(port)){ // (b) add one under line. data=OS7_ReadCom(port); // (b) add one under line. OS7_ToCom(port,data); // (b) add one under line. //... } OS7_RestoreCom(port); // (b) add one under line. ================================================================================ FAQ6: 如何改 input/output buffer 的大小 ================================================================================ Ans: 預設的 input/output buffers 是 1024 bytes. 呼叫 OS7_SetComPortBufferSize 可以改變這個大小。 例如: 將大小改成 256 bytes OS7_SetComPortBufferSize(COM_2,256,256); port=OS7_InstallCom(COM_2,baud,parity,stop); 如何得知目前 input/output buffers 的大小 ? port->_InBufSize <=== to know the input buffer size. port->_OutBufSize <=== to know the output buffer size. ================================================================================ FAQ7: 哪些 COM port 支援使用 DMA? 如何使用 DMA 收 data ? ================================================================================ Ans: 支援使用 DMA 收 data 的 COM port 是由 80188/186 CPU 所提供的 COM PORT,如下所列: i-7188XB/7188XC/7188E/7186E/uPAC5000/iView100 等為 COM1 跟 COM2 i-7188/7188XA 為 COM3 跟 COM4 i-8000/i-8000-80/iPAC8000 為 COM0。 使用方法: 只要把 OS7_InstallCom 改成 OS7_InstallCom_DMA(), OS7_RestoreCom_DMA() 改成 OS7_RestoreCom_DMA() 就可以。 例如在 7188E 使用: pCOM1=OS7_InstallCom_DMA(COM_1,baud,parity,stop); ... OS7_RestoreCom_DMA(pCOM1); 在 7188/7188XA 使用: pCOM4=OS7_InstallCom_DMA(COM_4,baud,parity,stop); ... OS7_RestoreCom_DMA(pCOM4); ================================================================================ [OS7_COM 改版記錄] ================================================================================ Ver 1.1.4 [2012/09/28] released New Support: (a)支援 UART 16c850. -------------------------------------------------------------------------------- Ver 1.1.3 [2012/05/18] released Bugs Fixed: (a)修正副程式: int OS7_ReadComn(OS7_COM *com,unsigned char *buf,int maxno); 當使用 COM1 或 COM2 而且使用 DMA 模式時,會有問題。 -------------------------------------------------------------------------------- Ver 1.1.2 [2011/03/21] released New Support: (a)CPU UART 加上支援 7M1/7S1 Bugs Fixed: (a)修正副程式: void OS7_SetRtsActive(OS7_COM *com); -------------------------------------------------------------------------------- Ver 1.1.1 [2010/08/25] released Bugs Fixed: Fixed the problem for the ISR of the UART to work with floating point. [2010/09/14] released Recompile: Modify some optimization options. -------------------------------------------------------------------------------- Ver 1.1.0 [2010/07/30] released New Support: (a): iPAC-8000 & i-8114W/8112W/8142W/8144W... (b): i-8000. (i-8114/8112/8142/8144 尚未支援) Change: (a).All functions change to start with "OS7_". (b).Needs new MiniOS7 library to support some H/W dependent functions. The new library : iPAC-8000 :[2010/08/02] or later iPAC-5000 :[2010/08/03] or later i-7186E :[2010/08/03] or later i-7188E :[2010/08/03] or later i-7188XB :[2010/08/03] or later i-7188XC :[2010/08/03] or later i-7188XA :[2010/08/03] or later i-7188 :[2010/08/03] or later G4500 :[2010/08/04] or later P824A :[2010/08/05] or later i-8000 :新版本 library 尚未完成 尚未完成的版本會陸續完成。 -------------------------------------------------------------------------------- Ver 1.0.1 [2010/07/09] released New Support: (a) Add:Support i-7188 & i-7188XA (b) Add:Support using DMA to receive data for the COM ports inside the 186/188 CPU. New Functions: OS7_COM *_InstallCom_DMA(int port,long baud, int databit,int parity,int stopbit); int _RestoreCom_DMA(OS7_COM *pCom); Change: Add two variables into the structure "os7_com". -------------------------------------------------------------------------------- Ver 1.0.0 [2010/04/02] first released (a) avalible for uPAC-5000 series (b) avalible for i-7186E/7188E/7188XB/7188XC series (c) avalible for COM1/COM2 of iView-100 (not tested) (d) avalible for the controller which has compatilbe HW of uPAC-7186EX Bugs Fixed: none Change: none New Functions: none New Support: none --------------------------------------------------------------------------------