一種Flash在線升級(jí)的方法及裝置制造方法
【專利摘要】本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法及裝置,涉及通信領(lǐng)域,通過I2C總線進(jìn)行控制裝置與CPLD的數(shù)據(jù)交互完成相應(yīng)的Flash升級(jí)指令,解決現(xiàn)有總線技術(shù)中信號(hào)過多,資源開銷過大的問題。該方法包括:CPLD接收控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至控制裝置;CPLD獲取控制裝置通過I2C總線發(fā)送的I2C信號(hào),I2C信號(hào)為控制裝置在接收到第一反饋信息后,控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;CPLD獲取I2C信號(hào)中的預(yù)置的升級(jí)文件;CPLD發(fā)送預(yù)置的升級(jí)文件至扣板側(cè)的Flash,以使扣板側(cè)的Flash寫入預(yù)置的升級(jí)文件中的數(shù)據(jù)。
【專利說明】一種Flash在線升級(jí)的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種Flash在線升級(jí)的方法及裝置。
【背景技術(shù)】
[0002]在現(xiàn)有的Flash在線升級(jí)的服務(wù)方案中,CPU對(duì)扣板側(cè)的Flash進(jìn)行在線升級(jí)時(shí),是利用Local Bus總線技術(shù),直接把Local Bus (CPU總線)信號(hào)通過連接器傳送到扣板側(cè),然后將Local Bus信號(hào)經(jīng)過多個(gè)地址鎖存器進(jìn)行地址鎖存,實(shí)現(xiàn)對(duì)Local Bus信號(hào)進(jìn)行復(fù)用之后才能向扣板側(cè)的Flash發(fā)送升級(jí)命令,進(jìn)而使得扣板側(cè)的Flash完成升級(jí)操作。
[0003]然而,Local Bus總線技術(shù)中的Local Bus信號(hào)至少有37個(gè),當(dāng)CPU和Flash分屬在兩塊單板上時(shí),連接兩個(gè)單板的連接器管腳有很大一部分會(huì)被Local Bus總線占據(jù),大大增加了板間連接器的成本以及單板的布局空間。另外,當(dāng)CPU和所需在線升級(jí)的扣板側(cè)的Flash之間需要進(jìn)行遠(yuǎn)距離傳輸時(shí),由于Local Bus總線的走線長(zhǎng)度有較大的限制,可能導(dǎo)致數(shù)據(jù)傳輸過程中信號(hào)的丟失和損耗,造成信號(hào)完整性變差的問題,從而進(jìn)一步增加了 CPU的開銷,然而現(xiàn)有相關(guān)技術(shù)對(duì)此并沒有很好的解決方案。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,通過I2C (Inter — IntegratedCircuit)總線進(jìn)行控制裝置與CPLD (Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)的數(shù)據(jù)交互,以及CPLD對(duì)I2C信號(hào)的解析完成相應(yīng)的Flash升級(jí)指令,以解決現(xiàn)有總線技術(shù)中信號(hào)過多,資源開銷過大的問題。
[0005]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006]第一方面,本發(fā)明實(shí)施例提供一種Flash在線升級(jí)的方法,包括:
[0007]所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除;
[0008]所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;
[0009]所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;
[0010]所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
[0011]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述CPLD接收所述控制裝置發(fā)送的第一信令完成對(duì)扣板側(cè)的Flash的擦除操作的方法包括:
[0012]所述CPLD對(duì)所述第一信令進(jìn)行解析,以獲得所述擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù);
[0013]所述CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
[0014]在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào)的方法包括:
[0015]所述CPLD接收來自所述控制裝置的第二信令,所述第二信令為所述控制裝置響應(yīng)于所述第一反饋信息而生成的;
[0016]所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令;
[0017]所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令;
[0018]所述CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而獲得所述I2C信號(hào)。
[0019]在第一方面的第三種可能的實(shí)現(xiàn)方式中,在所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash之前,所述方法還包括:
[0020]所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理;
[0021]相應(yīng)的,所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash包括:
[0022]所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0023]在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述CPLD按照local bus協(xié)議,并使用local bus時(shí)序向所述扣板側(cè)的Flash發(fā)送所述升級(jí)文件,發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0024]第二方面,本發(fā)明實(shí)施例提供一種Flash在線升級(jí)的方法,包括:
[0025]所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD,以使得所述CPLD響應(yīng)于自身發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的;
[0026]所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD,以使得所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù),其中,所述I2C信號(hào)為自身將所述預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
[0027]在第二方面的第一種可能的實(shí)現(xiàn)方式中,在所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD之后,還包括:
[0028]所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第一反饋信息,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
[0029]結(jié)合第二方面以及第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD的方法包括:
[0030]所述控制裝置通過所述I2C總線發(fā)送第二信令至所述CPLD,以使得所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令,其中,所述第二信令為自身響應(yīng)于所述第一反饋信息而生成的;
[0031]所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第二反饋信息,所述第二反饋信息用于指示CPLD已獲得所述寫入指令;
[0032]根據(jù)所述第二反饋信息,所述控制裝置通過所述I2C總線發(fā)送所述I2C信號(hào)至所述CPLD,以使得所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,并發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0033]在第二方面的第四種可能的實(shí)現(xiàn)方式中,在所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD之前,還包括:
[0034]所述控制裝置獲取主板側(cè)的Flash中的所述預(yù)置的升級(jí)文件,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。
[0035]第三方面,本發(fā)明的實(shí)施例提供一種CPLD,包括:
[0036]第一接收單元,用于所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除;
[0037]第一獲取單元,用于所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;以及所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;
[0038]處理單元,用于所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
[0039]在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述處理單元,用于所述CPLD對(duì)所述第一信令進(jìn)行解析,以獲得所述擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù);以及所述CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
[0040]在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述第一接收單元,用于所述CPLD接收來自所述控制裝置的第二信令,所述第二信令為所述控制裝置響應(yīng)于所述第一反饋信息而生成的;以及所述CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而獲得所述I2C信號(hào);
[0041]所述處理單元,用于所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令;以及所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。
[0042]在第三方面的第三種可能的實(shí)現(xiàn)方式中,所述處理單元,用于所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理;以及所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0043]在第三方面的第四種可能的實(shí)現(xiàn)方式中,所述CPLD按照local bus協(xié)議,并使用local bus時(shí)序向所述扣板側(cè)的Flash發(fā)送所述升級(jí)文件,發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0044]第四方面,本發(fā)明的實(shí)施例提供一種控制裝置,包括:
[0045]第一發(fā)送單元,用于所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD,以使得所述CPLD響應(yīng)于自身發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的;以及所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD,以使得所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù),其中,所述I2C信號(hào)為自身將所述預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
[0046]在第四方面的第一種可能的實(shí)現(xiàn)方式中,還包括:
[0047]第二接收單元,用于所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第一反饋信息,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
[0048]結(jié)合前述的第四方面以及第四方面的第一種可能的實(shí)現(xiàn)方式,在第四方面的第二種可能的實(shí)現(xiàn)方式中,所述第一發(fā)送單元,用于所述控制裝置通過所述I2C總線發(fā)送第二信令至所述CPLD,以使得所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令,其中,所述第二信令為自身響應(yīng)于所述第一反饋信息而生成的;
[0049]所述第二接收單元,用于所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第二反饋信息,所述第二反饋信息用于指示CPLD已獲得所述寫入指令;
[0050]所述第一發(fā)送單元,用于根據(jù)所述第二反饋信息,所述控制裝置通過所述I2C總線發(fā)送所述I2C信號(hào)至所述CPLD,以使得所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,并發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0051]在第四方面的第三種可能的實(shí)現(xiàn)方式中,還包括:
[0052]第二獲取單元,用于所述控制裝置獲取主板側(cè)的Flash中的所述預(yù)置的升級(jí)文件,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。
[0053]在第四方面的第四種可能的實(shí)現(xiàn)方式中,所述控制裝置包括CPU和FPGA(Field —Programmable Gate Array,即現(xiàn)場(chǎng)可編程門陣列)。
[0054]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法及裝置,控制裝置與CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,通過所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除;所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。所述方案通過I2C總線進(jìn)行控制裝置與CPLD的數(shù)據(jù)交互,得到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,不僅合理分擔(dān)控制裝置的負(fù)載,同時(shí)減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
【專利附圖】
【附圖說明】
[0055]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0056]圖1為本發(fā)明的實(shí)施例一提供的一種Flash在線升級(jí)的方法的流程圖;
[0057]圖2為本發(fā)明的實(shí)施例一提供的一種Flash在線升級(jí)的方法的流程圖;
[0058]圖3為利用鎖存器373對(duì)Local Bus總線數(shù)據(jù)/地址解復(fù)用原理圖;
[0059]圖4為本發(fā)明的實(shí)施例二提供的一種Flash在線升級(jí)的方法的流程圖;
[0060]圖5為I2C總線一次完整的數(shù)據(jù)傳輸時(shí)序圖;
[0061]圖6為CPLD的初始化的具體狀態(tài)轉(zhuǎn)化過程示意圖;
[0062]圖7為某種FLASH器件使用Local Bus總線的讀時(shí)序;
[0063]圖8為某種FLASH器件使用Local Bus總線的寫時(shí)序;
[0064]圖9為控制裝置使用I2C總線的寫時(shí)序示意圖;
[0065]圖10為控制裝置使用I2C總線的讀時(shí)序示意圖;
[0066]圖11為本發(fā)明的實(shí)施例三提供的一種CPLD的結(jié)構(gòu)示意圖;
[0067]圖12為本發(fā)明的實(shí)施例四提供的一種控制裝置的結(jié)構(gòu)示意圖一;
[0068]圖13為本發(fā)明的實(shí)施例四提供的一種控制裝置的結(jié)構(gòu)示意圖二 ;
[0069]圖14為本發(fā)明的實(shí)施例四提供的一種控制裝置的結(jié)構(gòu)示意圖三;
[0070]圖15為本發(fā)明的實(shí)施例五提供的一種CPLD的結(jié)構(gòu)示意圖;
[0071]圖16為本發(fā)明的實(shí)施例六提供的一種控制裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0072]以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對(duì)眾所周知的裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
[0073]需要說明的是,本發(fā)明實(shí)施例中所提到的本領(lǐng)域技術(shù)人員,為假定他知曉申請(qǐng)日或者 優(yōu)先權(quán)日:之前發(fā)明(或者實(shí)用新型)所屬【技術(shù)領(lǐng)域】所有的普通技術(shù)知識(shí),能夠獲知該領(lǐng)域中所有的現(xiàn)有技術(shù),并且具有應(yīng)用該日期之前常規(guī)實(shí)驗(yàn)的手段和能力,但他不具有創(chuàng)造能力。如果所要解決的技術(shù)問題能夠促使本領(lǐng)域的技術(shù)人員在其他【技術(shù)領(lǐng)域】尋找技術(shù)手段,他也應(yīng)具有從該其他【技術(shù)領(lǐng)域】中獲知該申請(qǐng)日或 優(yōu)先權(quán)日:之前的相關(guān)現(xiàn)有技術(shù)、普通技術(shù)知識(shí)和常規(guī)實(shí)驗(yàn)手段的能力。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
[0074]實(shí)施例一
[0075]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,如圖1所示,包括:
[0076]101、CPLD接收控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至控制裝置。
[0077]其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
[0078]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,引入新裝置CPLD并在控制裝置與CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,該方法通過I2C總線進(jìn)行控制裝置與CPLD的數(shù)據(jù)交互,得對(duì)到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,不僅合理分擔(dān)控制裝置的負(fù)載,同時(shí)減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
[0079]其中,所述I2C協(xié)議的I2C總線包括一條串行數(shù)據(jù)線SDA和一條串行時(shí)鐘線SCL,用于連接微控制裝置及其外圍設(shè)備,是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高的優(yōu)點(diǎn)。I2C總線通過串行數(shù)據(jù)(SDA)線和串行時(shí)鐘(SCL)線在連接到總線的器件間傳遞信息。每個(gè)器件都有一個(gè)唯一的地址識(shí)別(無論是微控制裝置一MCU、IXD驅(qū)動(dòng)器、存儲(chǔ)器或鍵盤接口),而且都可以作為一個(gè)發(fā)送器或接收器(由器件的功能決定),這就使得數(shù)據(jù)在交互時(shí)可以減少信號(hào)和引腳的使用。
[0080]所述CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。CPLD主要是由可編程邏輯宏單元(MC,Macro Cell)圍繞中心的可編程互連矩陣單元組成。其中MC結(jié)構(gòu)較復(fù)雜,并具有復(fù)雜的I/O單元互連結(jié)構(gòu),可由用戶根據(jù)需要生成特定的電路結(jié)構(gòu),完成一定的功能。由于CPLD內(nèi)部采用固定長(zhǎng)度的金屬線進(jìn)行各邏輯塊的互連,所以設(shè)計(jì)的邏輯電路具有時(shí)間可預(yù)測(cè)性,避免了分段式互連結(jié)構(gòu)時(shí)序不完全預(yù)測(cè)的缺點(diǎn)。CPLD基本設(shè)計(jì)方法是借助集成開發(fā)軟件平臺(tái),用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。在本發(fā)明的實(shí)施例中,本領(lǐng)域的技術(shù)人員根據(jù)I2C總線的特點(diǎn),針對(duì)實(shí)現(xiàn)扣板側(cè)Flash的擦除和寫入需要編寫新的代碼至CPLD中。
[0081]具體的,當(dāng)控制裝置響應(yīng)于用戶的操作需要對(duì)扣板側(cè)的Flash進(jìn)行更新時(shí),可以分為兩個(gè)過程,首先是將扣板側(cè)的Flash內(nèi)原有的數(shù)據(jù)進(jìn)行清除,然后就是獲取新的數(shù)據(jù)并將新數(shù)據(jù)寫入扣板側(cè)的Flash內(nèi)。
[0082]例如,家用電腦向用戶提示是否安裝對(duì)扣板側(cè)的Flash的升級(jí)數(shù)據(jù)包,用戶執(zhí)行同意升級(jí)的按鍵操作后,控制裝置獲得所述第一信令,然后控制裝置將所述第一信令發(fā)送給CPLD得到擦除命令,CPLD對(duì)所述擦除地進(jìn)行解析后進(jìn)入擦出狀態(tài),進(jìn)而完成后續(xù)的升級(jí)工作。
[0083]102、CPLD獲取控制裝置通過I2C總線發(fā)送的I2C信號(hào)。
[0084]其中,所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
[0085]具體的,CPLD接收控制裝置發(fā)送的第一信令之后,對(duì)所述第一信令進(jìn)行解析,以獲得所述擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù),進(jìn)而CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。當(dāng)所述扣板側(cè)的Flash擦除原有數(shù)據(jù)之后,基于I2C協(xié)議的規(guī)定扣板側(cè)的Flash發(fā)送第一反饋信息至CPLD,CPLD又將所述第一反饋信息發(fā)送至所述控制裝置,告知控制裝置所述扣板側(cè)的Flash已完成擦除,此時(shí)控制裝置發(fā)送第二信令,所述第二信令為所述控制裝置響應(yīng)于所述第一反饋信息而生成的,CPLD接收到所述第二信令后對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令,基于I2C協(xié)議的規(guī)定所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令,當(dāng)所述控制裝置接收到第二反饋信息后發(fā)送所述I2C信號(hào)至CPLD,以使得CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而完成扣板側(cè)的Flash對(duì)新數(shù)據(jù)的寫入。[0086]進(jìn)一步地,可使用I2C總線技術(shù)完成本發(fā)明的方案,即在原有I2C總線狀態(tài)機(jī)的基礎(chǔ)上,可以根據(jù)I2C協(xié)議規(guī)則重新增加了兩個(gè)狀態(tài)機(jī),分別是I2C erase flash和I2Cupgrade flash用于所述CPLD完成扣板側(cè)的Flash的擦除和寫入。對(duì)應(yīng)的,所述CPLD在完成I2C erase flash和I2C upgrade flash兩個(gè)狀態(tài)機(jī)時(shí),需要本領(lǐng)域技術(shù)人員編寫相應(yīng)的代碼。另外,關(guān)于I2C狀態(tài)機(jī)的實(shí)現(xiàn)將在下一實(shí)施例中詳細(xì)闡述,故此處不再贅述。
[0087]可選的,以下為CPLD在完成I2C erase flash和I2C upgrade flash兩個(gè)狀態(tài)機(jī)時(shí)代碼設(shè)計(jì)的一種可以實(shí)現(xiàn)的方案。首先,為了區(qū)別于普通的I2C的讀寫操作,新代碼針對(duì)Flash的擦除和寫入操作分別定義了對(duì)應(yīng)的兩個(gè)從地址(slave address),當(dāng)CPLD解析出的所述第一信令為擦除地址時(shí),獲得擦除指令,同時(shí)CPLD的狀態(tài)機(jī)進(jìn)入到擦除狀態(tài)(I2Cerase flash),通過Local Bus向扣板側(cè)的Flash發(fā)送所述擦除命令;當(dāng)CPLD解析出的所述第二信令為寫入地址時(shí),獲得寫入指令,CPLD的狀態(tài)機(jī)進(jìn)入到寫入狀態(tài)(I2C upgradeflash),然后通過I2C總線獲取其中I2C信號(hào)中的升級(jí)文件進(jìn)行串轉(zhuǎn)并處理,按照Local Bus的時(shí)序在發(fā)出寫命令之后向扣板側(cè)的Flash寫入并行數(shù)據(jù),直到整個(gè)文件都升級(jí)完畢。
[0088]具體的,狀態(tài)機(jī)(finite-state machine, FSM)又稱有限狀態(tài)自動(dòng)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。在計(jì)算機(jī)科學(xué)中,有限狀態(tài)機(jī)被廣泛用于建模應(yīng)用行為、硬件電路系統(tǒng)設(shè)計(jì)、軟件工程,編譯器、網(wǎng)絡(luò)協(xié)議、和計(jì)算與語言的研究,它把復(fù)雜的控制邏輯分解成有限個(gè)穩(wěn)定狀態(tài),在每個(gè)狀態(tài)上判斷事件,變連續(xù)處理為離散數(shù)字處理,符合計(jì)算機(jī)的工作特點(diǎn)。狀態(tài)機(jī)可歸納為4個(gè)要素,即現(xiàn)態(tài)、條件、動(dòng)作、次態(tài),所述現(xiàn)態(tài)是指當(dāng)前所處的狀態(tài)。所述條件:又稱為“事件”,當(dāng)一個(gè)條件被滿足,將會(huì)觸發(fā)一個(gè)動(dòng)作,或者執(zhí)行一次狀態(tài)的遷移。所述動(dòng)作:條件滿足后執(zhí)行的動(dòng)作。動(dòng)作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動(dòng)作不是必需的,當(dāng)條件滿足后,也可以不執(zhí)行任何動(dòng)作,直接遷移到新狀態(tài)。所述次態(tài):條件滿足后要遷往的新狀態(tài)?!按螒B(tài)”是相對(duì)于“現(xiàn)態(tài)”而言的,“次態(tài)” 一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”了。本發(fā)明實(shí)施例中使用I2C總線技術(shù)涉及I2C erase flash和I2C upgrade flash兩個(gè)狀態(tài)機(jī)以使得所述CPLD完成扣板側(cè)的Flash擦除或?qū)懭腩A(yù)置的升級(jí)文件中的數(shù)據(jù),其中具體方法將在下一實(shí)施例中詳細(xì)闡述,故此處不再贅述。
[0089]103、CPLD獲取I2C信號(hào)中的預(yù)置的升級(jí)文件。
[0090]其中,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。具體的,在用戶觸發(fā)扣板側(cè)的Flash的升級(jí)操作以后,控制裝置將所述預(yù)置的升級(jí)文件通過管理網(wǎng)口上傳到主板側(cè)的Flash中,控制裝置通過local bus總線抓取文件并內(nèi)嵌至I2C信號(hào)中,最終CPLD通過I2C總線獲得I2C信號(hào)中的預(yù)置的升級(jí)文件。
[0091]進(jìn)一步地,CPLD獲取I2C信號(hào)后,對(duì)所述I2C信號(hào)進(jìn)行解析,當(dāng)CPLD解析出的所述第一信令為擦除地址時(shí),獲得擦除指令,同時(shí)CPLD的狀態(tài)機(jī)進(jìn)入到擦除狀態(tài)(I2C eraseflash),通過Local Bus向扣板側(cè)的Flash發(fā)送所述擦除命令;當(dāng)CPLD解析出的所述第二信令為寫入地址時(shí),獲得寫入指令,CPLD的狀態(tài)機(jī)進(jìn)入到寫入狀態(tài)(I2C upgrade flash),然后通過I2C總線獲取其中I2C信號(hào)中的升級(jí)文件進(jìn)行串轉(zhuǎn)并處理,按照Local Bus的時(shí)序在發(fā)出寫命令之后向扣板側(cè)的Flash寫入并行數(shù)據(jù),直到整個(gè)文件都升級(jí)完畢
[0092]可選的,所述CPLD對(duì)升級(jí)文件進(jìn)行串轉(zhuǎn)并處理的方法可以為,在CPLD內(nèi)部寫一個(gè)串轉(zhuǎn)并的模塊(例如一個(gè)16位的移位寄存器),當(dāng)16位數(shù)據(jù)都接收到后一次輸出至扣板側(cè)的 Flash。
[0093]104、CPLD發(fā)送預(yù)置的升級(jí)文件至扣板側(cè)的Flash,以使扣板側(cè)的Flash寫入預(yù)置的升級(jí)文件中的數(shù)據(jù)。
[0094]具體的,在CPLD獲取I2C信號(hào)中的預(yù)置的升級(jí)文件后,CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,進(jìn)而所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
[0095]進(jìn)一步地,若控制裝置和所要在線升級(jí)的Flash之間應(yīng)用于跨背板、走線超長(zhǎng)的場(chǎng)景時(shí),由于I2C的走線長(zhǎng)度限制較小,而Local Bus走線長(zhǎng)度受限,跨背板操作可能導(dǎo)致信號(hào)完整性喪失的問題。所述背板支撐其他電路板、器件和器件之間的相互連接,并為所支撐的器件提供電源和數(shù)據(jù)信號(hào)的電路板或框架。進(jìn)而使用本技術(shù)發(fā)明可以極大地加長(zhǎng)控制裝置和Flash之間的走線長(zhǎng)度,實(shí)現(xiàn)控制裝置和Flash在背板之間的信號(hào)傳輸。
[0096]至此,CPLD通過使用I2C總線與控制裝置進(jìn)行交互得到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
[0097]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,如圖2所示,包括:
[0098]201、控制裝置通過I2C總線發(fā)送第一信令至CPLD。
[0099]其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的。另夕卜,所述用戶輸入的升級(jí)操作指令可以為針對(duì)Flash升級(jí)提示生成的,也可以是用戶在進(jìn)行其他操作的過程中間接觸發(fā)的,例如用戶在選擇觀看視頻節(jié)目時(shí)默認(rèn)對(duì)扣板側(cè)的Flash進(jìn)行更新操作。
[0100]本發(fā)明實(shí)施例提供的一種Flash在線升級(jí)的方法,引入CPLD并通過I2C技術(shù)實(shí)現(xiàn)控制裝置與扣板側(cè)Flash的數(shù)據(jù)交互,進(jìn)而完成扣板側(cè)的Flash的升級(jí)指令。為了實(shí)現(xiàn)上述方法,首先所述控制裝置通過I2C總線發(fā)送第一信令至所述CPLD。
[0101]例如,家用電腦向用戶提示是否安裝對(duì)扣板側(cè)的Flash的升級(jí)數(shù)據(jù)包,所述控制裝置接收到來自用戶執(zhí)行同意升級(jí)的按鍵操作后,發(fā)送第一信令至所述CPLD,以使得CPLD進(jìn)行解析得到擦除命令,CPLD對(duì)所述擦除地進(jìn)行解析后進(jìn)入擦出狀態(tài),進(jìn)而完成后續(xù)的升級(jí)工作。
[0102]當(dāng)控制裝置通過I2C總線發(fā)送第一信令后,所述CPLD完成對(duì)所述第一信令的解析使得扣板側(cè)的Flash獲得擦除命令,進(jìn)而對(duì)原有扣板側(cè)的Flash的數(shù)據(jù)的擦除操作,此時(shí)控制裝置接收來自所述CPLD的第一反饋信息,用于指示所述扣板側(cè)的Flash獲得擦除命令已經(jīng)完成,所述CPLD已經(jīng)準(zhǔn)備好進(jìn)行進(jìn)下一步的寫入程序,進(jìn)而完成后續(xù)的升級(jí)工作。
[0103]在控制裝置接收來自所述CPLD的第一反饋信息之后,所述控制裝置根據(jù)所述第一反饋信息獲悉所述扣板側(cè)的Flash已經(jīng)完成擦除命令,可以啟動(dòng)下一步的寫入程序,此時(shí)控制裝置發(fā)送第二信令,以使得所述CPLD對(duì)第二信令進(jìn)行解析獲得寫入指令,進(jìn)而完成后續(xù)的升級(jí)工作。
[0104]在現(xiàn)有技術(shù)中,控制裝置向所述扣板側(cè)的Flash進(jìn)行升級(jí)操作時(shí),使用Local bus總線并采用數(shù)據(jù)/地址線復(fù)用的形式,通常為32位寬,使用時(shí)需要將總線的數(shù)據(jù)和地址分離出來再分別接到目標(biāo)器件的數(shù)據(jù)和地址端口,其中,利用鎖存器373對(duì)Local bus總線數(shù)據(jù)/地址解復(fù)用原理如圖3所示,其中,L_ALE是地址鎖存信號(hào),低電平有效,當(dāng)L_ALE出現(xiàn)一個(gè)低電平脈沖時(shí),鎖存器的輸入端口對(duì)LAD[31:0]信號(hào)進(jìn)行米樣、鎖存并從輸出端口輸出,直到下一個(gè)L_ALE低電平脈沖到來時(shí),其輸出狀態(tài)才發(fā)生改變,Local bus總線在輸出地址信號(hào)時(shí)將L_ALE信號(hào)驅(qū)動(dòng)為低電平,輸出數(shù)據(jù)信號(hào)時(shí),將L_ALE驅(qū)動(dòng)為高電平,鎖存器正式利用這個(gè)特點(diǎn)輕松實(shí)現(xiàn)Local bus總線上數(shù)據(jù)和地址的分離。
[0105]202、控制裝置通過I2C總線發(fā)送I2C信號(hào)至CPLD。
[0106]其中,所述I2C信號(hào)為所述控制裝置自身將所述預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
[0107]具體的,在控制裝置根據(jù)所述第一反饋信息發(fā)送第二信令之后,所述CPLD對(duì)所述第二信令進(jìn)行解析,獲得寫入指令。為了使所述控制裝置及時(shí)將升級(jí)文件發(fā)送至所述CPLD完成升級(jí)數(shù)據(jù)的寫入,所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。相應(yīng)的,當(dāng)所述控制裝置收到所述第二反饋信息后,向所述CPLD發(fā)送I2C信號(hào),以使得所述CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而獲得所述I2C信號(hào)。
[0108]在控制裝置接收來自所述CPLD的第二反饋信息之后,所述控制裝置獲悉扣板側(cè)的Flash已經(jīng)完成擦除命令,可以啟動(dòng)寫入程序?qū)郯鍌?cè)的Flash進(jìn)行升級(jí)數(shù)據(jù)的寫入。此時(shí),控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線,以生成I2C信號(hào)。
[0109]其中,所述預(yù)置的升級(jí)文件為用戶在進(jìn)行升級(jí)操作時(shí)將升級(jí)文件通過管理網(wǎng)口上傳至主板側(cè)的Flash中,然后所述控制裝置主動(dòng)抓取獲得的,再由所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成I2C信號(hào)發(fā)送至所述CPLD。
[0110]進(jìn)一步地,在控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線,以生成I2C信號(hào)發(fā)送至所述CPLD之后,所述CPLD對(duì)所述預(yù)置的升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,然后將串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件發(fā)送至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
[0111]需要說明的是,CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash是按照local bus協(xié)議,使用local bus時(shí)序向扣板側(cè)的Flash發(fā)送所述升級(jí)文件。其中,使用local bus時(shí)序向扣板側(cè)的Flash發(fā)送所述升級(jí)文件的方法將在下一實(shí)施例中詳細(xì)闡述,故此處不再贅述。
[0112]另外,所述控制裝置包括有CPU和FPGA。所述CPU即中央處理器,中央處理器是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心和控制核心。主要包括運(yùn)算器(ALU)和控制器(CU)兩大部件。此外,還包括若干個(gè)寄存器和高速緩沖存儲(chǔ)器及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)、控制及狀態(tài)的總線。它與內(nèi)部存儲(chǔ)器和輸入/輸出設(shè)備合稱為電子計(jì)算機(jī)三大核心部件。所述FPGA (Field — Programmable Gate Array,即現(xiàn)場(chǎng)可編程門陣列)是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA采用了邏輯單元陣列LCA (Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLEKConfigurable Logic Block)、輸入輸出模塊IOB (Input OutputBlock)和內(nèi)部連線(Interconnect)三個(gè)部分。現(xiàn)場(chǎng)可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如PAL, GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16X 1RAM)來實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)1/0,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了 FPGA所能實(shí)現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。
[0113]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,控制裝置與CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,通過所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除;所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。所述方案通過I2C總線進(jìn)行控制裝置與CPLD的數(shù)據(jù)交互,得到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,不僅合理分擔(dān)控制裝置的負(fù)載,同時(shí)減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
[0114]實(shí)施例二
[0115]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,如圖4所示,包括:
[0116]301、控制裝置通過I2C總線發(fā)送第一信令。
[0117]其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的。另夕卜,所述用戶輸入的升級(jí)操作指令可以為針對(duì)Flash升級(jí)提示生成的,也可以是用戶在進(jìn)行其他操作的過程中間接觸發(fā)的,例如用戶在選擇觀看視頻節(jié)目時(shí)默認(rèn)對(duì)扣板側(cè)的Flash進(jìn)行更新操作。
[0118]本發(fā)明的實(shí)施例提供一種Flash在線升級(jí)的方法,引入新裝置CPLD并在控制裝置與CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,該方法通過I2C總線進(jìn)行控制裝置與CPLD的數(shù)據(jù)交互,得對(duì)到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,不僅合理分擔(dān)控制裝置的負(fù)載,同時(shí)減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
[0119]其中,所述I2C總線包括一條串行數(shù)據(jù)線SDA和一條串行時(shí)鐘線SCL,用于連接微控制裝置及其外圍設(shè)備,是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高的優(yōu)點(diǎn)。I2C總線通過串行數(shù)據(jù)(SDA)線和串行時(shí)鐘(SCL)線在連接到總線的器件間傳遞信息。每個(gè)器件都有一個(gè)唯一的地址識(shí)別(無論是微控制裝置一MCU、LCD驅(qū)動(dòng)器、存儲(chǔ)器或鍵盤接口),而且都可以作為一個(gè)發(fā)送器或接收器(由器件的功能決定),這就使得數(shù)據(jù)在交互時(shí)可以減少信號(hào)和引腳的使用。[0120]另外,CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。CPLD主要是由可編程邏輯宏單元(MC,Macro Cell)圍繞中心的可編程互連矩陣單元組成。其中MC結(jié)構(gòu)較復(fù)雜,并具有復(fù)雜的I/O單元互連結(jié)構(gòu),可由用戶根據(jù)需要生成特定的電路結(jié)構(gòu),完成一定的功能。由于CPLD內(nèi)部采用固定長(zhǎng)度的金屬線進(jìn)行各邏輯塊的互連,所以設(shè)計(jì)的邏輯電路具有時(shí)間可預(yù)測(cè)性,避免了分段式互連結(jié)構(gòu)時(shí)序不完全預(yù)測(cè)的缺點(diǎn)。CPLD基本設(shè)計(jì)方法是借助集成開發(fā)軟件平臺(tái),用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。在本發(fā)明的實(shí)施例中,本領(lǐng)域的技術(shù)人員根據(jù)I2C總線的特點(diǎn),針對(duì)實(shí)現(xiàn)扣板側(cè)Flash的擦除和寫入需要編寫新的代碼至CPLD中。
[0121]302、CPLD對(duì)所述第一信令進(jìn)行解析獲得擦除命令。
[0122]具體的,在控制裝置通過I2C總線發(fā)送第一信令之后,CPLD對(duì)所述第一信令進(jìn)行解析,得到擦除命令進(jìn)而完成后續(xù)扣板側(cè)Flash的升級(jí)工作。例如,家用電腦向用戶提示是否安裝對(duì)扣板側(cè)的Flash的升級(jí)數(shù)據(jù)包,所述控制裝置接收到來自用戶執(zhí)行同意升級(jí)的按鍵操作后,發(fā)送第一信令至所述CPLD,然后CPLD對(duì)所述第一信令進(jìn)行解析得到擦除命令,并進(jìn)入擦出狀態(tài),進(jìn)而完成后續(xù)的升級(jí)工作。
[0123]303、CPLD根據(jù)所述第一信令獲取擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù)。
[0124]本發(fā)明實(shí)施例提供的一種Flash在線升級(jí)的方法,引入CPLD并通過I2C技術(shù)實(shí)現(xiàn)控制裝置與扣板側(cè)Flash的數(shù)據(jù)交互,進(jìn)而完成扣板側(cè)的Flash的升級(jí)指令。為了實(shí)現(xiàn)上述方法,首先所述CPLD會(huì)獲取來自控制裝置的第一信令,所述第一信令指示CPLD需要完成扣板側(cè)Flash的擦除任務(wù),然后CPLD根據(jù)所得到的第一信令進(jìn)行解析判斷得到所述擦除命令,所述CPLD根據(jù)得到的擦除命令進(jìn)一步進(jìn)行地址轉(zhuǎn)換,進(jìn)而啟動(dòng)擦除狀態(tài)。
[0125]其中,所述擦除狀態(tài)為本發(fā)明實(shí)施例中的I2C協(xié)議下的一種狀態(tài)機(jī),本發(fā)明實(shí)施例中的I2C狀態(tài)機(jī)共有9個(gè),其中有7個(gè)是原有I2C協(xié)議下規(guī)定的,另外新增加兩個(gè)狀態(tài)機(jī)分別是I2C erase flash和I2C upgrade flash用于所述CPLD完成扣板側(cè)的Flash的擦除和寫入。
[0126]具體的,狀態(tài)機(jī)(finite-state machine, FSM)又稱有限狀態(tài)自動(dòng)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型。在計(jì)算機(jī)科學(xué)中,有限狀態(tài)機(jī)被廣泛用于建模應(yīng)用行為、硬件電路系統(tǒng)設(shè)計(jì)、軟件工程,編譯器、網(wǎng)絡(luò)協(xié)議、和計(jì)算與語言的研究,它把復(fù)雜的控制邏輯分解成有限個(gè)穩(wěn)定狀態(tài),在每個(gè)狀態(tài)上判斷事件,變連續(xù)處理為離散數(shù)字處理,符合計(jì)算機(jī)的工作特點(diǎn)。狀態(tài)機(jī)可歸納為4個(gè)要素,即現(xiàn)態(tài)、條件、動(dòng)作、次態(tài),所述現(xiàn)態(tài)是指當(dāng)前所處的狀態(tài)。所述條件:又稱為“事件”,當(dāng)一個(gè)條件被滿足,將會(huì)觸發(fā)一個(gè)動(dòng)作,或者執(zhí)行一次狀態(tài)的遷移。所述動(dòng)作:條件滿足后執(zhí)行的動(dòng)作。動(dòng)作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動(dòng)作不是必需的,當(dāng)條件滿足后,也可以不執(zhí)行任何動(dòng)作,直接遷移到新狀態(tài)。所述次態(tài):條件滿足后要遷往的新狀態(tài)。“次態(tài)”是相對(duì)于“現(xiàn)態(tài)”而言的,“次態(tài)” 一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)” 了。
[0127]示例性的,如圖5所示,為I2C總線一次完整的數(shù)據(jù)傳輸時(shí)序圖,其中I至7為地址位;8為讀/寫位;9為應(yīng)答位,可以將整個(gè)過程分為五個(gè)狀態(tài):1.起始;2.寫入(O或I);
3.應(yīng)答;4.暫停;5.結(jié)束。其中,在I2C總線上,每一個(gè)數(shù)據(jù)中,邏輯“O”和邏輯“I”的信號(hào)電平取決于相應(yīng)的正端電壓。I2C總線在進(jìn)行傳送時(shí),在時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線(SAD)上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線(SCL)上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。這就保持了數(shù)據(jù)傳輸?shù)挠行?。另外,在I2C總線上,比特位傳送字節(jié)的后面都必須跟隨一位確認(rèn)位,或稱跟隨一位應(yīng)答位,并且數(shù)據(jù)是以最高有效位首先發(fā)出。以CPLD的初始化狀態(tài)機(jī)為例,整個(gè)初始化的具體狀態(tài)轉(zhuǎn)化過程如圖6所示。
[0128]304、CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
[0129]具體的,所述CPLD獲得擦除命令后,進(jìn)行解析使CPLD進(jìn)入擦除狀態(tài),調(diào)用CPLD內(nèi)預(yù)置的Flash擦除程序的程序代碼,向扣板側(cè)的Flash發(fā)送擦除命令以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
[0130]進(jìn)一步地,所述CPLD獲取來自控制裝置的擦除命令是通過I2C總線發(fā)送的,所述I2C總線具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高的優(yōu)點(diǎn)。本發(fā)明的方案在現(xiàn)有的I2C總線的基礎(chǔ)上,增加Flash擦除程序和Flash寫入程序的代碼預(yù)置在所述CPLD內(nèi),當(dāng)所述CPLD獲取擦除命令時(shí),進(jìn)入擦除狀態(tài),并調(diào)用CPLD內(nèi)預(yù)置的Flash擦除程序的程序代碼以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù);當(dāng)所述CPLD獲取寫入命令時(shí),進(jìn)入寫入狀態(tài),并調(diào)用CPLD內(nèi)預(yù)置的Flash寫入程序的程序代碼以使所述扣板側(cè)的Flash寫入新數(shù)據(jù)完成升級(jí)操作。
[0131]又進(jìn)一步地,可使用I2C總線技術(shù)完成本發(fā)明的方案,即在原有I2C總線狀態(tài)機(jī)的基礎(chǔ)上,可以根據(jù)I2C協(xié)議規(guī)則重新增加了兩個(gè)狀態(tài)機(jī),分別是I2C erase flash和I2Cupgrade flash用于所述CPLD完成扣板側(cè)的Flash的擦除和寫入。對(duì)應(yīng)的,所述CPLD在完成I2C erase flash和I2C upgrade flash兩個(gè)狀態(tài)機(jī)時(shí),需要本領(lǐng)域技術(shù)人員編寫相應(yīng)的代碼。
[0132]可選的,以下為CPLD在完成I2C erase flash和I2C upgrade flash兩個(gè)狀態(tài)機(jī)時(shí)進(jìn)行代碼設(shè)計(jì)的一種可以實(shí)現(xiàn)的方案。首先,為了區(qū)別于普通的I2C的讀寫操作,新代碼針對(duì)Flash的擦除和寫入操作分別定義了對(duì)應(yīng)的兩個(gè)從地址(slave address),當(dāng)CPLD解析出的所述第一信令為擦除地址時(shí),獲得擦除指令,同時(shí)CPLD的狀態(tài)機(jī)進(jìn)入到擦除狀態(tài)(I2Cerase flash),通過Local Bus向扣板側(cè)的Flash發(fā)送所述擦除命令;當(dāng)CPLD解析出的所述第二信令為寫入地址時(shí),獲得寫入指令,CPLD的狀態(tài)機(jī)進(jìn)入到寫入狀態(tài)(I2C upgradeflash),然后通過I2C總線獲取其中I2C信號(hào)中的升級(jí)文件進(jìn)行串轉(zhuǎn)并處理,按照Local Bus的時(shí)序在發(fā)出寫命令之后向扣板側(cè)的Flash寫入并行數(shù)據(jù),直到整個(gè)文件都升級(jí)完畢。
[0133]305XPLD接收來自所述扣板側(cè)的Flash的第一反饋信息,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
[0134]具體的,當(dāng)CPLD發(fā)送所述擦除命令至扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)后,所述扣板側(cè)的Flash將已完成擦除命令的信息反饋給所述CPLD,并將這一
反饋信息定義為第一反饋信息。
[0135]306XPLD發(fā)送所述第一反饋信息至所述控制裝置,以使得控制裝置接收來自所述CPLD的第一反饋信息。
[0136]所述第一反饋信息為所述CPLD發(fā)送擦除命令至扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù),所述CPLD接收來自所述扣板側(cè)的Flash的第一反饋消息后發(fā)送的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
[0137]具體的,當(dāng)所述CPLD接收來自所述扣板側(cè)的Flash的第一反饋信息后,又將所述第一反饋信息發(fā)送給所述控制裝置,通知所述控制裝置扣板側(cè)的Flash已完成擦除命令。
[0138]例如,在用戶進(jìn)行扣板側(cè)的Flash的更新任務(wù)時(shí),需要先對(duì)原有扣板側(cè)的Flash的數(shù)據(jù)進(jìn)行擦除,然后才能將新的升級(jí)數(shù)據(jù)寫入扣板側(cè)的Flash中。當(dāng)扣板側(cè)的Flash已經(jīng)完成擦除命令后,需要將這一信息作為第一反饋信息逐級(jí)反饋給所述控制裝置,以使得所述控制裝置獲悉扣板側(cè)的Flash已經(jīng)完成擦除命令,進(jìn)而通過I2C總線的發(fā)送的I2C信號(hào)完成后續(xù)的扣板側(cè)的Flash的升級(jí)操作。
[0139]307、控制裝置根據(jù)所述第一反饋信息發(fā)送第二信令,以使得所述CPLD對(duì)第二信令進(jìn)行解析獲得寫入指令。
[0140]具體的,在控制裝置接收來自所述CPLD的第一反饋信息之后,所述控制裝置根據(jù)所述第一反饋信息獲悉所述扣板側(cè)的Flash已經(jīng)完成擦除命令,可以啟動(dòng)下一步的寫入程序,此時(shí)控制裝置發(fā)送第二信令,以使得所述CPLD對(duì)第二信令進(jìn)行解析獲得寫入指令,進(jìn)而完成后續(xù)的升級(jí)工作。
[0141]進(jìn)一步地,所述CPLD對(duì)所述第二信令進(jìn)行解析,獲得寫入指令,為了使所述控制裝置及時(shí)將升級(jí)文件發(fā)送至所述CPLD完成升級(jí)數(shù)據(jù)的寫入,所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。相應(yīng)的,當(dāng)所述控制裝置收到所述第二反饋信息后,向所述CPLD發(fā)送I2C信號(hào),以使得所述CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而獲得所述I2C信號(hào)。
[0142]308XPLD對(duì)所述第二信令進(jìn)行解析獲得寫入指令,并生成第二反饋信息發(fā)送至所述控制裝置。
[0143]其中,所述第二反饋信息為所述CPLD完成對(duì)所述第二信令的解析獲得寫入指令后生成的,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。
[0144]進(jìn)一步地,所述CPLD對(duì)所述第二信令進(jìn)行解析,獲得寫入指令,為了使所述控制裝置及時(shí)將升級(jí)文件發(fā)送至所述CPLD完成升級(jí)數(shù)據(jù)的寫入,所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。
[0145]309、控制裝置接收來自所述CPLD的第二反饋信息,將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線,以生成I2C信號(hào)發(fā)送至所述CPLD。
[0146]其中,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。具體的,在用戶觸發(fā)扣板側(cè)的Flash的升級(jí)操作以后,控制裝置將所述預(yù)置的升級(jí)文件通過管理網(wǎng)口上傳到主板側(cè)的Flash中,控制裝置通過local bus總線抓取文件并內(nèi)嵌至I2C信號(hào)中,最終CPLD通過I2C總線獲得I2C信號(hào)中的預(yù)置的升級(jí)文件。
[0147]具體的,在控制裝置接收來自所述CPLD的第二反饋信息之后,所述控制裝置獲悉扣板側(cè)的Flash已經(jīng)完成擦除命令,可以啟動(dòng)寫入程序?qū)郯鍌?cè)的Flash進(jìn)行升級(jí)數(shù)據(jù)的寫入。此時(shí),控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線,以生成I2C信號(hào)。
[0148]進(jìn)一步地,CPLD獲取I2C信號(hào)后,對(duì)所述I2C信號(hào)進(jìn)行解析,當(dāng)CPLD解析出的所述第一信令為擦除地址時(shí),獲得擦除指令,同時(shí)CPLD的狀態(tài)機(jī)進(jìn)入到擦除狀態(tài)(I2C eraseflash),通過Local Bus向扣板側(cè)的Flash發(fā)送所述擦除命令;當(dāng)CPLD解析出的所述第二信令為寫入地址時(shí),獲得寫入指令,CPLD的狀態(tài)機(jī)進(jìn)入到寫入狀態(tài)(I2C upgrade flash),然后通過I2C總線獲取其中I2C信號(hào)中的升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,按照Local Bus的時(shí)序在發(fā)出寫命令之后向扣板側(cè)的Flash寫入并行數(shù)據(jù),直到整個(gè)文件都升級(jí)完畢
[0149]310、CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件。
[0150]具體的,由于所述CPLD在獲取寫入指令后需要將內(nèi)嵌至I2C總線中的升級(jí)文件寫入扣板側(cè)的Flash中,所述CPLD對(duì)I2C信號(hào)進(jìn)行處理,從中分離出所述預(yù)置的升級(jí)文件,以使得所述扣板側(cè)的Flash寫入所述升級(jí)文件中的數(shù)據(jù)。
[0151]可選的,所述CPLD對(duì)升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理的方法可以為,在CPLD內(nèi)部寫一個(gè)串行轉(zhuǎn)并行的模塊(例如一個(gè)16位的移位寄存器),當(dāng)16位數(shù)據(jù)都接收到后一次輸出至扣板側(cè)的Flash。
[0152]311、CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
[0153]具體的,在CPLD獲取I2C信號(hào)中的預(yù)置的升級(jí)文件后,CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,進(jìn)而所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。至此,CPLD通過使用I2C總線與控制裝置進(jìn)行交互得到升級(jí)數(shù)據(jù),進(jìn)而完成CPLD對(duì)扣板側(cè)的Flash的升級(jí)操作,減少了現(xiàn)有總線技術(shù)中使用Local Bus總線的信號(hào)過多導(dǎo)致系統(tǒng)資源開銷的增加問題,另外由于I2C走線長(zhǎng)度限制較小,解決了現(xiàn)有總線技術(shù)因走線過長(zhǎng)導(dǎo)致的信號(hào)完整性差的問題。
[0154]進(jìn)一步需要說明的是,所述發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash是按照local bus協(xié)議,使用local bus時(shí)序向扣板側(cè)的Flash發(fā)送所述升級(jí)文件。
[0155]其中,Local Bus總線又稱為CPU總線,根據(jù)高低位地址線序的差異,又可分為Motorola CPU總線和Intel CPU總線。如圖7所示,為某種FLASH器件使用Local Bus總線的讀時(shí)序,該FLASH器件提供的Local Bus接口,Addresses信號(hào)是從Local BUS地址信號(hào)(已經(jīng)解復(fù)用了),Outputs是Local bus的數(shù)據(jù)信號(hào)。在第一個(gè)時(shí)鐘周期內(nèi),Address信號(hào)線上傳輸?shù)氖悄繕?biāo)器件的地址信號(hào),此時(shí)CS#、0E#、WE#都處于高電平無效狀態(tài),并且Outputs輸出的數(shù)據(jù)無效。在第二個(gè)時(shí)鐘周期內(nèi),CE#變?yōu)榈碗娖?,表示目?biāo)器件已經(jīng)被選中,接著0E#也變?yōu)榈碗娖?大多數(shù)情況下,CS#和0E#幾乎是同時(shí)有效的),表示開始進(jìn)行讀操作,主控制裝置在CE#和0E#都為低電平有效的時(shí)候?qū)utputs上的數(shù)據(jù)進(jìn)行采樣(通常做一定的延時(shí)后再采樣,以保證采樣數(shù)據(jù)的正確性),采樣到的數(shù)據(jù)即為要讀取的數(shù)據(jù)。
[0156]相應(yīng)的,如圖8所示,為某種FLASH器件使用Local Bus總線的寫時(shí)序,在WE#和CS#同時(shí)為低有效的情況下,F(xiàn)lash器件從數(shù)據(jù)總線上采樣數(shù)據(jù),然后寫到指定的地址空間里去。
[0157]又進(jìn)一步地,如圖9所示,為控制裝置使用I2C總線的寫時(shí)序的過程,控制裝置在檢測(cè)到總線空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線;然后控制裝置發(fā)送一個(gè)控制字節(jié)(包括7位器件地址碼和一位R/W);當(dāng)CPLD檢測(cè)到控制裝置發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);控制裝置收到ACK后開始發(fā)送第一個(gè)數(shù)據(jù)字節(jié);CPLD收到數(shù)據(jù)字節(jié)后發(fā)送一個(gè)ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;控制裝置發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線。需要說明的是,圖9中控制字節(jié)指器件地址碼和讀寫控制位;地址字節(jié)指器件內(nèi)部的儲(chǔ)存器地址。
[0158]如圖10所示,為控制裝置使用I2C總線的讀時(shí)序的過程,控制裝置在檢測(cè)到總線空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線;控制裝置發(fā)送一個(gè)控制字節(jié)(包括7位器件地址碼和一位R/W);當(dāng)CPLD檢測(cè)到主控發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);控制裝置收到ACK后釋放數(shù)據(jù)總線,開始接收第一個(gè)數(shù)據(jù)字節(jié);控制裝置收到數(shù)據(jù)后發(fā)送ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;控制裝置發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線。需要說明的是,圖10中控制字節(jié)指器件地址碼和讀寫控制位;地址字節(jié)指器件內(nèi)部的儲(chǔ)存器地址。
[0159]為了更加清楚的闡述本發(fā)明中使用I2C總線的讀/寫時(shí)序的過程,下面我們示例性的列出I2C總線時(shí)序模擬代碼的部分程序段:
[0160]12C總線時(shí)序模擬代碼:
[0161]#include<reg52.h>
[0162]#define uchar unsigned char
[0163]sbit sda=P2"0;
[0164]sbit scl=P2"l;//用單片機(jī)的兩個(gè)I/O 口模擬I2C接口
[0165]uchar a;
[0167]void delay ()/`/簡(jiǎn)單延時(shí)函數(shù)
`[0168]{; ;}
[0170]void startO//開始信號(hào)SCL在高電平期間,SDA—個(gè)下降沿則表示啟動(dòng)信號(hào)
[0171]
【權(quán)利要求】
1.一種Flash在線升級(jí)的方法,其特征在于,控制裝置與復(fù)雜可編程邏輯器件CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,所述方法包括: 所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除; 所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的; 所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件; 所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的Flash在線升級(jí)的方法,其特征在于,所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作的方法包括: 所述CPLD對(duì)所述第一信令進(jìn)行解析,獲得所述擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù); 所述CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的Flash在線升級(jí)的方法,其特征在于,所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào)的方法包括:` 所述CPLD接收來自所述控制裝置的第二信令,所述第二信令為所述控制裝置響應(yīng)于所述第一反饋信息而生成的; 所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令; 所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示所述CPLD已獲得所述寫入指令; 所述CPLD接收來自所述控制裝置通過所述I2C總線的發(fā)送的I2C信號(hào),獲得所述I2C信號(hào)。
4.根據(jù)權(quán)利要求1所述的Flash在線升級(jí)的方法,其特征在于,在所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash之前,所述方法還包括: 所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理; 相應(yīng)的,所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash包括: 所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
5.根據(jù)權(quán)利要求1所述的Flash在線升級(jí)的方法,其特征在于,所述CPLD按照localbus協(xié)議,并使用local bus時(shí)序向所述扣板側(cè)的Flash發(fā)送所述升級(jí)文件,發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
6.一種Flash在線升級(jí)的方法,其特征在于,控制裝置與復(fù)雜可編程邏輯器件CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,所述方法包括: 所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD,以使得所述CPLD響應(yīng)于自身發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的;所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD,以使得所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù),其中,所述I2C信號(hào)為自身將所述預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
7.根據(jù)權(quán)利要求6所述的Flash在線升級(jí)的方法,其特征在于,在所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD之后,還包括: 所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第一反饋信息,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
8.根據(jù)權(quán)利要求6或7所述的Flash在線升級(jí)的方法,其特征在于,所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD的方法包括: 所述控制裝置通過所述I2C總線發(fā)送第二信令至所述CPLD,以使得所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令,其中,所述第二信令為自身響應(yīng)于所述第一反饋信息而生成的; 所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第二反饋信息,所述第二反饋信息用于指示CPLD已獲得所述寫入指令; 根據(jù)所述第二反饋信息,所述控制裝置通過所述I2C總線發(fā)送所述I2C信號(hào)至所述CPLD,以使得所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,并發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
9.根據(jù)權(quán)利要求6所述的Flash在線升級(jí)的方法,其特征在于,在所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD之前,還包括: 所述控制裝置獲取主板側(cè)的Flash中的所述預(yù)置的升級(jí)文件,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)`數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。
10.一種可編程邏輯器件CPLD,其特征在于,控制裝置與所述CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,包括: 第一接收單元,用于所述CPLD接收所述控制裝置發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作并發(fā)送第一反饋信息至所述控制裝置,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除; 第一獲取單元,用于所述CPLD獲取所述控制裝置通過所述I2C總線發(fā)送的I2C信號(hào),所述I2C信號(hào)為所述控制裝置在接收到所述第一反饋信息后,所述控制裝置將預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的;以及所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件; 處理單元,用于所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的CPLD,其特征在于, 所述處理單元,用于所述CPLD對(duì)所述第一信令進(jìn)行解析,以獲得所述擦除命令,所述擦除命令用于指示扣板側(cè)的Flash擦除原有數(shù)據(jù);以及所述CPLD發(fā)送所述擦除命令至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash擦除原有數(shù)據(jù)。
12.根據(jù)權(quán)利要求10所述的CPLD,其特征在于,所述第一接收單元,用于所述CPLD接收來自所述控制裝置的第二信令,所述第二信令為所述控制裝置響應(yīng)于所述第一反饋信息而生成的;以及所述CPLD接收來自所述控制裝置通過I2C總線的發(fā)送的I2C信號(hào),進(jìn)而獲得所述I2C信號(hào); 所述處理單元,用于所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令;以及所述CPLD發(fā)送對(duì)應(yīng)于所述第二信令的第二反饋信息至所述控制裝置,所述第二反饋信息用于指示CPLD已獲得所述寫入指令。
13.根據(jù)權(quán)利要求10所述的CPLD,其特征在于, 所述處理單元,用于所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理;以及所述CPLD發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
14.根據(jù)權(quán)利要求10所述的CPLD,其特征在于,所述CPLD按照localbus協(xié)議,并使用local bus時(shí)序向所述扣板側(cè)的Flash發(fā)送所述升級(jí)文件,發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
15.一種控制裝置,其特征在于,所述控制裝置與復(fù)雜可編程邏輯器件CPLD之間設(shè)有基于I2C協(xié)議的I2C總線,包括: 第一發(fā)送單元,用于所述控制裝置通過所述I2C總線發(fā)送第一信令至所述CPLD,以使得所述CPLD響應(yīng)于自身發(fā)送的第一信令完成扣板側(cè)的Flash的擦除操作,其中,所述第一信令為所述控制裝置響應(yīng)用戶輸入的升級(jí)操作指令而生成的;以及所述控制裝置通過所述I2C總線發(fā)送I2C信號(hào)至所述CPLD,以使得所述CPLD獲取所述I2C信號(hào)中的所述預(yù)置的升級(jí)文件;所述CPLD發(fā)送所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash,以使所述扣板側(cè)的Flash寫入所述預(yù)置的升級(jí)文件中的數(shù)據(jù),其中,所述I2C信號(hào)為自身將所述預(yù)置的升級(jí)文件內(nèi)嵌至I2C總線中生成的。
16.根據(jù)權(quán)利要求15所述的控制裝置,其特征在于,還包括: 第二接收單元,用于所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第一反饋信息,所述第一反饋信息用于指示所述扣板側(cè)的Flash已完成擦除。
17.根據(jù)權(quán)利要求15或16所述的控制裝置,其特征在于, 所述第一發(fā)送單元,用于所述控制裝置通過所述I2C總線發(fā)送第二信令至所述CPLD,以使得所述CPLD對(duì)所述第二信令進(jìn)行解析,以獲得寫入指令,其中,所述第二信令為自身響應(yīng)于所述第一反饋信息而生成的; 所述第二接收單元,用于所述控制裝置通過所述I2C總線接收所述CPLD發(fā)送的第二反饋信息,所述第二反饋信息用于指示CPLD已獲得所述寫入指令; 所述第一發(fā)送單元,用于根據(jù)所述第二反饋信息,所述控制裝置通過所述I2C總線發(fā)送所述I2C信號(hào)至所述CPLD,以使得所述CPLD對(duì)所述升級(jí)文件進(jìn)行串行轉(zhuǎn)并行處理,并發(fā)送串行轉(zhuǎn)并行處理后的所述預(yù)置的升級(jí)文件至所述扣板側(cè)的Flash。
18.根據(jù)權(quán)利要求15所述的控制裝置,其特征在于,還包括: 第二獲取單元,用于所述控制裝置獲取主板側(cè)的Flash中的所述預(yù)置的升級(jí)文件,所述預(yù)置的升級(jí)文件為用戶在輸入升級(jí)操作指令后將升級(jí)數(shù)據(jù)包由管理網(wǎng)口解壓傳送至所述主板側(cè)的Flash而生成的。
19.根據(jù)權(quán)利要求15所述的控制裝置,其特征在于,所述控制裝置包括CPU和現(xiàn)場(chǎng)可編程門陣列FPGA。
【文檔編號(hào)】G06F9/445GK103729213SQ201310698342
【公開日】2014年4月16日 申請(qǐng)日期:2013年12月18日 優(yōu)先權(quán)日:2013年12月18日
【發(fā)明者】朱少佞, 梁榮江, 洪潮, 徐波 申請(qǐng)人:杭州華為數(shù)字技術(shù)有限公司