專利名稱:顯示設(shè)備軟體更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及顯示設(shè)備領(lǐng)域,尤其是涉及到液晶顯示器制造和售后維修服務(wù),具體 的講是涉及一種顯示設(shè)備軟體更新方法。
背景技術(shù):
最大眾化的顯示設(shè)備是PC用的顯示器。最開始的顯示器是CRT顯示器。顯示屏 采用的陰極射線管,所有的調(diào)整都是靠硬件完成,無需軟體支持。隨著信息化的發(fā)展。出現(xiàn) 了電調(diào)的CRT顯示器,但這時(shí)僅僅是些邏輯門的控制電路。90年代出現(xiàn)了有OSD控制界面 的顯示器,這時(shí)候顯示器就必須使用MCU的控制系統(tǒng)。MCU簡稱為單片機(jī),是一種微型處理 器,它就需要軟體支持。早期的軟體只是OSD及畫面的控制。只涉及很少的硬件控制,絕大 部分還是硬件完成的。軟體一股是簡單的OSD控制,程序代碼少,一股在設(shè)計(jì)階段程序就固 定不動(dòng),量產(chǎn)時(shí)軟體永久固定在MCU中,不能更新。液晶顯示器是現(xiàn)今主流顯示器。與CRT顯示器最大的不同是CRT是模擬顯示器, 液晶顯示器是一種全數(shù)字化的顯示器。這時(shí)MCU是顯示器真正的大腦,控制了顯示器所有 的硬件資源。程序也超過10萬行。加上每個(gè)客戶需求千差萬別,對應(yīng)的硬件也不斷更新。 軟體也在不斷變化之中。難免出現(xiàn)軟體BUG和需要軟體克服的硬件問題,都需要更新軟體 解決。液晶顯示器是一種普遍使用的設(shè)備,通常搭配各種PC或視頻輸出設(shè)備使用。但液 晶顯示器使用的過程中,工作環(huán)境和匹配的PC千差萬別。在液晶顯示器設(shè)計(jì)和驗(yàn)證的過程 中,會(huì)進(jìn)行各種兼容性和可靠性測試。但測試和驗(yàn)證過程中不能將所有的外部和內(nèi)部因素 都在跑和驗(yàn)證中發(fā)現(xiàn)。以致在量產(chǎn)銷售后留到市場出現(xiàn)不良?,F(xiàn)階段這類不良,業(yè)內(nèi)普遍做法是盡量通過更新顯示器軟體克服。但更新軟體需 要專業(yè)設(shè)備和經(jīng)過專門培訓(xùn)的人員操作,如圖1,業(yè)內(nèi)普遍使用的液晶顯示器通過PC更新 軟體的連接圖,需要專業(yè)的設(shè)備,如并口燒錄板或USB燒錄板,且各個(gè)芯片廠家的燒錄設(shè)備 不一樣。這就為售后及客戶端更新顯示器軟體帶來巨大麻煩,往往需要準(zhǔn)備多套燒錄設(shè)備。 而且在真正的客戶端是沒有這些專業(yè)的設(shè)備。需要專業(yè)的技術(shù)人員上門處理或讓客戶將不 良顯示器送修。這需要大量的售后服務(wù)成本。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對上述現(xiàn)有技術(shù)提出一種顯示設(shè)備軟體更新方 法,其利用End User自己電腦的顯卡作為燒錄設(shè)備,對不良液晶顯示器,進(jìn)行軟體更新,無 需并口設(shè)備或?qū)I(yè)的USB設(shè)備更新軟體,通過該方法可以實(shí)現(xiàn)通過PC內(nèi)置顯卡的DDC端口 燒錄EDID,HDCP,Gamma等眾多顯示設(shè)備必須數(shù)據(jù),通過I2C通信協(xié)議進(jìn)行各類數(shù)據(jù)傳輸,以 及通過DDC-CI通信實(shí)現(xiàn)各種顯示設(shè)備功能應(yīng)用如定時(shí)關(guān)機(jī),OSD調(diào)整,色彩調(diào)整等。本發(fā)明為解決上述提出的問題所采用解決方案為顯示設(shè)備軟體更新方法,其 特征在于使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備,使用顯卡的DDC(digital displaychannel)端口,通過I2C協(xié)議,將軟體數(shù)據(jù)送入顯示設(shè)備的FLASH中進(jìn)行軟件更新。按上述方案,所述的使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備的方法是在終端 用戶PC上,安裝應(yīng)用軟件,該應(yīng)用軟件首先獲得內(nèi)置顯卡的位置,并找到該內(nèi)置顯卡的DDC 端口,使用該內(nèi)置顯卡的DDC端口進(jìn)行燒錄,所述的應(yīng)用軟件,包括有驅(qū)動(dòng)部分程序、控制 部分程序和FLASH燒錄部分程序。按上述方案,所述的應(yīng)用軟件工作的具體流程步驟是1)將驅(qū)動(dòng)部分程序加載在操作系統(tǒng)的內(nèi)核中,用于直接進(jìn)入操作系統(tǒng)內(nèi)核,使得 該驅(qū)動(dòng)部分程序成為操作系統(tǒng)的一個(gè)大的功能模塊,該驅(qū)動(dòng)部分程序①用于尋找及控制 終端用戶PC的硬件設(shè)備,然后查找終端用戶PC的內(nèi)置顯卡,并確認(rèn)內(nèi)置顯卡的工作狀態(tài), 最后控制內(nèi)置顯卡使其與內(nèi)置顯卡互相通信;②為控制部分程序提供內(nèi)部接口 ;2)通過控制部分程序調(diào)用驅(qū)動(dòng)部分程序,并提供外部接口供FLASH燒錄程序調(diào) 用,該控制部分程序①用于確定要調(diào)用的內(nèi)置顯卡在操作系統(tǒng)中的位置,即在系統(tǒng)內(nèi)存的 地址,通過調(diào)用驅(qū)動(dòng)部分程序獲得內(nèi)置顯卡的實(shí)際物理地址;②通過控制部分程序設(shè)定的 參數(shù)為驅(qū)動(dòng)部分程序提供查找各種類型內(nèi)置顯卡的參數(shù);③通過獲得的實(shí)際物理地址,調(diào) 用驅(qū)動(dòng)部分程序,并通過驅(qū)動(dòng)部分程序訪問終端用戶PC的內(nèi)置顯卡,從而找到內(nèi)置顯卡的 DDC端口 ;④使用內(nèi)置顯卡的DDC端口編寫基本的I2C調(diào)用函數(shù),供FLASH燒錄程序調(diào)用, 該I2C調(diào)用函數(shù)為I2C基本函數(shù),實(shí)現(xiàn)通過內(nèi)置顯卡的DDC端口的I2C數(shù)據(jù)通信;3) FLASH燒錄部分程序?qū)⑿枰獰浀奈募D(zhuǎn)換成I2C指令及數(shù)據(jù)流,調(diào)用控制部 分程序通過DDC端口,顯示設(shè)備軟件數(shù)據(jù)流以I2C協(xié)議為載體將顯示設(shè)備軟體數(shù)據(jù)送入需 要更新的顯示設(shè)備的FLASH中,從而對顯示設(shè)備進(jìn)行軟體更新。按上述方案,步驟1)所述的功能模塊包括有枚舉設(shè)備模塊,獲取設(shè)備物理地址模 塊和DDC端口調(diào)用模塊;其中①枚舉設(shè)備模塊用于枚舉終端用戶PC中掛接在PCI總線上的設(shè)備,并讀取每個(gè)設(shè)備的PCI配置空 間,并將每個(gè)設(shè)備的 VendorID 和 DevicelD,BusNumber,Bass Address Register,提供給控 制部分程序;②獲取設(shè)備物理地址模塊用于將PCI配置空間的Bass Address Register線性的虛擬地址轉(zhuǎn)換成操作系統(tǒng) 中實(shí)際的物理的地址,并提供給DDC端口調(diào)用模塊;③DDC端口調(diào)用模塊結(jié)合獲取的設(shè)備在操作系統(tǒng)中實(shí)際的物理地址和控制部分程序調(diào)用端口設(shè)備模 塊的DDC端口偏移地址,得到內(nèi)置顯卡的DDC端口在操作系統(tǒng)中的實(shí)際物理地址,通過該實(shí) 際物理地址操作或控制內(nèi)置顯卡DDC端口的輸出。按上述方案,步驟2)所述的控制部分程序包括有十個(gè)功能模塊,分別為初始化模 塊、尋找顯卡模塊、各類顯卡參數(shù)Table、列入鏈表模塊、搜索鏈表模塊、選擇需要的顯卡模 塊、DDC端口初始化模塊、I2C實(shí)例模塊、調(diào)用端口設(shè)備模塊和I2C基本應(yīng)用接口模塊;其中①初始化模塊獲得驅(qū)動(dòng)部分程序在操作系統(tǒng)中的句柄,通過該句柄激活驅(qū)動(dòng)部分程序的枚舉設(shè) 備模塊,使得驅(qū)動(dòng)部分程序枚舉終端用戶PC中掛接在PCI總線上的設(shè)備;
②尋找顯卡模塊從驅(qū)動(dòng)部分程序的枚舉設(shè)備模塊,根據(jù)各類內(nèi)置顯卡參數(shù)Table提供的數(shù)據(jù),篩 選出終端用戶PC的內(nèi)置顯卡;③各類顯卡參數(shù)Table 提供各種內(nèi)置顯卡的參數(shù),包含如下參數(shù)Vend0rID、DeviceID, DDC端口偏移地 址和SDA SCL的BIT位,其中VendorID和DeviceID提供給尋找顯卡模塊作為判斷枚舉的 設(shè)備是否為內(nèi)置顯卡的依據(jù);④列入鏈表模塊用于尋找顯卡模塊獲得的顯卡參數(shù),并將PCI配置空間的BusNumber,Bass AddressRegister列入鏈表中,一同列入鏈表中的還包括DDC端口偏移地址和SDA SCL的 BIT 位;⑤搜索鏈表模塊用于將所有的終端用戶PC的內(nèi)置顯卡或多個(gè)DDC的端口一一列出來加入下一個(gè) 對應(yīng)的鏈表中,以便選擇需要的顯卡模塊提取需要的內(nèi)置顯卡;⑥選擇需要的顯卡模塊根據(jù)實(shí)際需要,人工或自動(dòng)選擇實(shí)際需要的內(nèi)置顯卡,并將對應(yīng)的鏈表指針提供 給DDC端口初始化模塊;⑦DDC端口初始化模塊根據(jù)選擇需要的顯卡模塊提供的鏈表指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈 表中BusNumber,Bass Address Register數(shù)據(jù),傳送給驅(qū)動(dòng)部分的獲取設(shè)備物理地址模塊, 得到需要調(diào)用的終端用戶PC的內(nèi)置顯卡在操作系統(tǒng)中實(shí)際的物理的地址;⑧I2C實(shí)例模塊根據(jù)選擇需要的顯卡模塊提供的指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈表中 DDC端口偏移地址、SDA SCL的BIT位數(shù)據(jù);⑨調(diào)用端口設(shè)備模塊將I2C實(shí)例模塊獲取的DDC端口偏移地址、SDA SCL的BIT位數(shù)據(jù),送往驅(qū)動(dòng)部分 的DDC端口調(diào)用模塊;⑩12C基本應(yīng)用接口模塊與I2C實(shí)例模塊相結(jié)合,將SCL SDA (iETSDA函數(shù)設(shè)定成I2C基本應(yīng)用接口供FLASH 燒錄程序調(diào)用。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)由于可以使用終端用戶PC的內(nèi)置顯卡作 為燒錄設(shè)備,故無需專業(yè)售后人員上門維修或End User送修,無需要求End User有專業(yè)的 設(shè)備及專業(yè)的知識??梢怨?jié)約大量的售后維修費(fèi)用。到達(dá)節(jié)省維修時(shí)間、節(jié)省市場不良維 修費(fèi)用的目的。
圖1是現(xiàn)有普遍使用的液晶顯示器通過PC更新軟體的連接圖,需要專業(yè)的設(shè)備, 如并口燒錄板或USB燒錄板;圖2是本發(fā)明液晶顯示器通過終端用戶PC更新軟體的連接圖,無需任何額外設(shè)備。圖3是獲得各種不同類型顯卡DDC端口的方框示意圖。圖4顯示設(shè)備軟體更新原理圖。圖5是本發(fā)明的實(shí)施例1程序流程圖。圖6實(shí)施例1的顯示設(shè)備軟體更新的方框圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步說明,但不能作為對本發(fā)明的限定。實(shí)施例1如圖2所示,這里以一臺(tái)聯(lián)想開天M3000 PC作為燒錄用終端用戶PC,該P(yáng)C安裝 微軟WindowsXP操作系統(tǒng),AOC 2217V+顯示器為軟體更新對象說明本發(fā)明的具體實(shí)施方 式。因?yàn)锳OC 2217V+顯示器使用的是Realtek Scalar IC0故本例以Realtek燒錄程序?yàn)?FLASH燒錄程序加以描述。本發(fā)明使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備,使用顯卡的DDC(digital displaychannel)端口,通過I2C協(xié)議,將軟體數(shù)據(jù)送入顯示設(shè)備的FLASH中進(jìn)行軟件更新。所述的使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備的方法是在終端用戶PC上, 安裝應(yīng)用軟件,該應(yīng)用軟件首先獲得內(nèi)置顯卡的位置,并找到該內(nèi)置顯卡的DDC端口,使用 該內(nèi)置顯卡的DDC端口進(jìn)行燒錄,所述的應(yīng)用軟件,包括有驅(qū)動(dòng)部分程序、控制部分程序和 FLASH燒錄部分程序。所述的應(yīng)用軟件工作的具體流程步驟是1)將驅(qū)動(dòng)部分程序加載在操作系統(tǒng)的內(nèi)核中,用于直接進(jìn)入操作系統(tǒng)內(nèi)核,使得 該驅(qū)動(dòng)部分程序成為操作系統(tǒng)的一個(gè)大的功能模塊,該驅(qū)動(dòng)部分程序①用于尋找及控制 終端用戶PC的硬件設(shè)備,然后查找終端用戶PC的內(nèi)置顯卡,并確認(rèn)內(nèi)置顯卡的工作狀態(tài), 最后控制內(nèi)置顯卡使其與內(nèi)置顯卡互相通信;②為控制部分程序提供內(nèi)部接口 ;2)通過控制部分程序調(diào)用驅(qū)動(dòng)部分程序,并提供外部接口供FLASH燒錄程序調(diào) 用,該控制部分程序①用于確定要調(diào)用的內(nèi)置顯卡在操作系統(tǒng)中的位置,即在系統(tǒng)內(nèi)存的 地址,通過調(diào)用驅(qū)動(dòng)部分程序獲得內(nèi)置顯卡的實(shí)際物理地址;②通過控制部分程序設(shè)定的 參數(shù)為驅(qū)動(dòng)部分程序提供查找各種類型內(nèi)置顯卡的參數(shù);③通過獲得的實(shí)際物理地址,調(diào) 用驅(qū)動(dòng)部分程序,并通過驅(qū)動(dòng)部分程序訪問終端用戶PC的內(nèi)置顯卡,從而找到內(nèi)置顯卡的 DDC端口 ;④使用內(nèi)置顯卡的DDC端口編寫基本的I2C調(diào)用函數(shù),供FLASH燒錄程序調(diào)用, 該I2C調(diào)用函數(shù)為I2C基本函數(shù),實(shí)現(xiàn)通過內(nèi)置顯卡的DDC端口的I2C數(shù)據(jù)通信;3) FLASH燒錄部分程序?qū)⑿枰獰浀奈募D(zhuǎn)換成I2C指令及數(shù)據(jù)流,調(diào)用控制部 分程序通過DDC端口,顯示設(shè)備軟件數(shù)據(jù)流以I2C協(xié)議為載體將顯示設(shè)備軟體數(shù)據(jù)送入需 要更新的顯示設(shè)備的FLASH中,從而對顯示設(shè)備進(jìn)行軟體更新。所述的功能模塊包括有枚舉設(shè)備模塊,獲取設(shè)備物理地址模塊和DDC端口調(diào)用模 塊;其中①枚舉設(shè)備模塊用于枚舉終端用戶PC中掛接在PCI總線上的設(shè)備,并讀取每個(gè)設(shè)備的PCI配置空 間,并將每個(gè)設(shè)備的 VendorID 和 DevicelD,BusNumber,Bass Address Register,提供給控制部分程序;②獲取設(shè)備物理地址模塊用于將PCI配置空間的Bass Address Register線性的虛擬地址轉(zhuǎn)換成操作系統(tǒng) 中實(shí)際的物理的地址,并提供給DDC端口調(diào)用模塊;③DDC端口調(diào)用模塊結(jié)合獲取的設(shè)備在操作系統(tǒng)中實(shí)際的物理地址和控制部分程序調(diào)用端口設(shè)備模 塊的DDC端口偏移地址,得到內(nèi)置顯卡的DDC端口在操作系統(tǒng)中的實(shí)際物理地址,通過該實(shí) 際物理地址操作或控制內(nèi)置顯卡DDC端口的輸出。所述的控制部分程序包括有十個(gè)功能模塊,分別為初始化模塊、尋找顯卡模塊、各 類顯卡參數(shù)Table、列入鏈表模塊、搜索鏈表模塊、選擇需要的顯卡模塊、DDC端口初始化模 塊、I2C實(shí)例模塊、調(diào)用端口設(shè)備模塊和I2C基本應(yīng)用接口模塊;其中①初始化模塊獲得驅(qū)動(dòng)部分程序在操作系統(tǒng)中的句柄,通過該句柄激活驅(qū)動(dòng)部分程序的枚舉設(shè) 備模塊,使得驅(qū)動(dòng)部分程序枚舉終端用戶PC中掛接在PCI總線上的設(shè)備;②尋找顯卡模塊從驅(qū)動(dòng)部分程序的枚舉設(shè)備模塊,根據(jù)各類內(nèi)置顯卡參數(shù)Table提供的數(shù)據(jù),篩 選出終端用戶PC的內(nèi)置顯卡;③各類顯卡參數(shù)Table 提供各種內(nèi)置顯卡的參數(shù),包含如下參數(shù)Vend0rID、DeviceID, DDC端口偏移地 址和SDA SCL的BIT位,其中VendorID和DeviceID提供給尋找顯卡模塊作為判斷枚舉的 設(shè)備是否為內(nèi)置顯卡的依據(jù);④列入鏈表模塊用于尋找顯卡模塊獲得的顯卡參數(shù),并將PCI配置空間的BusNumber,Bass AddressRegister列入鏈表中,一同列入鏈表中的還包括DDC端口偏移地址和SDA SCL的 BIT 位;⑤搜索鏈表模塊用于將所有的終端用戶PC的內(nèi)置顯卡或多個(gè)DDC的端口一一列出來加入下一個(gè) 對應(yīng)的鏈表中,以便選擇需要的顯卡模塊提取需要的內(nèi)置顯卡;⑥選擇需要的顯卡模塊根據(jù)實(shí)際需要,人工或自動(dòng)選擇實(shí)際需要的內(nèi)置顯卡,并將對應(yīng)的鏈表指針提供 給DDC端口初始化模塊;⑦DDC端口初始化模塊根據(jù)選擇需要的顯卡模塊提供的鏈表指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈 表中BusNumber,Bass Address Register數(shù)據(jù),傳送給驅(qū)動(dòng)部分的獲取設(shè)備物理地址模塊, 得到需要調(diào)用的終端用戶PC的內(nèi)置顯卡在操作系統(tǒng)中實(shí)際的物理的地址;⑧I2C實(shí)例模塊根據(jù)選擇需要的顯卡模塊提供的指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈表中 DDC端口偏移地址、SDA SCL的BIT位數(shù)據(jù);⑨調(diào)用端口設(shè)備模塊
將I2C實(shí)例模塊獲取的DDC端口偏移地址、SDA SCL的BIT位數(shù)據(jù),送往驅(qū)動(dòng)部分 的DDC端口調(diào)用模塊;⑩12C基本應(yīng)用接口模塊與I2C實(shí)例模塊相結(jié)合,將SCL SDA (iETSDA函數(shù)設(shè)定成I2C基本應(yīng)用接口供FLASH 燒錄程序調(diào)用。驅(qū)動(dòng)部分程序通過Visual Studio 編譯成 VideoCardI2C. SYS。VideoCardI2C. SYS即為驅(qū)動(dòng)部分程序,它包括枚舉設(shè)備模塊、獲取設(shè)備物理地址模塊和DCC端口調(diào)用模 塊。將 VideoCardI2C. SYS 加載到微軟 WindowsXP 操作系統(tǒng)后,在 Non-Plug and Play Drivers(非即插即用驅(qū)動(dòng)程序)系統(tǒng)設(shè)備中會(huì)顯示出一個(gè)虛擬設(shè)備VideoCardI2C。它 將與微軟WindowsXP操作系統(tǒng)融為一體,是微軟WindowsXP操作系統(tǒng)的一個(gè)部分。PC上 有三條總線,分別為數(shù)據(jù)總線、地址總線和控制總線,其中32位的CPU的尋址能力為4GB。 PC中會(huì)擁有很多設(shè)備,其中很多設(shè)備都提供了自己的設(shè)備內(nèi)存,顯卡就會(huì)提供自己的內(nèi) 存。這部分內(nèi)存會(huì)映射到PC的物理內(nèi)存上。雖然可以尋址4GB內(nèi)存,而在PC里往往沒有 如此多的真實(shí)內(nèi)存,微軟WindowsXP操作系統(tǒng)為使用者提供了虛擬內(nèi)存的概念。虛擬地址 在0-0X7FFFFFFF范圍內(nèi)的虛擬地址內(nèi)存,即低2GB為虛擬地址,被稱為用戶模式地址。而 0X80000000-0XFFFFFFFF范圍內(nèi)的虛擬地址內(nèi)存,即高2GB為虛擬地址,被稱為內(nèi)核模式地 址。微軟WindowsXP操作系統(tǒng)規(guī)定運(yùn)行在用戶狀態(tài)的程序,只能訪問用戶模式地址,而運(yùn)行 在核心態(tài)的程序,可以訪問整個(gè)4GB的虛擬內(nèi)存,即用戶模式地址和內(nèi)核模式地址。要訪問 顯卡DDC端口的程序必須運(yùn)行在內(nèi)核模式地址。如圖3方框圖所示,說明了顯卡DDC端口 的獲得方法的思想,描述了訪問PC硬件的方法。控制部分程序同樣通過Visual Studio 編譯成 VideoCardio. dll,VideoCardio. dll是一個(gè)動(dòng)態(tài)鏈接庫程序,供FLASH燒錄程序調(diào)用,這里是供Realtek燒錄程序調(diào)用。 VideoCardio. dll包括初始化模塊、尋找顯卡模塊、各類顯卡參數(shù)Table、列入鏈表模塊、搜 索鏈表模塊、選擇需要的顯卡模塊、DDC端口初始化模塊、I2C實(shí)例模塊、調(diào)用端口設(shè)備模塊 和I2C基本應(yīng)用接口模塊。控制部分程序工作在用戶模式地址,控制程序工作在用戶模式 有助于增加程序穩(wěn)定性。因?yàn)閃indows驅(qū)動(dòng)程序雖然和普通Win32應(yīng)用程序一樣,都是用C 語言或者C++編寫,但是比起普通應(yīng)用程序,增加了很多嚴(yán)格的限制,很多C語言和C++語 言的使用技巧要謹(jǐn)慎使用,而且驅(qū)動(dòng)程序代碼過大會(huì)降低Windows的執(zhí)行效率,所以需要 將盡量多的功能放在控制部分程序。如圖5為2217V+通過聯(lián)想開天M3000 PC更新軟體的方框圖。說明了這種新的顯 示設(shè)備軟體更新方法的流程。當(dāng)Realtek燒錄程序,也就是燒錄程序初次更新2217V+顯示器軟體時(shí),Realtek 燒錄程序會(huì)調(diào)用控制部分程序(VideoCardio. dll)如圖4的初始化模塊,控制部分程序 (VideoCardio. dll)會(huì)打開WindowsXP操作系統(tǒng)的驅(qū)動(dòng)設(shè)備,并找到VideoCardI2C. SYS驅(qū) 動(dòng)設(shè)備的句柄。并通過該句柄發(fā)出IRP(I/0 Request Package即輸入輸出請求包),調(diào)用 VideoCardI2C. SYS驅(qū)動(dòng)程序的枚舉設(shè)備模塊,枚舉設(shè)備模塊會(huì)枚舉PC中的設(shè)備。如各類顯 卡、PCI設(shè)備、聲卡。根據(jù)PCI規(guī)范所有的PCI橋接設(shè)備都是以VendorID & DeviceID區(qū)分。 枚舉設(shè)備模塊會(huì)通過IRP,送往控制部分程序(VideoCardio. dll)的尋找顯卡模塊。尋找顯 卡模塊會(huì)根據(jù)各類顯卡參數(shù)Table確認(rèn)本機(jī)顯卡類型,聯(lián)想開天M3000 PC的顯卡為Intel845G 集成顯卡,VendorID & DeviceID 分別為 0x8086,0x2572。當(dāng) VideoCardI2C. SYS 驅(qū)動(dòng) 程序的枚舉設(shè)備模塊枚舉到Intel 845G集成顯卡VendorID & DeviceID (0x8086,0x2572) 后,將顯卡配置空間的參數(shù)列入鏈表模塊中,如BusNumber,Bass Address Register ;并 且從各類顯卡參數(shù)Table中提取VendorID& DeviceID為0x8086,0x2572的一列參數(shù)。 I2CAddress_0ffset(DDC 端口偏移地址)、SDA_HIGH、SDA_LOW、SCL_HIGH、SCL_LOW、GetSDA_ Offset,VideoCard_Style等一同列入顯卡鏈表同一個(gè)元素中。因?yàn)橐慌_(tái)PC可能有多個(gè)顯 卡,或一個(gè)顯卡有多個(gè)DDC端口。所以尋找顯卡模塊會(huì)將所有的顯卡一個(gè)個(gè)列入下一個(gè)鏈 表的元素中。接下來只要選擇需要使用哪個(gè)顯卡的DDC端口,聯(lián)想開天M3000 PC只有一個(gè) Intel 845G集成顯卡。VendorID & DeviceID分別為0x8086,0x2572,調(diào)用搜索鏈表模塊, 我們就在鏈表中找到這個(gè)顯卡。再調(diào)用選擇需要的顯卡模塊,我們這里使用的這個(gè)顯卡參 數(shù)為如下VendorID, DeviceID, I2CAddress_0ffset, SDA_HIGH, SDA_L0ff, GetSDA_0ffset, SCL_HIGH, SCL_L0ff, GetSCL_0ffset, VideoCard_Style{0x8086,0x2572,0x5010,0x00000100,0x00000700,0x00001000,0x00000001, 0x00000007,0x00000010,0x0001},當(dāng)確定要調(diào)用的顯卡后,程序會(huì)運(yùn)行DDC端口初始化模塊,通過IRP將Bass AddressRegister送往VideoCardI2C. SYS驅(qū)動(dòng)程序的獲取設(shè)備物理地址模塊。Bass Address Register實(shí)際是分配在操作系統(tǒng)中虛擬地址,也就是內(nèi)核模式地址。聯(lián)想開天 M3000 PC的顯卡為Intel845G集成顯卡,通過Intel 845G PCI配置空間,可以得到Bass Address Register 為 0XFD000000,該地址在 0X80000000-0XFFFFFFFF 范圍內(nèi),即高 2GB 為 虛擬地址,也稱內(nèi)核模式地址。Vide0CardI2C. SYS驅(qū)動(dòng)程序的獲取設(shè)備物理地址模塊就 是進(jìn)行內(nèi)核地址轉(zhuǎn)換功能使用。這里經(jīng)過轉(zhuǎn)換后的物理地址為0xB2800000,這個(gè)地址是 Intel 845G PCI集成顯卡在WindowsXP實(shí)際的物理地址,往這些地址寫入或讀取數(shù)據(jù)都是 對Intel 845G PCI集成顯卡的實(shí)際操作。I2CAddress_0ffset, SDA_HIGH, SDA_L0ff, GetSDA_0ffset, SCL_HIGH, SCL_L0ff, GetSCL_Offset,VideoCard_Style參數(shù)會(huì)通過I2C實(shí)例模塊。實(shí)例成的I2C總線函數(shù),函數(shù) 會(huì)通過調(diào)用端口設(shè)備模塊發(fā)出IRP調(diào)用Vide0CardI2C. SYS驅(qū)動(dòng)程序的DDC端口調(diào)用模塊, IRP同時(shí)將I2CAddress_0ffset送往VideoCardI2C. SYS驅(qū)動(dòng)程序的DDC端口調(diào)用模塊,在 DDC端口調(diào)用模塊中I2CAddress_0ffset與Bass Address Register實(shí)際物理地址相加, 得到DDC端口的實(shí)際物理地址。Intel 845G PCI集成顯卡DDC的I2CAddress_0ffset為 0x5010,與實(shí)際物理地址0xB2800000相加等于0xB28005010,這個(gè)地址是DDC端口的物理地 址,對該地址的讀寫,就是對DDC端口的實(shí)際操作。接下來需要將對DDC端口的實(shí)際操作,轉(zhuǎn)換成I2C基本函數(shù),I2C基本應(yīng)用接口 模塊就完成了該功能,I2C總線支持任何IC生產(chǎn)過程N(yùn)MOS CMOS雙極性兩線——串行數(shù) 據(jù)SDA和串行時(shí)鐘SCL。I2C總線是一個(gè)多主機(jī)的總線這就是說可以連接多于一個(gè)能控制 總線的器件到總線由于這里的主機(jī)是PC,從機(jī)是MONITOR。I2C總線函數(shù)直接設(shè)計(jì)成SCL_ HIGH、SCL_L0W、SDA_HIGH、SDA_L0W、Get_SDA幾個(gè)主要函數(shù)。當(dāng)FLASH燒錄程序調(diào)用這幾 個(gè)函數(shù)時(shí)。這些函數(shù)會(huì)根據(jù)已經(jīng)確定的顯卡參數(shù),調(diào)用端口設(shè)備模塊,進(jìn)而通過IRP調(diào)用 VideoCardI2C. SYS驅(qū)動(dòng)程序的DDC端口調(diào)用模塊,直接在Windows操作系統(tǒng)內(nèi)核中修改顯卡的物理內(nèi)存地址DDC的BIT位。到達(dá)調(diào)用DDC端口的目的,并使得DDC端口輸出符合I2C 規(guī)范的波形。I2C數(shù)據(jù)的傳輸遵循I2C 7位地址格式(詳細(xì)狀況參閱I2C總線規(guī)范),在起始條 件Start后發(fā)送了一個(gè)從機(jī)地址這個(gè)地址共有7位緊接著的第8位是數(shù)據(jù)方向位R/W 0表 示發(fā)送寫1表示請求數(shù)據(jù)讀數(shù)據(jù)傳輸一股由主機(jī)產(chǎn)生的停止位Stop終止。然后將這些函 數(shù)做成API連接到各IC廠家的FLASH燒錄程序上。各廠家的FLASH燒錄程序就可以實(shí)現(xiàn) 通過DDC(digitaldiSplay channel)數(shù)據(jù)顯示通道更新軟體的目的。這里的Realtek FLASH燒錄程序,直接使用I2C基本應(yīng)用接口模塊的I2CWrite_ VideoCard函數(shù)。實(shí)現(xiàn)DDC端口 I2C通信,將需要更新的顯示設(shè)備軟體轉(zhuǎn)換成I2C指令及 數(shù)據(jù)流,用I2C的通信協(xié)議送入DDC端口,DDC端口通過信號線送入被更新顯示器的FLASH 中,完成顯示器軟體的更新。圖6顯示設(shè)備軟體更新的具體實(shí)施方式
方框圖。描述了實(shí)際 的顯示設(shè)備軟體更新系統(tǒng)。雖然以上描述了本發(fā)明的具體實(shí)施方式
,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理 解,我們所描述的具體的實(shí)施例只是說明性的,而不是用于對本發(fā)明的范圍的限定,熟悉本 領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的 權(quán)利要求所保護(hù)的范圍內(nèi)。
權(quán)利要求
顯示設(shè)備軟體更新方法,其特征在于使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備,使用顯卡的DDC端口,通過I2C協(xié)議,將軟體數(shù)據(jù)送入顯示設(shè)備的FLASH中進(jìn)行軟件更新。
2.按權(quán)利要求1所述的顯示設(shè)備軟體更新方法,其特征在于所述的使用終端用戶PC的 內(nèi)置顯卡作為燒錄設(shè)備的方法是在終端用戶PC上,安裝應(yīng)用軟件,該應(yīng)用軟件首先獲得 內(nèi)置顯卡的位置,并找到該內(nèi)置顯卡的DDC端口,使用該內(nèi)置顯卡的DDC端口進(jìn)行燒錄,所 述的應(yīng)用軟件,包括有驅(qū)動(dòng)部分程序、控制部分程序和FLASH燒錄部分程序。
3.按權(quán)利要求2所述的顯示設(shè)備軟體更新方法,其特征在于所述的應(yīng)用軟件工作的具 體流程步驟是1)將驅(qū)動(dòng)部分程序加載在操作系統(tǒng)的內(nèi)核中,用于直接進(jìn)入操作系統(tǒng)內(nèi)核,使得該驅(qū) 動(dòng)部分程序成為操作系統(tǒng)的一個(gè)大的功能模塊,該驅(qū)動(dòng)部分程序①用于尋找及控制終端 用戶PC的硬件設(shè)備,然后查找終端用戶PC的內(nèi)置顯卡,并確認(rèn)內(nèi)置顯卡的工作狀態(tài),最后 控制內(nèi)置顯卡使其與內(nèi)置顯卡互相通信;②為控制部分程序提供內(nèi)部接口 ;2)通過控制部分程序調(diào)用驅(qū)動(dòng)部分程序,并提供外部接口供FLASH燒錄程序調(diào)用,該 控制部分程序①用于確定要調(diào)用的內(nèi)置顯卡在操作系統(tǒng)中的位置,即在系統(tǒng)內(nèi)存的地址, 通過調(diào)用驅(qū)動(dòng)部分程序獲得內(nèi)置顯卡的實(shí)際物理地址;②通過控制部分程序設(shè)定的參數(shù)為 驅(qū)動(dòng)部分程序提供查找各種類型內(nèi)置顯卡的參數(shù);③通過獲得的實(shí)際物理地址,調(diào)用驅(qū)動(dòng) 部分程序,并通過驅(qū)動(dòng)部分程序訪問終端用戶PC的內(nèi)置顯卡,從而找到內(nèi)置顯卡的DDC端 口 ;④使用內(nèi)置顯卡的DDC端口編寫基本的I2C調(diào)用函數(shù),供FLASH燒錄程序調(diào)用,該I2C 調(diào)用函數(shù)為I2C基本函數(shù),實(shí)現(xiàn)通過內(nèi)置顯卡的DDC端口的I2C數(shù)據(jù)通信;3)FLASH燒錄部分程序?qū)⑿枰獰浀奈募?,轉(zhuǎn)換成I2C指令及數(shù)據(jù)流,調(diào)用控制部分程 序通過DDC端口,顯示設(shè)備軟件數(shù)據(jù)流以I2C協(xié)議為載體將顯示設(shè)備軟體數(shù)據(jù)送入需要更 新的顯示設(shè)備的FLASH中,從而對顯示設(shè)備進(jìn)行軟體更新。
4.按權(quán)利要求3所述的顯示設(shè)備軟體更新方法,其特征在于步驟1)所述的功能模塊包 括有枚舉設(shè)備模塊,獲取設(shè)備物理地址模塊和DDC端口調(diào)用模塊;其中①枚舉設(shè)備模塊用于枚舉終端用戶PC中掛接在PCI總線上的設(shè)備,并讀取每個(gè)設(shè)備的PCI配置空間, 并將每個(gè)設(shè)備的 VendorID 和 DevicelD,BusNumber, Bass Address Register,提供給控制 部分程序;②獲取設(shè)備物理地址模塊用于將PCI配置空間的Bass Address Register線性的虛擬地址轉(zhuǎn)換成操作系統(tǒng)中實(shí) 際的物理的地址,并提供給DDC端口調(diào)用模塊;③DDC端口調(diào)用模塊結(jié)合獲取的設(shè)備在操作系統(tǒng)中實(shí)際的物理地址和控制部分程序調(diào)用端口設(shè)備模塊的 DDC端口偏移地址,得到內(nèi)置顯卡的DDC端口在操作系統(tǒng)中的實(shí)際物理地址,通過該實(shí)際物 理地址操作或控制內(nèi)置顯卡DDC端口的輸出。
5.按權(quán)利要求3或4所述的顯示設(shè)備軟體更新方法,其特征在于步驟2)所述的控制部 分程序包括有十個(gè)功能模塊,分別為初始化模塊、尋找顯卡模塊、各類顯卡參數(shù)Table、列入 鏈表模塊、搜索鏈表模塊、選擇需要的顯卡模塊、DDC端口初始化模塊、I2C實(shí)例模塊、調(diào)用 端口設(shè)備模塊和I2C基本應(yīng)用接口模塊;其中①初始化模塊獲得驅(qū)動(dòng)部分程序在操作系統(tǒng)中的句柄,通過該句柄激活驅(qū)動(dòng)部分程序的枚舉設(shè)備模 塊,使得驅(qū)動(dòng)部分程序枚舉終端用戶PC中掛接在PCI總線上的設(shè)備;②尋找顯卡模塊從驅(qū)動(dòng)部分程序的枚舉設(shè)備模塊,根據(jù)各類內(nèi)置顯卡參數(shù)Table提供的數(shù)據(jù),篩選出 終端用戶PC的內(nèi)置顯卡;③各類顯卡參數(shù)Table:提供各種內(nèi)置顯卡的參數(shù),包含如下參數(shù)Vend0rID、DeviceID, DDC端口偏移地址和 SDA SCL的BIT位,其中VendorID和DeviceID提供給尋找顯卡模塊作為判斷枚舉的設(shè)備是 否為內(nèi)置顯卡的依據(jù);④列入鏈表模塊用于尋找顯卡模塊獲得的顯卡參數(shù),并將PCI配置空間的BusNumber,Bass AddressRegister列入鏈表中,一同列入鏈表中的還包括DDC端口偏移地址和SDA SCL的 BIT 位;⑤搜索鏈表模塊用于將所有的終端用戶PC的內(nèi)置顯卡或多個(gè)DDC的端口一一列出來加入下一個(gè)對應(yīng) 的鏈表中,以便選擇需要的顯卡模塊提取需要的內(nèi)置顯卡;⑥選擇需要的顯卡模塊根據(jù)實(shí)際需要,人工或自動(dòng)選擇實(shí)際需要的內(nèi)置顯卡,并將對應(yīng)的鏈表指針提供給DDC 端口初始化模塊;⑦DDC端口初始化模塊根據(jù)選擇需要的顯卡模塊提供的鏈表指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈表中 BusNumber,Bass Address Register數(shù)據(jù),傳送給驅(qū)動(dòng)部分的獲取設(shè)備物理地址模塊,得到 需要調(diào)用的終端用戶PC的內(nèi)置顯卡在操作系統(tǒng)中實(shí)際的物理的地址;⑧I2C實(shí)例模塊根據(jù)選擇需要的顯卡模塊提供的指針,獲得需要調(diào)用顯卡的鏈表,提取該鏈表中DDC 端口偏移地址、SDA SCL的BIT位數(shù)據(jù);⑨調(diào)用端口設(shè)備模塊將I2C實(shí)例模塊獲取的DDC端口偏移地址、SDA SCL的BIT位數(shù)據(jù),送往驅(qū)動(dòng)部分的DDC 端口調(diào)用模塊;⑩I2C基本應(yīng)用接口模塊與I2C實(shí)例模塊相結(jié)合,將SCL SDA GETSDA函數(shù)設(shè)定成I2C基本應(yīng)用接口供FLASH燒錄程序調(diào)用。
全文摘要
本發(fā)明涉及顯示設(shè)備領(lǐng)域,尤其是涉及到液晶顯示器制造和售后維修服務(wù),具體的講是涉及一種顯示設(shè)備軟體更新方法,使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備,使用顯卡的DDC(digital display channel)端口,通過I2C協(xié)議,將軟體數(shù)據(jù)送入顯示設(shè)備的FLASH中進(jìn)行軟件更新。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)由于可以使用終端用戶PC的內(nèi)置顯卡作為燒錄設(shè)備,故無需專業(yè)售后人員上門維修或End User送修,無需要求End User有專業(yè)的設(shè)備及專業(yè)的知識。可以節(jié)約大量的售后維修費(fèi)用。到達(dá)節(jié)省維修時(shí)間、節(jié)省市場不良維修費(fèi)用的目的。
文檔編號G06F9/445GK101937709SQ20101025668
公開日2011年1月5日 申請日期2010年8月19日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者劉微 申請人:冠捷顯示科技(武漢)有限公司