<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC單片機之ICSP

PIC單片機之ICSP

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
今次要說(shuō)的是ICSP。ICSP,全稱(chēng)In-Circuit Serial Programming,在線(xiàn)串行編程。這行英文和ICSP這四個(gè)字母,一般使用時(shí)都帶有TM標記的,也就是說(shuō),這是MICROCHIP的商標。也是MC獨有的吧。呵呵。

從名字可以看出來(lái),ICSP是一種編程方法,也就是說(shuō)是一種燒寫(xiě)手段。這種手段可以在線(xiàn)燒寫(xiě)——即不需要將芯片取下就可以在板子上燒寫(xiě)。而這種燒寫(xiě)方法使用串行的數據。在線(xiàn)燒寫(xiě)其實(shí)也不是什么新聞了,大家熟悉的TI的DSP,一向可以使用JTAG口進(jìn)行燒寫(xiě),那就是標準的在線(xiàn)燒寫(xiě)。

本文引用地址:http://dyxdggzs.com/article/201611/321773.htm

MC的ICSP,使用起來(lái)極為方便,應用ICSP進(jìn)行燒寫(xiě),只需要使用芯片上的5個(gè)腳就可以,其中包括VDD VSS,這兩個(gè)電源一定要供上。然后就是VPP編程電壓,這個(gè)是肯定的,對FLASH進(jìn)行燒寫(xiě),當然需要高一點(diǎn)的電壓。隨后就是輸入的數據和時(shí)鐘兩個(gè)腳。一般是PORTB口的RB6和RB7——當然,那些不分PORT只有GPIO的芯片請參看DATASHEET找到相應的ICSP口——那么也就是說(shuō),其實(shí),真正的和燒寫(xiě)數據有關(guān)的就兩個(gè)腳。標準的串行的風(fēng)格呢,呵呵。

其原理,MICROCHIP官方?jīng)]有說(shuō)的太多,只是對每一種芯片都給了一個(gè)Programming Specification。上面詳細給出了通過(guò)ICSP方式連接芯片時(shí),對芯片內存儲空間操作的各指令的具體形式。從那些文檔中推斷,我們可以簡(jiǎn)單的認為在PIC芯片中,燒寫(xiě)模式下,FLASHROM和外部接口之間有一個(gè)“處理接口”,該接口從外部通過(guò)串行方式接收命令,移位譯碼后進(jìn)行外部設備需要的操作,隨后如需要結果的話(huà)就把結果同樣串行輸出。當然實(shí)際上這個(gè)所謂的接口可能只是一塊電路。但是可以肯定的是,FLASH并不是暴露在外直接和外界連接的,而是先要連到ICSP模塊,然后才能連上外界。

這就有個(gè)好處,就是加密安全性的問(wèn)題。因為FLASHROM并不是直接和外界相連,所以外界如果要讀取FLASHROM內部的內容,正常情況下就必須通過(guò)ICSP模塊。而ICSP模塊如果檢測到加密位有設置的話(huà),那就拒絕執行外部的相應的讀取命令,返回全0值。但是其實(shí),數據在芯片內部并沒(méi)有被加密,所以正常的程序訪(fǎng)問(wèn)不會(huì )受到干擾。

呵呵,不過(guò)其實(shí),我想現在的芯片應該都是這個(gè)原理來(lái)加密的吧。要不然讓軟件自己實(shí)現軟解密再執行也忒有點(diǎn)難度了。。那么這個(gè)原理加密的芯片就有幾點(diǎn)不好,第一就是數據在FLASHROM里面是未加密的。也就是說(shuō),數據的安全性完全取決于ICSP模塊的安全性。如果ICSP模塊設計有任何的考慮不周,那么程序基本就等于沒(méi)加密。。事實(shí)上MICROCHIP的某些老產(chǎn)品的ICSP模塊設計就有問(wèn)題。我手里一塊解密的16F73芯片,據說(shuō)只是使用了一些很簡(jiǎn)單的手法就繞過(guò)了ICSP加密。。。另外,還是因為數據沒(méi)有加密,所以,物理解密仍然是不可防御的。只要別人能夠到達你的FLASHROM區域,那么你的程序就宣告破解了。這一點(diǎn)是沒(méi)有辦法的。目前所有的單片機都會(huì )有這樣的問(wèn)題。但是貌似TI的DSP在這一塊做的非常好。據前輩透露:TI的DSP內核是兩層,上層是應用及處理層,下層才是FLASHROM層。這樣即使物理法拿出了內核,也會(huì )因為內核是兩層,無(wú)法較好的去除上一層而露出下一層的FLASHROM。從而大大加強了芯片的安全性。。。當然,同時(shí)也大大加強了成本。。

另外要補充一點(diǎn)的是:ICSP這種方式,外部實(shí)現是極為簡(jiǎn)單的,只要能提供完全符合Programming Specification的信號就行。所以網(wǎng)上可以看見(jiàn)很多種骨灰級玩家自制的燒寫(xiě)器。使用起來(lái)和原廠(chǎng)的PICSTART+之類(lèi)沒(méi)什么區別——事實(shí)上,也有自制PICSTART+的。。——并且,在有新芯片出來(lái)時(shí),燒寫(xiě)器可以很方便的升級,只要重寫(xiě)一下燒寫(xiě)器內部芯片的代碼,加入新芯片的燒寫(xiě)命令代碼就行了。而燒寫(xiě)器的內部芯片。。一般也是PIC。。??梢訧CSP升級。。嗯。。用ICSP升級PIC以支持新的PIC的ICSP。。是不是很像繞口令?呵呵。。

