PIC18F4525芯片解密等PIC18系列单片机解密目前已经成为橙盒科技的典型优势解密服务项目之一,随着我们在PIC18系列单片机解密技术研究中的全线突破,目前我们可以针对该系列大部分典型芯片提供极具可靠性和经济价值的解密方案,解密成功率高、可靠性强,解密周期短、价格低。
这里,我们仅以PIC18F4525芯片解密为例,针对PIC18F4525芯片的闪存程序存储器技术做简单介绍,供大家在芯片解密项目合作过程中进行技术理解和沟通。
橙盒科技长期专业提供PIC18F4525芯片解密等PIC18系列单片机解密服务,如果客户有PIC18F4525芯片解密需求,请与我们联系咨询更多解密合作详情
橙盒科技芯片解密咨询电话:0755- 82221641,82175584
咨询QQ:1357273089,994589503
Email:chkeji@126.com <mailto:chkeji@126.com>
PIC18F4525闪存程序存储器主要特征及相关技术
一、闪存程序存储器
正常工作状态下,闪存程序存储器在整个VDD 范围内都是可读写可擦除的。读程序存储器时,每次为一个字节。写程序存储器时,每次为一个64 字节的块。擦除程序存储器时,也是每次一个64 字节的块。用户代码不能执行批量擦除操作。在擦写程序存储器时,系统会停止取指令直到操作完成。擦写期间不能访问该程序存储器,因此也就无法执行代码。可用内部编程定时器来终止程序存储器的擦写操作。
写入程序存储器的值不一定非要是有效指令。执行存储无效指令的程序存储器单元会导致执行NOP。
二、读闪存程序存储器
TBLRD 指令用于从程序存储器获取数据并放入数据RAM。表读操作每次从程序存储器读取一个字节。TBLPTR 指向程序存储器空间的某个字节地址。执行TBLRD 指令将把指向的字节装入TABLAT。此外,还可以自动修改TBLPTR 以进行下一个表读操作。内部程序存储器通常以字为单位进行组织。由地址的最低有效位来选择字的高字节或者低字节。
三、擦除闪存程序存储器
最小擦除块大小为32 字或64 字节。只有通过使用外部编程器,或通过ICSP 控制,才能够批量擦除更大的程序存储器块。闪存阵列不支持字擦除。当单片机本身开始一个擦除过程时,会擦除一个64 字节的程序存储器块。16 个最高有效位TBLPTR<21:6>指向要擦除的块。TBLPTR<5:0> 被忽略。擦除操作由EECON1 寄存器控制。必须将EEPGD 位置1 以指向闪存程序存储器。WREN 位必须被置1 以使能写操作。FREE 位被置1 以选择擦除操作。为了安全起见,必须使用EECON2 的写启动序列。擦除内部闪存必须执行长写操作。在长写周期中,指令停止执行。由内部编程定时器终止长写操作。
闪存程序存储器擦除序列
擦除内部程序存储器单元块的步骤如下:
1. 将要擦除的行地址装入表指针寄存器。
2. 设置EECON1 寄存器来执行擦除操作:
将EEPGD 位置1 以指向程序存储器;
将CFGS 位清零以访问程序存储器;
将WREN 位置1 以使能写操作;
将FREE 位置1 以使能擦除操作。
3. 禁止中断。
4. 向EECON2 写入55h。
5. 向EECON2 写入0AAh。
6. 将WR 位置1。这将开始行擦除周期。
7. CPU 在擦除期间将会停止工作(使用内部定时器约为2 ms)。
8. 重新允许中断。
四、写闪存程序存储器
最小编程块大小为32 字或64 字节。不支持字或字节编程。在内部使用表写操作将需要写入闪存存储器的内容装入保持寄存器中。表写操作使用64 个保持寄存器进行编程。
由于表锁存器(TABLAT)只是单字节寄存器,所以对于每次编程操作, TBLWT 指令都必须执行64 次。因为只写保持寄存器,所以所有的表写操作实际上都是短写。更新64 个保持寄存器后,必须写EECON1寄存器,以便启动长写周期开始编程操作。对内部闪存编程要求使用长写操作。在长写周期中,指令停止执行。内部编程定时器将终止长写操作。
由EEPROM 片上定时器控制写入的时间。写入/ 擦除电压则由片上的电荷泵产生,该电荷泵可以工作在器件的电压范围内。
写入闪存程序存储器操作顺序
内部程序存储器单元的编程事件顺序应为:
1. 将64 字节读入RAM。
2. 必要时更新RAM 中的数据值。
3. 把要擦除的目标地址装入表指针寄存器。
4. 执行行擦除。
5. 将要写入的第一个字节的地址装入表指针寄存器。
6. 将64 个字节写入保持寄存器(自动递增)。
7. 设置EECON1 寄存器来执行写操作:
将EEPGD 位置1 以指向程序存储器;
将CFGS 位清零以访问程序存储器;
将WREN 位置1 以使能字节写操作。
8. 禁止中断。
9. 向EECON2 写入55h。
10. 向EECON2 写入0AAh。
11. 将WR 位置1。这将启动写周期。
12. CPU 在写入期间将会停止工作(使用内部定时器约为2 ms)。
13. 重新允许中断。
14. 验证存储器(表读)。
























