今次要说的是ICSP。ICSP,全称In-Circuit Serial Programming,在线串行编程。这行英文和ICSP这四个字母,一般运用时都带有TM符号的,也便是说,这是MICROCHIP的商标。也是MC独有的吧。呵呵。
从姓名能够看出来,ICSP是一种编程办法,也便是说是一种烧写办法。这种办法能够在线烧写——即不需求将芯片取下就能够在板子上烧写。而这种烧写办法运用串行的数据。在线烧写其实也不是什么新闻了,咱们了解的TI的DSP,一贯能够运用JTAG口进行烧写,那便是规范的在线烧写。
MC的ICSP,运用起来极为便利,运用ICSP进行烧写,只需求运用芯片上的5个脚就能够,其间包含VDD VSS,这两个电源一定要供上。然后便是VPP编程电压,这个是必定的,对FLASH进行烧写,当然需求高一点的电压。随后便是输入的数据和时钟两个脚。一般是PORTB口的RB6和RB7——当然,那些不分PORT只需GPIO的芯片请参看DATASHEET找到相应的ICSP口——那么也便是说,其实,真实的和烧写数据有关的就两个脚。规范的串行的风格呢,呵呵。
其原理,MICROCHIP官方没有说的太多,仅仅对每一种芯片都给了一个Programming Specification。上面详细给出了经过ICSP办法衔接芯片时,对芯片内存储空间操作的各指令的详细办法。从那些文档中揣度,咱们能够简略的以为在PIC芯片中,烧写形式下,FLASHROM和外部接口之间有一个“处理接口”,该接口从外部经过串行办法接纳指令,移位译码后进行外部设备需求的操作,随后如需求成果的话就把成果相同串行输出。当然实际上这个所谓的接口或许仅仅一块电路。可是能够必定的是,FLASH并不是显露在外直接和外界衔接的,而是先要连到ICSP模块,然后才干连上外界。
这就有个优点,便是加密安全性的问题。由于FLASHROM并不是直接和外界相连,所以外界假如要读取FLASHROM内部的内容,正常情况下就必须经过ICSP模块。而ICSP模块假如检测到加密位有设置的话,那就拒绝履行外部的相应的读取指令,回来全0值。可是其实,数据在芯片内部并没有被加密,所以正常的程序拜访不会遭到搅扰。
呵呵,不过其实,我想现在的芯片应该都是这个原理来加密的吧。要不然让软件自己完成软解密再履行也忒有点难度了。。那么这个原理加密的芯片就有几点欠好,榜首便是数据在FLASHROM里边是未加密的。也便是说,数据的安全性彻底取决于ICSP模块的安全性。假如ICSP模块规划有任何的考虑不周,那么程序根本就等于没加密。。事实上MICROCHIP的某些老产品的ICSP模块规划就有问题。我手里一块解密的16F73芯片,听说仅仅运用了一些很简略的办法就绕过了ICSP加密。。。别的,仍是由于数据没有加密,所以,物理解密仍然是不行防护的。只需他人能够抵达你的FLASHROM区域,那么你的程序就宣告破解了。这一点是没有办法的。现在一切的单片机都会有这样的问题。可是形似TI的DSP在这一块做的非常好。据长辈泄漏:TI的DSP内核是两层,上层是运用及处理层,基层才是FLASHROM层。这样即便物理法拿出了内核,也会由于内核是两层,无法较好的去除上一层而显露下一层的FLASHROM。然后大大加强了芯片的安全性。。。当然,一起也大大加强了本钱。。
别的要弥补一点的是:ICSP这种办法,外部完成是极为简略的,只需能供应彻底符合Programming Specification的信号就行。所以网上能够看见很多种骨灰级玩家克己的烧写器。运用起来和原厂的PICSTART+之类没什么差异——事实上,也有克己PICSTART+的。。——并且,在有新芯片出来时,烧写器能够很便利的晋级,只需重写一下烧写器内部芯片的代码,参加新芯片的烧写指令代码就行了。而烧写器的内部芯片。。一般也是PIC。。。能够ICSP晋级。。嗯。。用ICSP晋级PIC以支撑新的PIC的ICSP。。是不是很像绕口令?呵呵。。
那么,ICSP这个东西详细应该怎样运用呢?呵呵,这个问题问的好。首要咱们要解说一点便是:除了一些很老的产品如16C5X系列之外,根本一切的MICROCHIP芯片均选用ICSP技能。并且,只需选用了ICSP技能,那么烧写时必定运用ICSP烧写。也便是说:在烧芯片时,尽管看起来是把芯片的28pin或许40pin悉数放在烧写器的芯片座上的,可是实际上,起作用的也就那5个脚。。。很惊奇吧,呵呵。有时候有的东西便是这么奇特。去看看克己烧写器的原理图就理解了~
那么,真实用在板子上的话,便是把咱们要用到的5个脚引出来,就能够运用ICSP了。可是,当然也有需求留意的当地:首要,VPP脚,便是芯片的MCLR脚,一般是1脚,在编程时会有大约13V的电压。鉴于一般规划时,会将该脚衔接一5V电源电路,所以就需求留意确保,烧写的13V电压不会倒灌回5V电源电路形成损坏。并且,依据Programming Specification,烧写时VDD和VPP加电压的时序是需求确保的,所以在VPP上不要有太大的电容负载,防止形成电压上升时间过慢然后影响到烧写。另一方面,烧写器会供应芯片5V的电源,所以一般不需求自己外供电。可是一般的编程器供电才能有限,据称也便是几个mA的等级。就算PROMATE II这类自带专门ICSP口的工业级烧写器,其输出电流也不过几十个mA罢了。所以,假如你的板子作业电流较大,那就需求自己供电,或许将芯片的供电电路规划成可阻隔的,烧写时断开芯片的VDD和外部电源的衔接,烧写器的供电仅供应芯片即可。然后,作为ICSP数据的通路,RB6和RB7在烧写时,最好也和外部电路阻隔开,便是要确保其上传输的时钟和数据不被外部电路搅扰而形成失真。并且,还有一点便是,运用时要确保,你的ICSP衔接线和芯片是直接衔接的,其间特别不能有二极管等单向通路元件,否则会形成芯片认不出等异常现象。
另一方面,烧写器的衔接的话,专业级的烧写器会供应ICSP接口,应该便是一个5芯的排线,能够接出插到方针板上。假如没有这种贵重的专业烧写器,只需简略的烧写器的话,能够考虑克己一个转化线,便是一端为28或许40的双排针接头(比方一个28pin或许40pin的芯片座便是一个很好的挑选),然后将这些针中对应的脚接出来,做成一个5芯排线运用。这类转接线特别需求留意的是:榜首,运用时插在烧写器上的双排针接头不要插反。。插反的话,必定没有作用。。。第二便是,由于负载才能有限,主张线长不要超越20cm。
关于ICSP线的克己,我过段时间或许要做几个实验,由于公司的烧写器是PICSTART,而预备运用贴片的PIC,所以ICSP是必要的。所以转化线是必要的。。。假如成功完成我尽量把制作办法和留意事项写出来。呵呵
其实,ICSP给人的感觉如同便是一个集成的BOOTLOADER相同。仅仅ICSP在正常运用时并不需求,而不像BOOTLOADER那样正常运用时还需求把外部代码载入内存。。。并且ICSP对加密仍是有一点优点的。不过感觉如同仍是有点软弱。。呵呵。。可是越新的芯片,其ICSP模块应该越安全。各位选型时也无妨留意一下。
最终趁便说一句,假如真的觉得ICSP很软弱,或许非物理就能破解的话,那么咱们能够运用一个狠招:ICSP的魂灵在于RB6和RB7,那么程序规划时,在程序中不要运用这两个脚。然后烧写完成后,对这两脚运用加大电流等办法直接使内部电路作废,便是把这两个脚直接烧掉。那么,祝贺你,你的芯片的FLASHROM运用软件法应该再也不能拜访了,包含你自己再想烧也烧不了了。这个芯片现在便是一块外界不行拜访,只能自己作业的芯片了~呵呵……