目前最新的uBase操作系統(tǒng)內(nèi)核版本號為3.07.002
下面對新大陸PT850/PT853/PT852數(shù)據(jù)采集器uBase操作系統(tǒng)內(nèi)核的升級過程做一下說明:
================================================================================
2012-07-17,uBase kernel for PT85x 3.07.002
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.35.28
================================================================================
1. 文件系統(tǒng)格式更新,運行效率更好,容錯性更高。同時,支持 2KB-page NAND Flash。
************************************************************
此版本內(nèi)核將強制使用新版文件系統(tǒng),直接從3.06.XXX及之前升級將
導(dǎo)致原有文件全部丟失。因此,用戶應(yīng)該將原有文件拷貝出再執(zhí)行
升級。
************************************************************
2. 加入 DebugFlags 手段,方便控制內(nèi)核調(diào)試信息輸出。應(yīng)用層也可用 vaDbgComPort 往串口輸出調(diào)試信息。
3. 開機時,往 PT85X 串口 115200bps 連續(xù)送 'g' 字符,將使能所有的內(nèi)核調(diào)試信息輸出(會拖慢運行速度)。
4. 開機時檢測系統(tǒng)時鐘是否跑飛(可能由于時鐘電池耗盡導(dǎo)致),檢測到時提示用戶重設(shè)系統(tǒng)時間。
================================================================================
2011-12-01,uBase kernel for PT85x 3.06.004
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.31.28
================================================================================
1. Modem 撥號函數(shù)的變化:
* 新增 Modem 撥號輔助函數(shù) DialupStr_from_ConfigFile(內(nèi)核函數(shù)),該文件分析 NetConf2.ini 的指定小節(jié),返回該小節(jié)對應(yīng)的撥號字符串。返回的撥號字符串可直接用于 Dialup_with_Config。原先,NetConf2.ini 的小節(jié)內(nèi)容需要由應(yīng)用層代碼(如 850Shell)來分析,這樣的一個缺點是,當(dāng)今后對 NetConf2.ini 中小節(jié)的含義做出擴展時,應(yīng)用程序必須跟著調(diào)整方能跟隨這些變化;由內(nèi)核來解釋 NetConf2.ini,就不需要修改應(yīng)用程序,只需升級內(nèi)核與更新 NetConf2.ini 即可使用新的撥號特性。
* 特別地,對于內(nèi)置無線 Modem 的機器,要使用系統(tǒng)默認(rèn)的設(shè)置進行撥號,寫法現(xiàn)可以簡潔到:
char bufDialupstr[256] = {0};
DialupStr_from_ConfigFile(NULL, NULL, bufDialupstr, sizeof(bufDialupstr));
err = Dialup_with_Config(bufDialupstr, NULL, NULL);
* DialupStr_from_ConfigFile 分析的配置文件名可以是自定義的,只是默認(rèn)為 NetConf2.ini 。
* Modem 撥號,PPP 會話超時由默認(rèn) 12 秒(不可調(diào))增加為默認(rèn) 60 秒,原 12 秒超時值有時不足以讓 SIMCOM SIM900A 完成撥號。該超時值現(xiàn)可以通過撥號選項 PppTimeoutSec 來調(diào)整(單位:秒)。
2. NetConf2.ini 文件格式擴展:對于具有 UseInternalModem=YES 的小節(jié),有如下規(guī)定:
* 可以同時加入 AccessPointName= 與 NumToDial= 選項,系統(tǒng)(指 DialupStr_from_ConfigFile 函數(shù))會根據(jù)實際的內(nèi)置 Modem 類型來擇其一使用,對于 GPRS modem 使用 AccessPointName,對于 CDMA modem 使用 NumToDial。
* 若要自行加入額外選項,此額外選項名必須用星號打頭。比如,要加入 PppTimeoutSec=120,小節(jié)得寫成
[使用內(nèi)置無線Modem撥號]
UseInternalModem=YES
BaudRate=115200
AccessPointName=CMNET
NumToDial=#777
*PppTimeoutSec=120
3. 850Shell 網(wǎng)絡(luò)撥號部分采用 DialupStr_from_ConfigFile 獲取撥號字符串。
4. 修正 CloseFindFile 返回值,成功時返回 0,原先會返回隨機值。
5. 850Shell 時鐘設(shè)置部分,調(diào)整時區(qū)時,實時更新用戶界面上年月日時分秒的數(shù)值。
================================================================================
2011-02-22,uBase kernel for PT85x 3.06.002
* Laser decoder(SE1200) 3.05.011
* CCD decoder(EM1300) 1.25.20
================================================================================
新增功能:
1. 提供 EM1300 v1.25.20 固件,PT853 用戶可自行更新此固件(手動執(zhí)行 down-em1300d.bat)。
2. 支持新的 GPRS modem(SIMCOM SIM900)以及新的 CDMA modem(ZTE 8331)。
3. 提供新的撥號函數(shù)。新函數(shù) ConstructDefaultGPRSDialupString, ConstructDefaultCDMADialupString 可用于獲取缺省的 GPRS,CDMA 撥號字符串,它們內(nèi)部會自動判斷內(nèi)置modem的類型。使用方法參考 850Shell 源碼。
4. 提供函數(shù) GetInternalModemTrait 來獲知內(nèi)置modem的類型。(提供信息之用)
5. 支持 page 為 2KB 的 NAND flash 機型。之前只支持 512B 的。
功能改進:
1. 對于紅外口(COM4),UartClose 內(nèi)部會等待串口輸出緩沖區(qū)放空后才真正關(guān)閉串口硬件。之前,用戶須自行等待,若等待時間不足將導(dǎo)致尾部數(shù)據(jù)沒有寫出。
2. WLAN 相關(guān):WiPort 驅(qū)動內(nèi)部 InternalRebootToSec 和 WiPortBootupWaitSec 默認(rèn)值由 30 改為40 ,提高 WiPort 注冊Wifi網(wǎng)絡(luò)的適應(yīng)性。換言之, WlanStart 超時值傳 0,內(nèi)部即用 40 秒為超時值。
================================================================================
2010-10-15,uBase kernel for PT85x 3.05.010 with decoder 3.05.011
================================================================================
PT850(硬件 V6、V7、V8 都適用),PT853, PT852(硬件V7)。
建議所有使用 3.05.009 及之前內(nèi)核的設(shè)備都升級到 3.05.010 。
1. 重要修正:3.05.007 以來讀碼 API 報告的條碼類型數(shù)值(BARCODEINFO.code_type) 比先前版本少 1 ,F(xiàn)恢復(fù)為和 3.05.007 之前條碼類型數(shù)值一致。 (r1985)
2. 條碼類型明確了 Code39 和 Full ASCII 39 類型的區(qū)分,之前的內(nèi)核版本,PT850和PT853對此二者解釋不一致,F(xiàn)在,區(qū)分規(guī)則是:若解碼后的 Code 39 內(nèi)容中含有Code39基本字符集以外的字符,則認(rèn)為條碼類型為 FULL ASCII Code 39,否則就不是。 (r2091,2092)
3. 重要修正:文件系統(tǒng)相關(guān)代碼標(biāo)記 NAND Flash 壞塊標(biāo)記有誤。(r2081)
4. 修正:應(yīng)用程序多余的 UnRegScannerCallBack 調(diào)用會導(dǎo)致應(yīng)用程序卡死。(r2083)
5. PT850 判斷是否有接激光頭的方法改為根據(jù)設(shè)備名稱字符串中是否包含“850N”,包含則為無激光頭的設(shè)備,同時修改老化測試,"850N"設(shè)備不測試識讀頭。(r1950)
6. 修正UC1610液晶驅(qū)動中溫度校正函數(shù)指令錯誤的bug。加對UC1610液晶屏幕灰階測試功能。(r2074)
7. 修正:PT853 啟動后、直接進字符shell、然后執(zhí)行文件系統(tǒng)上的程序,會死機。(r2046, r2085)
================================================================================
2009-10-23,uBase kernel for PT85x 3.05.009 with decoder 3.05.011
================================================================================
適用設(shè)備: PT850(硬件 V6、V7、V8 都適用),PT853, PT852(硬件V7)。
特別提示:對于硬件 V8.2 版的 PT853,必須使用此版本的內(nèi)核,即,不能使用 3.05.008 或更早的,否則 PT853 將工作異常。
在 V8.2 的PT853 上、使用 3.05.009 內(nèi)核,在插了串口線的情況下進行讀碼,主控CPU能夠能夠正確獲取識讀頭傳來的條碼,V8.1 硬件則不能,——這是 V8.2 硬件設(shè)計上的變動。
==新增功能==
===相比于 3.05.008:===
1. PT853 添加對 EnableScanner DisableScanner 的支持。
2. 關(guān)于 PT853 識讀頭(COM5)與外接串口(COM1)共用硬件物理串口的處理方法:對于硬件版本號為 V8.2 或以上的機器,軟件打開COM1或COM4 會將硬件切換到外接串口,打開COM5會將硬件切換到識讀頭。若程序同時打開了 COM1 和 COM5,則 COM5 具有優(yōu)先級。
對于硬件 V8.1 或以下的機器,COM1 & COM5 互相影響的行為同 3.05.008 (請參閱 3.05.008 的發(fā)布說明)。
3. 內(nèi)核加入時區(qū)支持,850Shell "時鐘設(shè)置"頁面可設(shè)置與查看當(dāng)前時區(qū)。時區(qū)設(shè)置在格式化磁盤后不會丟失。
4. 增加如下時區(qū)相關(guān)函數(shù):
GetTimeZoneOffset 獲取本機時區(qū)設(shè)置
SetTimeZoneOffset 設(shè)置本機時區(qū)
U_time64 ANSI C time 函數(shù)的 64 位版本
U_gmtime64 ANSI C gmtime 函數(shù)的 64 位版本
U_localtime64 ANSI C localtime 函數(shù)的 64 位版本
U_mktime64 ANSI C mktime 函數(shù)的 64 位版本
注: 原 GetClock 函數(shù)返回的年月日時分秒,在此版本內(nèi)核上是指示的是本地時間。
5. 850Shell, WLAN 頁面,啟動 WLAN 設(shè)備前允許設(shè)置啟動的超時值。某些場合下,WLAN 的啟動時間會超過內(nèi)核默認(rèn)的 30 秒,此時可適當(dāng)延長此超時值來讓 WLAN 啟動成功。
6. 新增內(nèi)核函數(shù) UGetHardwareVersion, UGetDeviceSerialString, UGetDecoderVersionString 替換 850Shell systeminfopage.cpp 原先那種難以移植的系統(tǒng)信息獲取方式。
注:以上提及的新函數(shù) SDK 需要 uTools 2.03.013 才支持
==Bug修正==
1. 針對 PT853, 修改EM1300識讀頭參數(shù)獲取函數(shù),適應(yīng)新老版本EM1300固件。
2. 激光頭驅(qū)動改進,當(dāng)沒有安裝激光頭的PT850設(shè)備運行讀碼的程序時候,不會死機。
3. 850Shell,時鐘設(shè)置頁面,在 3.05.008 的內(nèi)核上保存時鐘設(shè)置時蜂鳴器會有異常聲響,此次的 850Shell 加了個延時來回避這個問題的出現(xiàn)。
================================================================================
2009-06-02,uBase kernel for PT85x 3.05.008 with decoder 3.05.011
================================================================================
==新增功能==
===相比于 3.05.005:===
1. 修改了scanner設(shè)備驅(qū)動,通過串口方式支持了 EM1300 識讀頭(對于PT853),通過設(shè)備名稱來區(qū)分識讀頭是激光頭還是 EM1300。
2. PT-853兼容了EM1300的設(shè)置碼與PT-850的設(shè)置碼。
3. 內(nèi)核字符界面的下載功能添加對EM1300下載的支持,EM1300內(nèi)核下載的塊號為:1000,EM1300配置文件下載的塊號為:999。
4. 增加了KbdRegisterEventEx函數(shù),可以獲取指定按鍵的按下與彈起事件。此接口需要uTools 2.03.013及以后的版本才支持。
5. 新增 GetClock_millisec 來提供毫秒級精度(PT850,853實際能精確到 10 毫秒),此函數(shù)接口在 uTools 2.03.013 中提供。
注:根據(jù)目前PT850,853的軟硬件實現(xiàn),GetClock_millisec 內(nèi)部會按需執(zhí)行"毫秒較時動作",該操作可能會阻塞調(diào)用線程 0~1000 毫秒。"毫秒較時動作"并非每次調(diào)用 GetClock_millisec 都發(fā)生,而是在系統(tǒng)察覺 tick 中斷丟失一定數(shù)量后才會發(fā)生。
===相比于 3.05.007:===
1. 開機過程亮 LED 綠燈,待字符 shell 啟動后關(guān)閉綠燈。若沒有此綠燈指示,用戶在按 850 電源鍵 4~5 秒后才能得到開機成功的反饋(看到字符 shell 界面),用戶體驗不佳。
==Bug修正==
1. 相比于內(nèi)核 3.05.007,將 GetClock 恢復(fù)為僅取秒級精度,另增加內(nèi)核函數(shù) GetClock_millisec 來提供毫秒級精度。原因:850掃描條碼期間,控制激光采集的代碼會關(guān) CPU 中斷、導(dǎo)致tick中斷丟失,而條碼識讀API又會對每個讀到的條碼調(diào)用 GetClock;根據(jù)目前 850 內(nèi)核的實現(xiàn),若讓 GetClock 取毫秒精度,則 GetClock 的調(diào)用線程檢測到 tick 中斷丟失超過一定數(shù)量后會啟動較時動作,此動作會導(dǎo)致調(diào)用線程卡住 100~1000 毫秒、結(jié)果表現(xiàn)為連續(xù)條碼掃描不暢。因此,在不需要毫秒精度的場合,最好避免較時動作的發(fā)生,將 GetClock 恢復(fù)為僅取秒級精度即可避免此較時動作發(fā)生。
2. 相比于內(nèi)核 3.05.007,CCD 識讀頭(即EM1300)固件版本號查詢支持,即在850shell的系統(tǒng)信息里的"解碼程序版本"將顯示 EM1300 的固件版本號,之前顯示的是激光掃描解碼庫的版本。
3. 相比于內(nèi)核 3.05.005, 修改了按觸發(fā)鍵發(fā)送啟動識讀消息的機制,檢查scanner必須在open的情況下才發(fā)送啟動識讀的消息。這樣避免了在進入識讀界面之前按過觸發(fā)鍵,進入識讀界面后,識讀頭會自動啟動識讀的bug。
==注意事項與備注==
PT853的識讀頭與外接串口目前共用主控 CPU 的物理串口。根據(jù)目前 PT853 主板(硬件版本 V7.3)的硬件設(shè)計,會有如下問題:
* 當(dāng) PT853 的外接串口空置時,CPU 的串口通道與識讀頭連通,此時識讀頭工作正常,讀到的條碼數(shù)據(jù)能傳給主控 CPU。
* 當(dāng) PT853 的外接串口連上與其他串口設(shè)備(如連接 PC 的串口)后,CPU 的串口通道將被強行切換到外接串口(PT853 的 COM1),這將導(dǎo)致識讀頭的數(shù)據(jù)無法傳給 CPU,即此情況下系統(tǒng)將無法獲得條碼數(shù)據(jù)(雖然識讀頭會發(fā)出讀碼動作)。
一個典型的“故障”現(xiàn)象是:若 PT853 串口已連接外設(shè)時開機,系統(tǒng)將取不到識讀頭版本號,——因為取識讀頭版本號需要和 EM1300 進行。
================================================================================
2009-03-10,uBase kernel for PT-850 3.05.007 with decode 3.05.011
================================================================================
== 新增功能 ==
1. 修改了scanner設(shè)備驅(qū)動,通過串口方式支持了CCD識讀頭(PT-853設(shè)備),通過設(shè)備名稱來區(qū)分識讀頭是激光頭還是CCD的。
2. PT-853兼容了EM1300的設(shè)置碼與PT-850的設(shè)置碼。
3. GetClock() 函數(shù)獲取的時間能夠達到 10 毫秒的精度,即返回的 SYSTEMCLOCK.Milliseconds 數(shù)值能夠精確到 10 毫秒。之前,返回的 SYSTEMCLOCK.Milliseconds 總是為 0。
增加了KbdRegisterEventEx函數(shù),可以獲取指定按鍵的按下與彈起事件。此接口需要uTools 2.03.013及以后的版本才支持。
== Bug修正 ==
1、修正了在進入識讀界面之前按過觸發(fā)鍵,進入識讀界面后,識讀頭會自動啟動識讀的bug。
== 已知問題 ==
[2009-04-14] 該版本內(nèi)核裝在 PT-850(搭載激光識讀頭)上運行會出現(xiàn)掃描一定數(shù)量的條碼(幾個或十幾個)后,掃描操作出現(xiàn)短暫停滯(小于1秒)的現(xiàn)象,停滯期間按掃描鍵是無法立即啟動下一次掃描的。該現(xiàn)象的出現(xiàn)不會讓系統(tǒng)運行出錯,不過導(dǎo)致不好的用戶體驗。
該現(xiàn)象是由此次 GetClock 函數(shù)的修改導(dǎo)致的,下一內(nèi)核版本將修正。
注意事項與備注
1、PT-853的識讀頭目前共用物理串口,故在PT-853設(shè)備連接串口線后,將不能進行條碼識讀。
================================================================================
2008-11-14,uBase-III kernel for 850 v3.05.005 with decoder 3.05.011
================================================================================
1D 解碼器(Decode.bin.ue)版本更新為 3.05.011 。若只想對 PT-800 更新此解碼庫,可以執(zhí)行壓縮包中的 down1dd.bat ,帶串口號作參數(shù)。
== 相比與3.05.002 的改進:==
1. 修改本機 USB 設(shè)備的 VID=0x1eab , PID=0x0501 。 0x1eab 是 NLscan 向 usb.org 申請的合法 PID 。這使得 Windows 端的 USB 驅(qū)動程序得更新才能配合之工作,新的驅(qū)動程序為 USB Datapipe and vcomdrv Driver v1.6.1 。 (r1734)
2. 內(nèi)核增加 usock_connect_name() 函數(shù),可用域名來指示要連接的主機。該功能目前只能在 850RW(WiPort模塊) 上使用,因為 WiPort 模塊 06.50 自身加入了自動域名解析功能。當(dāng)前最新的 WebCommTest 演示了此函數(shù)的使用。
3. 內(nèi)核添加激光掃描數(shù)據(jù)存儲模式設(shè)置。新掃描存儲模式會區(qū)分方向是從左到右,還是從右到左的數(shù)據(jù)。原先的方式照常使用,該設(shè)置提供給解碼庫使用。
==Bug 修正:==
1. 支持 WiPort 06.60 固件,報告正確的信號強度。若用 3.05.002 內(nèi)核+WiPort 06.60,報告的 RSSI 會少 10 dBm。
2. 內(nèi)核字符界面下載功能,若用串口,當(dāng)串口已被打開時立即宣告失敗。3.05.002 時沒沒有檢查串口是否已被他人打開。850Shell 也作了相應(yīng)修改,當(dāng)串口被占用時 kernel_download 將失敗。
3. 修正 Code93碼 無法設(shè)置的bug。
4. 修正未發(fā)布版本 3.05.003中,無法對BOOKLANDEAN、ISBT128、MSI PLESSEY、DISCRETE20F5進行設(shè)置的bug。BOOKLANDEAN默認(rèn)設(shè)置改為Disable。
==小的改動:==
1. g_isSeeVibraBug 默認(rèn)值由 1 改為 0 ,即默認(rèn)壓制自振現(xiàn)象。
================================================================================
2008-06-19,uBase-III kernel for 850 v3.05.002 with decoder 3.05.010
================================================================================
==相比與3.05.001的改進:==
1. 加入更多線程同步函數(shù),包括讀寫鎖、可嵌套調(diào)用的互斥量、Win32 事件、信號量、警告盒。這些函數(shù)都有專門的 API,用戶不再需要使用 UCreateEvent 了。
2. WiPort控制代碼改進,防止WiPort死機,引入新WLAN API 。
3. 850內(nèi)核加入通過USB運行download協(xié)議的功能。
4. Decode.bin.ue 更新為 3.05.010 (原為 3.05.004)。
5. udp_op.dll 更新為 1.4.0.3,修正 USB 連接bug。
==已知問題==
[2008-04-09] WlanStart 啟動后,自動休眠或自動關(guān)機功能就失效了,原因是 WlanStart 啟動后,COM3 上每隔幾秒總是有串口數(shù)據(jù)活動。
[2008-04-21] 用老程序 BinDownloader 給 850 下載文件時會失敗,這在內(nèi)核 3.04.021 時還是可以成功的。
[2008-07-16] 當(dāng) COM1 已經(jīng)被其他人占用的情況下(比如通過 COM1 啟動了 uCIP),且 kernel_download 之 DOWNLOAD_PARAM.chk_open=0 時,kernel_download 運行會出故障,因為那導(dǎo)致兩個線程都在讀串口。今天遇到的實際故障現(xiàn)象是 kernel_download 運行中或運行后 850 按鍵失去反應(yīng)。不幸的是已公布的 850Shell 源碼中就是把 DOWNLOAD_PARAM.chk_open 設(shè)為 0 。今決定:改 850Shell 中的 chk_open 賦值,0 改為 1,內(nèi)核不變。今后客戶遇到此問題就讓他去改自己的代碼吧。