專利名稱::一種智能編程器及編程方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及信息安全領(lǐng)域,特別涉及一種智能編程器及編程方法。技術(shù)背景所謂固件程序(Firmware)就是寫入EPROM或EEPROM中的程序,與普通軟件不同,它是固化在集成電路內(nèi)部的程序代碼,負(fù)責(zé)控制和協(xié)調(diào)集成電路的功能,擔(dān)任著一個系統(tǒng)最基礎(chǔ)、最底層工作的軟件。一般電子產(chǎn)品生產(chǎn)商或開發(fā)商都會自己開發(fā)電子產(chǎn)品的固件程序,利用編程器將其燒寫至電子產(chǎn)品內(nèi)電路板上的集成芯片中。編程器是一種用來給目標(biāo)芯片燒寫固件程序的硬件工具,在編程器上設(shè)置目標(biāo)芯片的編程座,當(dāng)把目標(biāo)芯片裝設(shè)在該編程座上后,便可以利用編程器將編程固件程序燒寫在目標(biāo)芯片中了。將固件程序或一些其它特征信息(比如開發(fā)商信息、產(chǎn)品型號、生產(chǎn)日期、版本號等)燒寫在電子產(chǎn)品中,是指利用編程器將其燒寫在電子產(chǎn)品內(nèi)電路板上的集成電路內(nèi),利用編程器對目標(biāo)芯片進(jìn)行編程的方法對芯片進(jìn)行編程,通常分為聯(lián)機(jī)編程(即在線編程)和脫機(jī)編程(即離線編程)兩種方法,聯(lián)機(jī)編程方法就是使用上層軟件在計算機(jī)端控制編程器,對芯片進(jìn)行編程,這是最常用的方法,大家都比較熟悉;而脫機(jī)編程方法就是不使用計算機(jī),直接使用編程器對芯片進(jìn)行編程的方法,具體的說是先將要編程的固件代碼通過計算機(jī)相應(yīng)接口下載到編程器中,然后直接使用編程器對芯片進(jìn)行編程。就目前一般脫機(jī)編程方式的編程器來說,核心器件包括一個微控制芯片,用來控制編程器實現(xiàn)編程操作,還包括一存儲器(一般采用EPROM或EEPROM來實現(xiàn)),一般欲燒寫到目標(biāo)芯片中的固件程序會被下載并保存在該存儲器上。目前的電子產(chǎn)品生產(chǎn)方法一般都是利用編程器以聯(lián)機(jī)方式或脫機(jī)方式將固件程序及一些特征信息下載到電子產(chǎn)品中,電子產(chǎn)品的生產(chǎn)過程一般都是利用編程器大批量的將固件程序燒寫到電子產(chǎn)品中的目標(biāo)芯片中,批量生產(chǎn)的電子產(chǎn)品中,其核心控制芯片即利用編程器燒寫的目標(biāo)芯片的存儲規(guī)則、加密規(guī)則等都具有一致性,這種一致性會大大降低電子產(chǎn)品中核心控制芯片對與之連接的片外存儲器件的使用安全性,使片外存儲器件容易被破解,大大降低了電子產(chǎn)品的數(shù)據(jù)安全性。
發(fā)明內(nèi)容為了解決上述電子產(chǎn)品由于存儲區(qū)域存儲規(guī)則及加密規(guī)則的相同,因此存在數(shù)據(jù)安全性低的問題,本發(fā)明提出一種智能編程器及編程方法,利用其內(nèi)置的智能編程功能,在對固件程序編程的過程中實現(xiàn)自動嵌入隨機(jī)數(shù)表的操作。一種智能編程器,其特征是包括設(shè)置模塊、表生成模塊、編程模塊、程序存儲模塊和編程接口,所述設(shè)置模塊和表生成模塊分別與編程模塊相連,同時設(shè)置模塊還與表生成模塊相連;其中,所述設(shè)置模塊用于設(shè)置所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,所述表首地址為所述隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置;所述表首地址和表長度的數(shù)值分別為所述程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表表首地址和表長度的數(shù)值;所述表生成模塊,用于生成所述設(shè)置模塊中設(shè)置的表長度的隨機(jī)數(shù)表;所述編程模塊,用于通過所述編程接口將所述表生成模塊生成的隨機(jī)數(shù)表及所述程序存儲模塊中存儲的被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中,其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置與所述設(shè)置模塊中設(shè)置的表首地址數(shù)值相同,替換被燒寫程序中設(shè)置的所述常量表。所述表首地址和表長度數(shù)值的組合分別與一個目標(biāo)芯片類型相對應(yīng),所述設(shè)置模塊設(shè)置的表首地址和表長度的數(shù)值組合為一種或多種。所述的設(shè)置模塊具體為存儲模塊,用于存儲所述程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度。所述設(shè)置模塊具體為獲取模塊,用于根據(jù)預(yù)先定義的特征值,在所述程序存儲模塊存儲的被燒寫程序中査找并獲取表首地址和表長度,以此作為所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度。所述表生成模塊為隨機(jī)數(shù)生成芯片或振蕩電路。所述表生成模塊為內(nèi)置偽隨機(jī)數(shù)生成算法的微控制芯片。所述表生成模塊生成的隨機(jī)數(shù)表具體為全排列隨機(jī)數(shù)表。所述編程模塊具體包括替換單元,用于將生成模塊生成的隨機(jī)數(shù)表替換程序存儲模塊存儲的被燒寫程序中的所述常量表;將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中。所述編程模塊具體包括-比較單元,用于在燒寫數(shù)據(jù)前以及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的當(dāng)前燒寫首地址數(shù)值是否等于設(shè)置模塊中設(shè)置的表首地址數(shù)值,等于則啟動嵌入燒寫單元,否則比較目標(biāo)芯片的當(dāng)前燒寫地址數(shù)值加上塊長度數(shù)值是否大于所述設(shè)置模塊中設(shè)置的表首地址,否則啟動程序燒寫單元,大于則啟動填充燒寫單元;程序燒寫單元,用于向目標(biāo)芯片中燒寫一塊所述被燒寫程序后,跳轉(zhuǎn)執(zhí)行所述比較單元;嵌入燒寫單元,用于向目標(biāo)芯片中按塊燒寫所述隨機(jī)數(shù)表,并在所述隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中;填充燒寫單元,用于在下一塊燒寫程序的首地址與設(shè)置模塊表首地址之間的被燒寫程序后面填充所述隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,再按塊將剩余的所述隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中。所述的編程模塊為控制芯片。所述設(shè)置模塊為片外存儲器件或與所述編程模塊集成在一顆控制芯片中。所述程序存儲模塊為片外存儲器件或與所述編程模塊集成在一顆控制芯片中。所述表生成模塊為與所述編程模塊集成在一顆控制芯片中。所述智能編程器還包括用以將所述編程器連接到計算機(jī)的通信接口。所述智能編程器還包括用于指示當(dāng)前編程器及其電源的工作狀態(tài)的狀態(tài)指示模塊。所述智能編程器還包括為編程器提供電源管理的電源回路。一種智能編程方法,其特征是包括下列步驟--預(yù)先設(shè)置一組或多組表首地址和表長度,分別與一個或多個目標(biāo)芯片類型相對應(yīng),所述表首地址指向隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置,所述表首地址和表長度分別與被燒寫程序中設(shè)置的常量表表首地址和表長度一致;…生成所述表長度的隨機(jī)數(shù)表,將所述隨機(jī)數(shù)表及被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中,其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置為所述預(yù)先設(shè)置的表首地址,替換被燒寫程序中設(shè)置的所述常量表。所述設(shè)置表首地址和表長度的方法具體為存儲所述被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為所述隨機(jī)數(shù)表的表首地址和表長度。所述設(shè)置表首地址和表長度的方法具體為根據(jù)預(yù)先定義的特征值,在所述并獲取表首地址和表長度,以此作為所述隨機(jī)數(shù)表的表首地址和表長度。所述以嵌套的方式燒寫具體包括下列步驟-將生成的隨機(jī)數(shù)表替換被燒寫程序中的所述常量表;-將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中。所述以嵌套的方式燒寫具體包括下列步驟步驟(1)在燒寫前及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址是否等于所述表首地址,等于則向目標(biāo)芯片中按塊燒寫所述隨機(jī)數(shù)表,并在所述隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,否則執(zhí)行步驟(2)比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址加上燒寫程序的塊長度是否大于所述表首地址,大于則在下一塊燒寫程序的首地址與所述表首地址之間的被燒寫程序后面填充所述隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,再按塊將剩余的所述隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,否則向目標(biāo)芯片中燒寫一塊所述被燒寫程序,燒寫完成后繼續(xù)執(zhí)行步驟(1),直到程序燒寫結(jié)束。所述隨機(jī)數(shù)表的生成方法為利用隨機(jī)數(shù)生成芯片生成,或利用振蕩電路生成。所述隨機(jī)數(shù)表的生成方法為利用偽隨機(jī)數(shù)生成算法生成。所述所述隨機(jī)數(shù)表具體為全排列隨機(jī)數(shù)表。本發(fā)明的有益效果本發(fā)明提供的智能編程器及編程方法,利用其內(nèi)置的智能編程功能,在對固件程序編程的過程中實現(xiàn)自動嵌入隨機(jī)數(shù)表的功能,能夠使即便是批量生產(chǎn)的電子產(chǎn)品,由于在每個電子產(chǎn)品中嵌入的隨機(jī)數(shù)表都是不同的,都能夠利用嵌入在固件程序中的隨機(jī)數(shù)表使電子產(chǎn)品內(nèi)部主控芯片連接的存儲器件的存儲規(guī)則及加密規(guī)則等互不相同,大大提高電子產(chǎn)品的數(shù)據(jù)安全性,有效避免被破解的風(fēng)險;另外,本發(fā)明提供的智能編程器及編程方法無需對計算機(jī)的硬件做任何改動,生產(chǎn)人員可以像使用現(xiàn)有編程器的方法來使用本發(fā)明提供的智能編程器,使用戶及生產(chǎn)人員的操作更簡單方便,不會增加開發(fā)成本及培訓(xùn)成本。圖1為本發(fā)明實施例1提供的智能編程器結(jié)構(gòu)圖;圖2為本發(fā)明實施例1提供的一種編程模塊的結(jié)構(gòu)框圖;圖3為本發(fā)明實施例1提供的另一種編程模塊的結(jié)構(gòu)框圖;圖4為本發(fā)明實施例1提供的智能編程器的一個優(yōu)選電路結(jié)構(gòu)圖;圖5為本發(fā)明實施例2提供的智能編程方法流程圖;圖6為本發(fā)明實施例2提供的一種以嵌套方式燒寫的方法流程圖;圖7為本發(fā)明實施例2提供的另一種以嵌套方式燒寫的方法流程圖。具體實施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。實施例1:參見圖l,本實施例提供了一種智能編程器,包括編程接口和程序存儲模塊,另外,還包括設(shè)置模塊,用于設(shè)置表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,上述表首地址指向隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置;其中,表首地址和表長度分別與程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表表首地址和表長度一致。另外,設(shè)置模塊可以是片外存儲器件或與編程模塊集成在一顆控制芯片中實現(xiàn)。優(yōu)選的,設(shè)置模塊具體可以為存儲模塊,用于存儲程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,其中表首地址指向所述隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置。舉例說明,在被燒寫程序中設(shè)置并初始化一個常量表TABU^B,表長度為256字節(jié),表首地址為0xlEC0,如AREATable(ROM,ABS,CON);指明該表存放在芯片F(xiàn)lash中org0xlEC0;指明表的位置exportTABLE—BTABLE一B:;256字節(jié)表的設(shè)置db0f3h,Oefh,09eh,086h,09ch,069h,01dh,098hdb03fh,0e4h,08eh,07lh,083h,OOdh,0f9h,0f6hdb0ech,0d9h,06eh,05ch,068h,02eh,08dh,0d7hdb0e6h,Oceh,05eh,047h,034h,090h,Ofdh,085hdbOdfh,0c3h,04dh,032h,Olah,0d5h,091h,Oelhdb0d8h,0b7h,02dh,007h,0e5h,077h,Offh,OcOhdb0dlh,Oach,Olch,Oflh,096h,093h,020h,04bhdb0cbh,0a0h,OObh,0c6h,07bh,074h,Odbh,Of7hdb0c4h,094h,03bh,ObOh,060h,054h,06bh,050hdbObch,088h,0e9h,084h,OOfli,0d4h,046h,OOchdbOb5h,07ch,0c7h,058h,0f4h,0b4h,01eh,0a9hdbOaeh,06fh,0b6h,04lh,033h,073h,040h,005hdb0a6h,063h,0a4h,02bh,0a2h,Of2h,Of5h,08bhdb09fh,056h,092h,014h,06ah,Occh,0c8h,061hdb097h,03ch,08lh,Ofeh,04fh,Oabh,Oa3h,Ofchdb08fh,02fh,05dh,037h,017h,08ah,07dh,05ahdb087h,015h,04ah,0e7h,Ofth,006h,057h,Oalhdb07eh,008h,038h,Ocfli,Odeh,028h,OOah,076hdb075h,03dh,025h,Ob8h,0c2h,05fh,01bh,072hdb06dh,Oa8h,013h,059h,Oa5h,01Oh,0d6h,Obbhdb064h,09ah,OOOh,02ah,06ch,Oeeh,089h,Oeahdb05bh,08ch,Oedh,012h,Of8h,026h,019h,044hdb052h,070h,03ah,0e2h,03lh,Oaah,Oddh,095hdb049h,062h,Odah,0c9h,048h,066h,055h,0a7hdb036h,053h,Ob3h,Oblh,OfDh,043h,OeOh,Oadhdb02ch,045h,078h,099h,030h,021h,042h,Obahdb022h,027h,065h,080h,Od3h,0b9h,Ocah,082hdb018h,009h,05lh,067h,079h,Oe8h,07ah,ObehdbOOeh,Oebh,029h,04eh,01fh,024h,002h,0d2hdb004h,Odch,039h,035h,OOlh,07fh,0b2h,09dhdbOfah,Ocdh,Oafh,003h,Oe3h,016h,Ollh,Obfhdb03eh,Obdh,09bh,OdOh,Oc5h,023h,Oclh,04ch那么在智能編程器中設(shè)置的表生成模塊生成的隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置為OxlECO,表長度為256字節(jié),與在被燒寫程序中設(shè)置的表首位置和表長度一致。優(yōu)選的,設(shè)置模塊具體還可以為獲取模塊,用于根據(jù)預(yù)先定義的特征值,在程序存儲模塊存儲的被燒寫程序中査找并獲取表首地址和表長度,作為表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,其中表首地址指向所述隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置。舉例說明,在被燒寫程序中設(shè)置并初始化一個常量表TABLE一B,表長度為256字節(jié),表首地址為0xlEC0,如AREATable(ROM,ABS,CON);指明該表存放在芯片F(xiàn)lash中org0xlECOexportTABLE—BTABLE—B:;256字節(jié)表的設(shè)置db0Gh,Oefh,09eh,086h,09ch,069h,01dh,098hdb03fh,0e4h,08eh,07lh,083h,OOdh,0f9h,O傷hdbOech,0d9h,06eh,05ch,068h,02eh,08dh,0d7hdb0e6h,Oceh,05eh,047h,034h,090h,Ofdh,085hdbOdfh,0c3h,04dh,032h,Olah,0d5h,091h,OelhdbOd8h,0b7h,02dh,007h,Oe5h,077h,Offh,OcOhdbOdlh,Oach,01ch,Oflh,096h,093h,020h,04bhdbOcbh,OaOh,OObh,0c6h,07bh,074h,Odbh,0f7hdb0c4h,094h,03bh,ObOh,060h,054h,06bh,050hdbObch,088h,0e9h,084h,OOfh,0d4h,046h,OOchdbOb5h,07ch,0c7h,058h,0f4h,0b4h,01eh,0a9hdbOaeh,06fh,0b6h,041h,033h,073h,040h,005hdb0a6h,063h,0a4h,02bh,0a2h,Of2h,Of5h,08bhdb09fh,056h,092h,014h,06ah,Occh,0c8h,061hdb097h,03ch,08lh,Ofeh,04fh,Oabh,Oa3h,Ofchdb08fh,02fh,05dh,037h,017h,08ah,07dh,05ahdb087h,015h,04ah,0e7h,Ofbh,006h,057h,Oalhdb07eh,008h,038h,Ocfh,Odeh,028h,OOah,076hdb075h,03dh,025h,Ob8h,0c2h,05fh,Olbh,072hdb06dh,0a8h,013h,059h,0a5h,01Oh,0d6h,Obbhdb064h,09ah,OOOh,02ah,06ch,Oeeh,089h,Oeahdb05bh,08ch,Oedh,012h,0f8h,026h,019h,044hdb052h,070h,03ah,0e2h,03lh,Oaah,Oddh,095hdb049h,062h,Odah,0c9h,048h,066h,055h,0a7hdb036h,053h,Ob3h,Oblh,O艦,043h,OeOh,Oadhdb02ch,045h,078h,099h,03Oh,02lh,042h,Obahdb022h,027h,065h,080h,Od3h,0b9h,Ocah,082hdb018h,009h,05lh,067h,079h,Oe8h,07ah,ObehdbOOeh,Oebh,029h,04eh,01fh,024h,002h,0d2hdb004h,Odch,039h,035h,OOlh,07fh,0b2h,09dhdbOfah,Ocdh,Oafh,003h,0e3h,016h,Ollh,Obfhdb03eh,Obdh,0%h,OdOh,0c5h,023h,Oclh,04ch再定義TABLE—C,用來存儲TABLE—B表首位置和表長度,如TABLE—LEN:equ256;定義TABLE—B長度AREATable(ROM,ABS,CON);指明該表存放在芯片F(xiàn)lash中org0xlFF0;指明隨機(jī)數(shù)表的特征值表的位置exportTABLE—CTABLE_C:;該表記錄了隨機(jī)數(shù)表的特征值項DWLTABLE—B;記錄TABLE_B表位置DWLTABLE—LEN;記錄TABLE—B長度那么在智能編程器中預(yù)先存儲TABLE_C的首地址0xlFF0,智能編程器可以在特征值OxlFFO所對應(yīng)的TABLE—C中獲取到TABLE一B的表首地址和表長度,即,地址OxlFFO中存儲的內(nèi)容值OxlECO為TABLE_B的表首地址,地址OxlFFF中存儲的內(nèi)容值256為TABLE_B的表長度?;蛘撸€可以利用字符串作為特征值進(jìn)行標(biāo)記,在其后面的數(shù)據(jù)依次為TABLE—B的表首地址和表長度,例如在被燒寫程序中定義如下常量db'A,,'A,,'A,,'A,,'A,,'A,,'A,,'A,,'A,,'A,.DWLTABLE—B;記錄TABLE_B表位置DWLTABLE一LEN;記錄TABLE—B長度那么編程器只要在被燒產(chǎn)品固件區(qū)查找到10個字符A,從其后取2字節(jié)數(shù)據(jù)就是TABLE一B表位置,再后取2字節(jié)數(shù)據(jù)就是TABLE一B表長度,從而實現(xiàn)智能編程器對表首地址和表長度的自動獲取。在實際應(yīng)用中,設(shè)置模塊設(shè)置的表首地址和表長度可以為一組或多組,分別與一個或多個目標(biāo)芯片類型相對應(yīng),比如,智能編程器能夠燒寫CY7C63813芯片和FT08M08AE芯片兩種類型的芯片,那么在設(shè)置模塊中可以設(shè)置兩對表首地址和表長度,比如<table>tableseeoriginaldocumentpage12</column></row><table>表生成模塊,用于生成所述設(shè)置模塊中設(shè)置的表長度的隨機(jī)數(shù)表;表生成模塊可以由隨機(jī)數(shù)生成芯片或振蕩電路實現(xiàn),還可以由內(nèi)置偽隨機(jī)數(shù)生成算法的微模塊還可以與編程模塊集成在一顆控制芯片中實現(xiàn)。其中偽隨機(jī)數(shù)生成算法可以是生產(chǎn)商或開發(fā)商自設(shè)置開發(fā)的偽隨機(jī)數(shù)生成算法,也可以利用現(xiàn)有的一些偽隨機(jī)數(shù)生成算法。優(yōu)選的,表生成模塊生成的隨機(jī)數(shù)表具體為全排列隨機(jī)數(shù)表,所謂全排列隨機(jī)數(shù)表,通俗的說就是該隨機(jī)數(shù)表中的隨機(jī)數(shù)都是不重復(fù)的,是一種全排列的狀態(tài),以便進(jìn)一步提高安全性。編程模塊,用于通過編程接口將表生成模塊生成的隨機(jī)數(shù)表及程序存儲模塊中存儲的被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中,其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置為設(shè)置模塊中設(shè)置的表首地址處,替換被燒寫程序中設(shè)置的所述常量表。編程模塊優(yōu)選的可以由一顆控制芯片實現(xiàn)。其中,參見圖2,編程模塊具體包括替換單元,用于將生成模塊生成的隨機(jī)數(shù)表替換程序存儲模塊存儲的被燒寫程序中的常量表;燒寫單元,用于將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中。舉例說明被燒寫程序存儲在程序存儲模塊中,開始燒寫后,先用表生成模塊生成的隨機(jī)數(shù)表替換被燒寫程序中設(shè)置的常量表,比如被燒寫程序中設(shè)置的常數(shù)表沿用上述TABLE—B,表生成模塊生成的隨機(jī)數(shù)表為TABLEA,該隨機(jī)數(shù)表在設(shè)置模塊中設(shè)置的表首地址為OxlEC,表長度為256個字節(jié),則將隨機(jī)數(shù)表TABLEA寫入被燒寫程序的0xlEC地址起256個字節(jié),覆蓋被燒寫程序中TABLE—B的地方,再將已經(jīng)被替換的被燒寫程序按塊寫入目標(biāo)芯片中。參見圖3,編程模塊還可以具體包括比較單元,用于在燒寫前及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的當(dāng)前燒寫首地址是否等于或當(dāng)前首地址加上塊長度是否大于所述設(shè)置模塊中設(shè)置的表首地址,否則啟動程序燒寫單元,等于則啟動嵌入燒寫單元,大于則啟動填充燒寫單元;程序燒寫單元,用于向目標(biāo)芯片中燒寫一塊被燒寫程序,跳轉(zhuǎn)執(zhí)行比較單元;嵌入燒寫單元,用于向目標(biāo)芯片中按塊燒寫隨機(jī)數(shù)表,并在隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過上述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中;填充燒寫單元,用于在下一塊燒寫程序的首地址與設(shè)置模塊表首地址之間的被燒寫程序后面填充所述隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,,再按塊將剩余的隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過上述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中。舉例說明,比如塊長度為64個字節(jié),表首地址為0x0200,表長度為128個字節(jié),啟動燒寫,當(dāng)前向目標(biāo)芯片中燒寫的首地址為0x0000,比較0x0000是否等于或大于0x0200,小于,所以向目標(biāo)芯片中燒寫64個字節(jié)的被燒寫程序,此時燒寫地址變?yōu)?x0040,還是小于0x0200,繼續(xù)向目標(biāo)芯片中燒寫64個字節(jié)的被燒寫程序,當(dāng)向目標(biāo)芯片中燒寫5塊被燒寫程序后,燒寫地址變?yōu)?x0200,此時與設(shè)置模塊中設(shè)置的表首地址0x0200—致,此時開始向目標(biāo)芯片中按64個字節(jié)的塊長度按塊燒寫隨機(jī)數(shù)表,隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過上述表長度即128個字節(jié)后繼續(xù)按塊燒寫到目標(biāo)芯片中,因為要繞過被燒寫程序中設(shè)置的常量表的位置。再比如塊長度為64個字節(jié),表首地址為0x0220,表長度為128個字節(jié),啟動燒寫,當(dāng)前向目標(biāo)芯片中燒寫的首地址為0x0000,比較當(dāng)前燒寫首地址0x0000加上塊長度64個字節(jié)即0x0040是否等于或大于0x0220,小于,所以向目標(biāo)芯片中燒寫64個字節(jié)的被燒寫程序,此時燒寫地址變?yōu)?x0040,加上64個字節(jié)為0x0080,還是小于0x0200,繼續(xù)向目標(biāo)芯片中燒寫64個字節(jié)的被燒寫程序,當(dāng)向目標(biāo)芯片中燒寫5塊被燒寫程序后,燒寫地址變?yōu)?x0200,此時加上64個字節(jié)為0x0240,大于0x0220,則在上述大于部分的長度(0x0240-0x0220二0x0020,即32個字節(jié))的被燒寫程序的后面填充隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,即先取32個字節(jié)的被燒寫程序再取32個字節(jié)的隨機(jī)數(shù)表組成一塊燒寫到目標(biāo)芯片中,再按64個字節(jié)為一塊將剩余的隨機(jī)數(shù)表燒寫到目標(biāo)芯片中,由于此時隨機(jī)數(shù)表還剩余32個字節(jié)沒有燒完,但是不足一個塊長度,故先取剩余的32個字節(jié)隨機(jī)數(shù)表,剩余被燒寫程序越過上述表長度128個字節(jié)后取32個字節(jié)組成一塊,燒寫到目標(biāo)芯片中,因為要繞過被燒寫程序中設(shè)置的常量表的位置,再將剩余的被燒寫程序按64個字節(jié)一塊燒寫到目標(biāo)芯片中直至完成。程序存儲模塊可以是片外存儲器件,也可以是與編程模塊集成在一顆控制芯片中實現(xiàn)。編程接口可以是編程座,也可以是從編程器上引出來的帶編程接口的編程線,可以直接與放置有被燒寫芯片的板子提供的相應(yīng)接口相連接。優(yōu)選的,智能編程器還包括用以將編程器連接到計算機(jī)的通信接口,在聯(lián)機(jī)編程時,計算機(jī)中的上層軟件可以通過該通信接口將需要下載的固件程序下載到放置在編程器的編程座(編程接口)中的目標(biāo)芯片中;在脫機(jī)編程時,先將編程器通過通信接口連接到計算機(jī),將需要下載到目標(biāo)芯片中的固件程序下載到編程器的程序存儲模塊中,再斷開編程器與計算機(jī)的連接,便可以進(jìn)行脫機(jī)燒寫了。優(yōu)選的,智能編程器還包括為編程器提供電源管理的電源回路。優(yōu)選的,智能編程器還包括用于指示當(dāng)前編程器及其電源工作狀態(tài)的狀態(tài)指示模塊。本發(fā)明實施例中的被燒寫程序優(yōu)選的為欲燒寫在電子產(chǎn)品中的固件程序,利用本發(fā)明實施例中的智能編程器生產(chǎn)的電子產(chǎn)品,由于燒寫到每個目標(biāo)芯片中的隨機(jī)數(shù)表都是不一樣的,使即使是批量生產(chǎn)的電子產(chǎn)品,能夠利用嵌入在固件程序中的隨機(jī)數(shù)表使電子產(chǎn)品的存儲器件的存儲規(guī)則及加密規(guī)則等發(fā)生不一致性,從而大大提高電子產(chǎn)品的數(shù)據(jù)安全性,有效避免被破解的安全性。比如,以智能密鑰裝置為電子產(chǎn)品舉例說明,該智能密鑰裝置由主控芯片和片外存儲器構(gòu)成,利用本發(fā)明實施例提供的智能編程器向智能密鑰裝置的主控芯片中燒寫智能密鑰裝置的固件程序,則該固件程序則為已經(jīng)嵌入隨機(jī)數(shù)表的固件程序,這時,可以實現(xiàn)對上述片外存儲器的安全讀寫操作,比如,利用燒寫在主控芯片中的固件程序中嵌入的隨機(jī)數(shù)表對片外存儲器進(jìn)行亂序?qū)懖僮髦骺匦酒獙ζ獯鎯ζ鞯腁ddressl地址進(jìn)行寫操作,要寫入的內(nèi)容為A,地址Addressl共16位,由前4位L、中間8位M和后4位N組成,取地址Addressl的中間8位M作為索引值,在固件程序中嵌入的隨機(jī)數(shù)表中找到該索引值對應(yīng)的內(nèi)容值K,將該內(nèi)容值K替代地址Addressl的中間8位,前4位L和后4位N不變,作為斬的地址Address2,將主控芯片要寫入片外存儲器中的內(nèi)容A寫入片外存儲器地址Address2中。對應(yīng)的,利用燒寫在主控芯片中固件程序中的隨機(jī)數(shù)表對片外存儲器進(jìn)行亂序讀操作主控芯片要對片外存儲器的Addressl地址進(jìn)行讀操作,地址Addressl共16位,由前4位L、中間8位M和后4位N組成,取地址Add'ressl的中間8位M作為索引值,在固件程序中嵌入的隨機(jī)數(shù)表Table中找到該索引值對應(yīng)的內(nèi)容值K,將該內(nèi)容值K替代Addressl的中間8位,前4位L和后4位N不變,作為新的地址Address2,主控芯片從新的地址Address2中讀出內(nèi)容到主控芯片中即可。由此可見,由于在生產(chǎn)電子產(chǎn)品即向電子產(chǎn)品中的主控芯片內(nèi)燒寫固件程序的時候,嵌入在每個電子產(chǎn)品中的隨機(jī)數(shù)表是不固定的,是隨機(jī)生成的,所以當(dāng)電子產(chǎn)品中的主控芯片向與其相連的片外存儲器進(jìn)行寫操作時,即使是批量生產(chǎn)的電子產(chǎn)品,寫入到片外存儲器中的地址也是不一致的,即利用嵌入在固件程序中的隨機(jī)數(shù)表實現(xiàn)了對片外存儲器的亂序存儲,改變了其存儲規(guī)則的一致性,這樣,即使是破解了同一批次的其中一個或幾個產(chǎn)品,其他的產(chǎn)品的安全性也是很高的,即大大提高了電子產(chǎn)品存儲的安全能力。當(dāng)然,還可以是利用主控芯片中的隨機(jī)數(shù)表對片外存儲器進(jìn)行密文寫操作主控芯片要對片外存儲器的Addressl地址進(jìn)行寫操作,要寫入的內(nèi)容為A,地址Addressl共16位,由前4位L、中間8位M和后4位N組成,取地址Addressl的中間8位M作為索引值,在固件程序中嵌入的隨機(jī)數(shù)表Table中找到該索引值對應(yīng)的內(nèi)容值K,利用該內(nèi)容值K對要寫入的內(nèi)容A做加密運算,得到加密結(jié)果A',將加密結(jié)果A'寫入地址Addressl中。對應(yīng)的,還可以是利用主控芯片中的隨機(jī)數(shù)表對片外存儲器進(jìn)行密文讀操作主控芯片要對片外存儲器的Addressl地址進(jìn)行寫操作,該地址Addressl內(nèi)存儲的內(nèi)容為A',地址Addressl共16位,由前4位L、中間8位M和后4位N組成,取地址Addressl的中間8位M作為索引值,在固件程序中嵌入的隨機(jī)數(shù)表Table中找到該索引值對應(yīng)的內(nèi)容值K,利用該內(nèi)容值K對地址Addressl內(nèi)存儲的內(nèi)容為A'做解密運算,得到解密結(jié)果A,將解密結(jié)果A讀出到主控芯片中。由此可見,由于在生產(chǎn)電子產(chǎn)品即向電子產(chǎn)品中的主控芯片內(nèi)燒寫固件程序的時候,嵌入在每個電子產(chǎn)品中的隨機(jī)數(shù)表是不固定的,是隨機(jī)生成的,所以當(dāng)電子產(chǎn)品中的主控芯片向與其相連的片外存儲器進(jìn)行寫操作時,即使是批量生產(chǎn)的電子產(chǎn)品,寫入到片外存儲器中的內(nèi)容也是不一致的,即利用嵌入在固件程序中的隨機(jī)數(shù)表實現(xiàn)了對片外存儲器的密文存儲,改變了其存儲及加密規(guī)則的一致性,同理,當(dāng)電子產(chǎn)品中的主控芯片向與其相連的片外存儲器進(jìn)行讀操作時也是一樣,所以,即使是破解了同一批次的其中一個或幾個產(chǎn)品,其他的產(chǎn)品的安全性也是很高的,即大大提高了電子產(chǎn)品存儲的安全能力。參見圖4,為本發(fā)明實施例的一個優(yōu)選方案智能編程器由主控芯片M68HC908JB16FA、振蕩電路、編程接口和USB接口構(gòu)成,其中主控芯片M68HC908JB16FA內(nèi)帶16K字節(jié)的FLASH和256字節(jié)的RAM,USB接口用于將要燒寫的程序下載到智能編程器中,并存儲在主控芯片M68HC908JB16FA的FLASH中,振蕩電路具體由晶振Y和信號處理電路組成,其中信號處理電路具體為電容CI串聯(lián)上由電阻Rl和反相器74HC04構(gòu)成的并聯(lián)部分,這里選用50MHz的晶振Y來產(chǎn)生振蕩信號,因為晶振Y的GND端腳處于懸空狀態(tài),故CLK端腳產(chǎn)生的振蕩信號便是隨機(jī)的不規(guī)則的,通過信號處理電路后得到一串的隨機(jī)信號,振蕩電路與主控芯片M68HC908JB16FA的1/01端腳相連,主控芯片M68HC908JB16FA便會按位采集1/01端腳輸入的隨機(jī)信號,每采集8位隨機(jī)信號,便可得到1個字節(jié)的隨機(jī)數(shù),依次采集下去,便可以得到隨機(jī)數(shù)表,存放在主控芯片M68HC908JB16FA的256字節(jié)的RAM區(qū)中。為了進(jìn)一步增加安全性,可以選用全排列隨機(jī)數(shù)表,所謂全排列隨機(jī)數(shù)表,通俗的說就是該隨機(jī)數(shù)表中的隨機(jī)數(shù)都是不重復(fù)的,是一種全排列的狀態(tài),獲得全排列隨機(jī)數(shù)表的方法可以是主控芯片M68HC卯8JB16FA在采集到1個字節(jié)的隨機(jī)數(shù)后,按照全排列隨機(jī)數(shù)的排列規(guī)則判斷是否有效,即判斷本次采集的隨機(jī)數(shù)是否已經(jīng)在之前采集過了,也就是說判斷隨機(jī)數(shù)表中存儲的隨機(jī)數(shù)是否有和本次采集的隨機(jī)數(shù)一樣的,如果沒有一樣的,則說明本次采集的是有效的,有效則存儲到隨機(jī)數(shù)表中,無效則舍棄,繼續(xù)采集下一個隨機(jī)數(shù),直至將隨機(jī)數(shù)表采集滿,因為每個隨機(jī)數(shù)為1個字節(jié),所以全排列隨機(jī)數(shù)表優(yōu)選的是由256個隨機(jī)數(shù)組成的。在主控芯片M68HC908JB16FA的FLASH中設(shè)置模塊,用來設(shè)置生成的隨機(jī)數(shù)表的表首地址和表長度。編程接口用于將主控芯片M68HC908JB16FA的FLASH中存儲的要燒寫的程序和RAM中存儲的隨機(jī)數(shù)表燒寫到目標(biāo)芯片(比如CY7C63813芯片)中,SDATA端腳用于傳輸編程數(shù)據(jù)。上述優(yōu)選方案的結(jié)構(gòu)只是本發(fā)明的一個特例,在具體實施時,還可以采用具體的隨機(jī)數(shù)生成芯片來代替振蕩電路部分實現(xiàn),也可以采用內(nèi)置偽隨機(jī)數(shù)生成算法的微控制芯片實現(xiàn),等等;在實際應(yīng)用中用戶可以根據(jù)自己的設(shè)計需要自行選用其他頻率的晶振,與50MHz的晶振在本發(fā)明實施例中作用和原理是類同的。實施例2:參見圖5,本實施例提供了一種智能編程方法步驟501:預(yù)先設(shè)置一組或多組表首地址和表長度,分別與一個或多個目標(biāo)芯片類型相對應(yīng),該表首地址指向隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置,該表首地址和表長度分別與被燒寫程序中設(shè)置的常量表表首地址和表長度一致;其中,設(shè)置表首地址和表長度的方法可以是在智能編程器中存儲被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為隨機(jī)數(shù)表的表首地址和表長度。或者設(shè)置表首地址和表長度的方法還可以是根據(jù)預(yù)先定義的特征值,在被燒寫程序中查找并獲取表首地址和表長度,作為隨機(jī)數(shù)表的表首地址和表長度;等等。步驟502:生成上述表長度的隨機(jī)數(shù)表;隨機(jī)數(shù)表的生成方法可以是利用隨機(jī)數(shù)生成芯片生成,或利用振蕩電路生成,還可以利用偽隨機(jī)數(shù)生成算法生成,等。其中,隨機(jī)數(shù)表優(yōu)選的為全排列隨機(jī)數(shù)表,所謂全排列隨機(jī)數(shù)表,通俗的說就是該隨機(jī)數(shù)表中的隨機(jī)數(shù)都是不重復(fù)的,是一種全排列的狀態(tài)。步驟503:將隨機(jī)數(shù)表及被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中。其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置為預(yù)先設(shè)置的表首地址,替換被燒寫程序中設(shè)置的所述常量表。燒寫的方式可以是脫機(jī)方式燒寫,也可以是聯(lián)機(jī)方式燒寫。參見圖6,以嵌套的方式燒寫具體為步驟60h將生成的隨機(jī)數(shù)表替換被燒寫程序中的常量表;步驟602:將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中?;蛘撸瑓⒁妶D7,以嵌套的方式燒寫還可以具體為步驟701:在燒寫前及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址是否等于表首地址,等于則執(zhí)行步驟702;否則執(zhí)行步驟703;步驟702:向目標(biāo)芯片中按塊燒寫隨機(jī)數(shù)表,并在隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,結(jié)束;步驟703:比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址加上燒寫程序的塊長度是否大于表首地址,大于則執(zhí)行步驟704,否則執(zhí)行步驟705;步驟704:在下一塊燒寫程序的首地址與表首地址之間的被燒寫程序后面填充隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,再按塊將剩余的隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,結(jié)束;步驟705:向目標(biāo)芯片中燒寫一塊被燒寫程序,然后返回繼續(xù)執(zhí)行步驟701。綜上所述,本發(fā)明實施例提供的智能編程器及編程方法,利用其內(nèi)置的智能編程功能,在對固件程序編程的過程中實現(xiàn)自動嵌入隨機(jī)數(shù)表的功能,能夠使即便是批量生產(chǎn)的電子產(chǎn)品,由于在每個電子產(chǎn)品中嵌入的隨機(jī)數(shù)表都是不同的,都能夠利用嵌入在固件程序中的隨機(jī)數(shù)表使電子產(chǎn)品內(nèi)部主控芯片連接的存儲器件的存儲規(guī)則及加密規(guī)則等互不相同,大大提高電子產(chǎn)品的數(shù)據(jù)安全性,有效避免被破解的風(fēng)險;另外,本發(fā)明實施例提供的智能編程器及編程方法無需對計算機(jī)的硬件做任何改動,生產(chǎn)人員可以像使用現(xiàn)有編程器的方法來使用本發(fā)明實施例提供的智能編程器,使用戶及生產(chǎn)人員的操作更簡單方便,不會增加開發(fā)成本及培訓(xùn)成本。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1、一種智能編程器,其特征是包括設(shè)置模塊、表生成模塊、編程模塊、程序存儲模塊和編程接口,所述設(shè)置模塊和表生成模塊分別與編程模塊相連,同時設(shè)置模塊還與表生成模塊相連;其中,所述設(shè)置模塊用于設(shè)置所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,所述表首地址為所述隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置;所述表首地址和表長度的數(shù)值分別為所述程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表表首地址和表長度的數(shù)值;所述表生成模塊,用于生成所述設(shè)置模塊中設(shè)置的表長度的隨機(jī)數(shù)表;所述編程模塊,用于通過所述編程接口將所述表生成模塊生成的隨機(jī)數(shù)表及所述程序存儲模塊中存儲的被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中,其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置與所述設(shè)置模塊中設(shè)置的表首地址數(shù)值相同,替換被燒寫程序中設(shè)置的所述常量表。2、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述表首地址和表長度數(shù)值的組合分別與一個目標(biāo)芯片類型相對應(yīng),所述設(shè)置模塊設(shè)置的表首地址和表長度的數(shù)值組合為一種或多種。3、根據(jù)權(quán)利要求1或2所述的智能編程器,其特征是所述的設(shè)置模塊具體為存儲模塊,用于存儲所述程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度。4、根據(jù)權(quán)利要求1或2所述的智能編程器,其特征是所述設(shè)置模塊具體為獲取模塊,用于根據(jù)預(yù)先定義的特征值,在所述程序存儲模塊存儲的被燒寫程序中查找并獲取表首地址和表長度,以此作為所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度。5、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述表生成模塊為隨機(jī)數(shù)生成芯片或振蕩電路。6、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述表生成模塊為內(nèi)置偽隨機(jī)數(shù)生成算法的微控制芯片。7、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述表生成模塊生成的隨機(jī)數(shù)表具體為全排列隨機(jī)數(shù)表。8、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述編程模塊具體包括替換單元,用于將生成模塊生成的隨機(jī)數(shù)表替換程序存儲模塊存儲的被燒寫程序中的所述常量表;燒寫單元,用于將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中。9、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述編程模塊具體包括比較單元,用于在燒寫數(shù)據(jù)前以及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的當(dāng)前燒寫首地址數(shù)值是否等于設(shè)置模塊中設(shè)置的表首地址數(shù)值,等于則啟動嵌入燒寫單元,否則比較目標(biāo)芯片的當(dāng)前燒寫地址數(shù)值加上塊長度數(shù)值是否大于所述設(shè)置模塊中設(shè)置的表首地址,否則啟動程序燒寫單元,大于則啟動填充燒寫單元;程序燒寫單元,用于向目標(biāo)芯片中燒寫一塊所述被燒寫程序后,跳轉(zhuǎn)執(zhí)行所述比較單元;嵌入燒寫單元,用于向目標(biāo)芯片中按塊燒寫所述隨機(jī)數(shù)表,并在所述隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中;填充燒寫單元,用于在下一塊燒寫程序的首地址與設(shè)置模塊表首地址之間的被燒寫程序后面填充所述隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,再按塊將剩余的所述隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中。10、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述的編程模塊為控制芯片。11、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述設(shè)置模塊為片外存儲器件或與所述編程模塊集成在一顆控制芯片中。12、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述程序存儲模塊為片外存儲器件或與所述編程模塊集成在一顆控制芯片中。13、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述表生成模塊為與所述編程模塊集成在一顆控制芯片中。14、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述智能編程器還包括用以將所述編程器連接到計算機(jī)的通信接口。15、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述智能編程器還包括用于指示當(dāng)前編程器及其電源的工作狀態(tài)的狀態(tài)指示模塊。16、根據(jù)權(quán)利要求1所述的智能編程器,其特征是所述智能編程器還包括為編程器提供電源管理的電源回路。17、一種智能編程方法,其特征是包括下列步驟…預(yù)先設(shè)置一組或多組表首地址和表長度,分別與一個或多個目標(biāo)芯片類型相對應(yīng),所述表首地址指向隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置,所述表首地址和表長度分別與被燒寫程序中設(shè)置的常量表表首地址和表長度一致;---生成所述表長度的隨機(jī)數(shù)表,將所述隨機(jī)數(shù)表及被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中,其中寫入目標(biāo)芯片中的隨機(jī)數(shù)表的表首位置為所述預(yù)先設(shè)置的表首地址,替換被燒寫程序中設(shè)置的所述常量表。18、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述設(shè)置表首地址和表長度的方法具體為存儲所述被燒寫程序中設(shè)置的常量表的表首地址和表長度,作為所述隨機(jī)數(shù)表的表首地址和表長度。19、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述設(shè)置表首地址和表長度的方法具體為根據(jù)預(yù)先定義的特征值,在所述被燒寫程序中查找并獲取表首地址和表長度,以此作為所述隨機(jī)數(shù)表的表首地址和表長度。20、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述以嵌套的方式燒寫具體包括下列步驟-將生成的隨機(jī)數(shù)表替換被燒寫程序中的所述常量表;--將替換隨機(jī)數(shù)表的被燒寫程序按塊燒寫到目標(biāo)芯片中。21、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述以嵌套的方式燒寫具體包括下列步驟步驟(1)在燒寫前及每燒寫一塊數(shù)據(jù)后,比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址是否等于所述表首地址,等于則向目標(biāo)芯片中按塊燒寫所述隨機(jī)數(shù)表,并在所述隨機(jī)數(shù)表燒寫完后,將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,否則執(zhí)行步驟(2)比較目標(biāo)芯片的下一塊燒寫程序的燒寫首地址加上燒寫程序的塊長度是否大于所述表首地址,大于則在下一塊燒寫程序的首地址與所述表首地址之間的被燒寫程序后面填充所述隨機(jī)數(shù)表滿足一個塊的長度后燒寫到目標(biāo)芯片中,再按塊將剩余的所述隨機(jī)數(shù)表燒寫完成,然后將剩余被燒寫程序越過所述表長度后繼續(xù)按塊燒寫到目標(biāo)芯片中,否則向目標(biāo)芯片中燒寫一塊所述被燒寫程序,燒寫完成后繼續(xù)執(zhí)行步驟(1),直到程序燒寫結(jié)束。22、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述隨機(jī)數(shù)表的生成方法為利用隨機(jī)數(shù)生成芯片生成,或利用振蕩電路生成。23、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述隨機(jī)數(shù)表的生成方法為利用偽隨機(jī)數(shù)生成算法生成。24、根據(jù)權(quán)利17所述的智能編程方法,其特征是所述所述隨機(jī)數(shù)表具體為全排列隨機(jī)數(shù)表。全文摘要提高電子產(chǎn)品的數(shù)據(jù)安全性,有效避免被破解的智能編程器,技術(shù)方案是包括設(shè)置模塊、表生成模塊、編程模塊、程序存儲模塊和編程接口,其中設(shè)置模塊和表生成模塊分別與編程模塊相連;設(shè)置模塊用于設(shè)置所述表生成模塊生成的隨機(jī)數(shù)表的表首地址和表長度,表首地址為所述隨機(jī)數(shù)表向目標(biāo)芯片中燒寫的表首位置;表首地址和表長度的數(shù)值分別為所述程序存儲模塊中存儲的被燒寫程序中設(shè)置的常量表表首地址和表長度的數(shù)值;表生成模塊,用于生成所述設(shè)置模塊中設(shè)置的表長度的隨機(jī)數(shù)表;編程模塊,用于通過編程接口將表生成模塊生成的隨機(jī)數(shù)表及程序存儲模塊中存儲的被燒寫程序以嵌套的方式燒寫到目標(biāo)芯片中。本發(fā)明還提供一種編程器的變成方法。文檔編號G06F9/445GK101246432SQ200810102738公開日2008年8月20日申請日期2008年3月26日優(yōu)先權(quán)日2008年3月26日發(fā)明者于華章,舟陸申請人:北京飛天誠信科技有限公司