那么,ICSP這個(gè)東西具體應該怎么使用呢?呵呵,這個(gè)問(wèn)題問(wèn)的好。首先我們要解釋一點(diǎn)就是:除了一些很老的產(chǎn)品如16C5X系列之外,基本所有的MICROCHIP芯片均采用ICSP技術(shù)。而且,只要采用了ICSP技術(shù),那么燒寫(xiě)時(shí)肯定使用ICSP燒寫(xiě)。也就是說(shuō):在燒芯片時(shí),雖然看起來(lái)是把芯片的28pin或者40pin全部放在燒寫(xiě)器的芯片座上的,但是實(shí)際上,起作用的也就那5個(gè)腳。。。很驚訝吧,呵呵。有時(shí)候有的東西就是這么神奇。去看看自制燒寫(xiě)器的原理圖就明白了~

那么,真正用在板子上的話(huà),就是把我們要用到的5個(gè)腳引出來(lái),就可以使用ICSP了。但是,當然也有需要注意的地方:首先,VPP腳,就是芯片的MCLR腳,一般是1腳,在編程時(shí)會(huì )有大約13V的電壓。鑒于一般設計時(shí),會(huì )將該腳連接一5V電源電路,所以就需要注意確保,燒寫(xiě)的13V電壓不會(huì )倒灌回5V電源電路造成損壞。而且,根據Programming Specification,燒寫(xiě)時(shí)VDD和VPP加電壓的時(shí)序是需要保證的,所以在VPP上不要有太大的電容負載,避免造成電壓上升時(shí)間過(guò)慢從而影響到燒寫(xiě)。另一方面,燒寫(xiě)器會(huì )供給芯片5V的電源,所以一般不需要自己外供電。但是一般的編程器供電能力有限,據稱(chēng)也就是幾個(gè)mA的級別。就算PROMATE II這類(lèi)自帶專(zhuān)門(mén)ICSP口的工業(yè)級燒寫(xiě)器,其輸出電流也不過(guò)幾十個(gè)mA而已。所以,如果你的板子工作電流較大,那就需要自己供電,或者將芯片的供電電路設計成可隔離的,燒寫(xiě)時(shí)斷開(kāi)芯片的VDD和外部電源的連接,燒寫(xiě)器的供電僅供給芯片即可。然后,作為ICSP數據的通路,RB6和RB7在燒寫(xiě)時(shí),最好也和外部電路隔離開(kāi),就是要保證其上傳輸的時(shí)鐘和數據不被外部電路干擾而造成失真。而且,還有一點(diǎn)就是,使用時(shí)要保證,你的ICSP連接線(xiàn)和芯片是直接連接的,其間尤其不能有二極管等單向通路元件,否則會(huì )造成芯片認不出等異?,F象。

另一方面,燒寫(xiě)器的連接的話(huà),專(zhuān)業(yè)級的燒寫(xiě)器會(huì )提供ICSP接口,應該就是一個(gè)5芯的排線(xiàn),可以接出插到目標板上。如果沒(méi)有這種昂貴的專(zhuān)業(yè)燒寫(xiě)器,只有簡(jiǎn)單的燒寫(xiě)器的話(huà),可以考慮自制一個(gè)轉換線(xiàn),就是一端為28或者40的雙排針接頭(比如一個(gè)28pin或者40pin的芯片座就是一個(gè)很好的選擇),然后將這些針中對應的腳接出來(lái),做成一個(gè)5芯排線(xiàn)使用。這類(lèi)轉接線(xiàn)尤其需要注意的是:第一,使用時(shí)插在燒寫(xiě)器上的雙排針接頭不要插反。。插反的話(huà),肯定沒(méi)有效果。。。第二就是,由于負載能力有限,建議線(xiàn)長(cháng)不要超過(guò)20cm。

關(guān)于ICSP線(xiàn)的自制,我過(guò)段時(shí)間可能要做幾個(gè)試驗,因為公司的燒寫(xiě)器是PICSTART,而準備使用貼片的PIC,所以ICSP是必要的。所以轉換線(xiàn)是必要的。。。如果成功實(shí)現我盡量把制作方法和注意事項寫(xiě)出來(lái)。呵呵

其實(shí),ICSP給人的感覺(jué)好像就是一個(gè)集成的BOOTLOADER一樣。只是ICSP在正常使用時(shí)并不需要,而不像BOOTLOADER那樣正常使用時(shí)還需要把外部代碼載入內存。。。而且ICSP對加密還是有一點(diǎn)好處的。不過(guò)感覺(jué)好像還是有點(diǎn)脆弱。。呵呵。。但是越新的芯片,其ICSP模塊應該越安全。各位選型時(shí)也不妨注意一下。

最后順便說(shuō)一句,如果真的覺(jué)得ICSP很脆弱,可能非物理就能破解的話(huà),那么我們可以使用一個(gè)狠招:ICSP的靈魂在于RB6和RB7,那么程序設計時(shí),在程序中不要使用這兩個(gè)腳。然后燒寫(xiě)完成后,對這兩腳使用加大電流等方法直接使內部電路報廢,就是把這兩個(gè)腳直接燒掉。那么,恭喜你,你的芯片的FLASHROM使用軟件法應該再也不能訪(fǎng)問(wèn)了,包括你自己再想燒也燒不了了。這個(gè)芯片目前就是一塊外界不可訪(fǎng)問(wèn),只能自己工作的芯片了~呵呵……



關(guān)鍵詞: PIC單片機ICS

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>