反向工程法律声明 - 芯片解密实验室 - 服务流程

全国服务热线:0755-83321212 / 83679983

当前位置:首页->芯片解密技术->  正文

PIC-OTP单片机再烧写的条件及操作步骤

  1.关于PIC-OTP单片机
  OTP单片机的内部结构和其对应的可反复烧写芯片的内部结构十分相似,只不过OTP单片机是一次烧写的。具体分析,OTP芯片内部的程序存储器地址只能一次占用而只能烧写一次,而数据存储器的地址(包括专用寄存器和通用寄存器)和PICFlash(闪速存储器)芯片一样,可以多次使用。所以,OTP芯片内部的程序存储器地址第一次使用后绝不能再用,但剩余的地址均可再使用,直到多次编程,把程序存储器地址全部用完为止,这就是OTP芯片再烧写的约束条件。
  2.关于再烧写的准备知识
  PIC Flash芯片可以多次反复重写,而OTP芯片只能再写。再写的次数,取决于每次烧写时,程序占用程序存储器的多少,这就限制了再烧写的次数。
  所以,对PIC-OTP芯片烧写前,应详细了解所用芯片的技术资料。对初学者,编辑的源程序指令数应尽可能地少,只要达到某种单一功能即可,以便实现OTP芯片的多次再写实验。例如用PIC12C5××芯片实现多次再写时,可按“PIC12C5××单片机编程方法”中的PIC01.ASM、PIC02.ASM源程序出发,逐步增加其指令条数,进行反复再写,即可达到直接用OTP单片机学习目的。
  有人提出,现已有PIC12CF675/629的Flash芯片,是否可以先学习该芯片的编程方法,再直接借鉴到PIC12C5××的直接编程,这种想法应当说有一定道理,但实际是难于实现的,因为PIC12F675/629单片机的初始化与PIC12C5××的初始化是不相同的,不能直接借鉴。要用PIC12C5××芯片编程,最好的学习方式是直接使用PIC12C5××芯片进行编程学习。正因为如此,这里介绍的PIC12C5508/509芯片的再烧写,就显得特别有用了。
  3. PIC12C5××再烧写操作步骤
  (1)第一次编程。第一次对PIC12C5××芯片编程时,首先按正常的方法建立其相应功能的源程序,但在源程序初始化时,在复位矢量(ORG0)之后,应对程序存储器的地址,留上20~30个空地址,再开始存放程序,目的是给芯片再写时,留下需外加指令的空间。具体的操作指令建议为:ORG0;复位矢量GOTOMain;转到主程序ORGD'30‘;从存储器地址30开始Main……;存放程序(1~29为空地址)
  (2)第二次编程。第二次对PIC12C5××编程时,仍按正常的方法建立其相应功能的源程序,但在源程序初始化时,在复位矢量之后(ORG0)加NOP空操作指令,空操作指令的条数由芯片型号而定,对PIC12C508芯片仅加一条NOP:对PIC12C509应加两条NOP,同时第一次已用过的程序存储器地址,不能再用,若第一次用了ORGD'30‘,应改为ORGD‘××’,其××的值应该按照D'30‘开始已占用了地址之后未用的地址定义。
  (3)第三次编程。第三次再对PIC12C5××芯片烧写时,仍按正常的方法建立其相应功能的源程序,但在初始化时,在复位矢量(ORG0)之后,在第二次再烧写已加NOP空指令之后,继续再加NOP。同理NOP的条数由芯片型号而定。按上述思维方式,即可第五次、第六次……再编程,直到把PIC12C5××芯片内部程序存储器空间(地址)分别全部用完为止。