1.本发明涉及一种用于flash读保护改变的
测试电路及方法,属于
芯片测试技术领域。
背景技术:
2.flash是存储芯片的一种,通过特定的
程序可以修改里面的数据。flash在电子以及半导体领域内往往表示flash memory的意思,即平时所说的“闪存”。flash存储器又称闪存,它结合了rom和ram的长处,不仅具备电子可擦除可编程(eeprom)的性能,还可以快速读取数据(nvram的优势),使数据不会因为断电而丢失。
3.在实际发布的产品中,例如:在stm32芯片的内部flash存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部flash的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此,stm32芯片提供了多种方式保护内部flash的程序不被非法读取,但在默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部flash选项字节(option bytes)中的配置。
4.芯片的flash的读保护等级分为无保护、只读保护和禁止调试,芯片的flash的读保护等级发生改变,会引起mass erase,即此时写入flash主体部分的程序内容会全部被擦除,以达到保护用户代码安全的目的,这样发生读保护等级改变之后,由于测试程序被全部擦除了,所以这样后面用于验证flash发生mass erase的程序就无法继续执行了。此外,改变读保护等级的方式是通过修改
寄存器flash_obr的读保护选项字节,并且需要调用系统函数system reset,使得程序重启之后才会生效,这里的问题就是程序重启之后,程序会重新从第一行开始执行,如果不做处理,程序就会进入不断重启的死循环。
技术实现要素:
5.本发明的目的在于提供一种用于flash读保护改变的测试电路及方法,旨在解决flash读保护等级改变引起程序擦除而无法测试的问题。
6.为实现上述目的,本发明提供如下技术方案:一种用于flash读保护改变的测试电路,包括芯片、上位机和程序下载器,芯片内包括flash模块和sram模块,所述芯片电源引脚连接相应电压电源,所述芯片gnd引脚接地,所述芯片boot0和boot1接上拉电阻连接至电源,所述程序下载器一端连接芯片jtag串口,程序下载器另一端连接上位机。
7.本发明还公开了一种用于flash读保护改变的测试方法,采用上述的用于flash读保护改变的测试电路,具体包括以下步骤:(1)完成上述测试电路的硬件连接工作;(2)将测试flash的程序通过下载器烧录到芯片的sram里,并从sram启动;(3)判断flash寄存器flash_obr是否为初始值,若是,则向flash中写入内容,并对flash寄存器flash_obr写入标记值,重启程序,让标记值生效,若不是,则执行下一步骤;(4)判断flash寄存器flash_obr是否为写入的标记值,若是,修改 flash中读保护
位的值,重启程序,让读保护状态改变生效,若不是,则执行下一步骤;(5)判断flash读保护位的值是否为步骤(4)中修改的值,若是,则通过测试程序对步骤(3)中写入flash的内容进行检测,若不是,则说明flash的读保护无法开启,则无法对flash读保护状态改变进行测试;(6)通过测试程序判断步骤(3)中写入flash的内容是否被擦除,若是,则验证了芯片flash读保护等级的改变会引起程序擦除,若不是,则说明芯片flash读保护等级的改变不会引起程序擦除。
8.进一步地,上述用于flash读保护改变的测试方法,其中:所述重启程序通过调用芯片程序函数system reset执行。
9.进一步地,上述用于flash读保护改变的测试方法,其中:所述步骤(3)中向flash中写入内容具体为向flash主体部分写入内容。
10.进一步地,上述用于flash读保护改变的测试方法,其中:所述步骤(3)中对flash寄存器flash_obr写入标记值,具体步骤为向flash寄存器flash_obr中data部分写入数据,从而实现修改寄存器flash_obr的值。
11.本发明的有益效果是:本发明将测试程序不烧录到flash主体而将程序烧录到芯片自带的sram里,并从sram启动,避免将flash中的测试程序擦除;此外,本发明通过在flash寄存器flash_obr写入标记位用来记录发生了程序重启,当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
附图说明
12.图1是本发明的测试电路示意图;图2是本发明的测试方法流程路。
具体实施方式
13.为能进一步了解本发明的发明内容、特点及功效,配合附图详细说明如下。
14.请同时参考图1和图2,下面将结合附图对本发明实施例的用于flash读保护改变的测试电路及方法作详细说明。
15.如图1所示,芯片的连接电路为芯片电源引脚连接相应电压的电源,芯片gnd引脚接地,芯片boot0和boot1接上拉电阻连接至电源,将程序下载器一端连接芯片jtag串口,程序下载器另一端连接上位机。
16.上述硬件连接完成后即可执行后续相应软件部分操作。针对现有技术中的问题,解决方法如下:针对flash程序被擦除的问题,可将测试程序不烧录到flash主体,通过电路设置将boot0和boot1设置成高电平,将程序烧录到芯片自带的sram里,并从sram启动,这样发生mass erase(程序擦除)的时候,不会将测试程序擦除;针对程序无限重启的问题,由于mass erase只擦除flash主体部分的内容,不会擦除flash寄存器option byte的内容,所以在option byte当中的一些位写入标记位用来记录发生了system reset(重启程序),当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
17.如图2所示,具体的步骤如下:(1)完成上述测试电路的硬件连接工作;(2)将测试flash的程序通过下载器烧录到芯片的sram里,并从sram启动;
(3)判断flash寄存器flash_obr是否为初始值,若是,则向flash中写入内容,并对flash寄存器flash_obr写入标记值,重启程序让标记值生效,若不是,则执行下一步骤;(4)判断flash寄存器flash_obr是否为写入的标记值,若是,修改 flash中读保护位的值,开启flash读保护,重启程序,让读保护状态改变生效,由于改变了flash中读保护位的值,因此,寄存器flash_obr的值也随之发生改变,当程序重启后再次运行到步骤(4)时,寄存器flash_obr发生改变从而与写入的标记值不同,这样一来,当判断flash寄存器flash_obr的值并非写入的标记值,即执行下一步骤,即可跳出重启程序的循环;(5)判断flash读保护位的值是否为步骤(4)中修改的值,若是,则通过测试程序对步骤(3)中写入flash的内容进行检测,若不是,则说明flash的读保护无法开启,则无法验证flash读保护状态改变时是否会引起mass erase;(6)通过测试程序判断步骤(3)中写入flash的内容是否被擦除,若是,则验证了芯片flash读保护等级的改变会引起mass erase,若不是,则说明芯片flash读保护等级的改变不会引起mass erase。
18.具体地,上述步骤中,重启程序可通过调用芯片程序函数system reset执行。所述步骤(3)中向flash中写入内容为向flash主体部分写入内容;所述步骤(3)中对flash寄存器flash_obr写入标记值,具体步骤为向flash寄存器flash_obr中data部分写入数据,从而实现修改寄存器flash_obr的值。
19.通过以上描述可以看出,本发明将测试程序不烧录到flash主体而将程序烧录到芯片自带的sram里,并从sram启动,避免将flash中的测试程序擦除;此外,本发明通过在flash寄存器flash_obr写入标记位用来记录发生了程序重启,当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
20.当然,以上只是本发明的典型实例,除此之外,本发明还可以有其它多种具体实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求保护的范围之内。
技术特征:
1.一种用于flash读保护改变的测试电路,其特征在于:包括芯片、上位机和程序下载器,芯片内包括flash模块和sram模块,所述芯片电源引脚连接相应电压电源,所述芯片gnd引脚接地,所述芯片boot0和boot1接上拉电阻连接至电源,所述程序下载器一端连接芯片jtag串口,程序下载器另一端连接上位机。2.一种用于flash读保护改变的测试方法,其特征在于,采用权利要求1中所述的用于flash读保护改变的测试电路,具体包括以下步骤:(1)完成上述测试电路的硬件连接工作;(2)将测试flash的程序通过下载器烧录到芯片的sram里,并从sram启动;(3)判断flash寄存器flash_obr是否为初始值,若是,则向flash中写入内容,并对flash寄存器flash_obr写入标记值,重启程序,让标记值生效,若不是,则执行下一步骤;(4)判断flash寄存器flash_obr是否为写入的标记值,若是,修改 flash中读保护位的值,重启程序,让读保护状态改变生效,若不是,则执行下一步骤;(5)判断flash读保护位的值是否为步骤(4)中修改的值,若是,则通过测试程序对步骤(3)中写入flash的内容进行检测,若不是,则说明flash的读保护无法开启,则无法对flash读保护状态改变进行测试;(6)通过测试程序判断步骤(3)中写入flash的内容是否被擦除,若是,则验证了芯片flash读保护等级的改变会引起程序擦除,若不是,则说明芯片flash读保护等级的改变不会引起程序擦除。3.根据权利要求2所述的一种用于flash读保护改变的测试方法,其特征在于:所述重启程序通过调用芯片程序函数system reset执行。4.根据权利要求2所述的一种用于flash读保护改变的测试方法,其特征在于:所述步骤(3)中向flash中写入内容具体为向flash主体部分写入内容。5.根据权利要求2所述的一种用于flash读保护改变的测试方法,其特征在于:所述步骤(3)中对flash寄存器flash_obr写入标记值,具体步骤为向flash寄存器flash_obr中data部分写入数据,从而实现修改寄存器flash_obr的值。
技术总结
本发明公开了一种用于flash读保护改变的测试电路及方法,包括以下步骤:(1)完成测试电路连接工作;(2)将测试程序烧录到SRAM里并启动;(3)判断寄存器FLASH_OBR是否为初始值,若是,则向flash中写入内容,并写入标记值重启程序;(4)判断寄存器是否为写入的标记值,若是则修改读保护位的值重启程序;(5)判断读保护位的值是否为修改值,若是,对写入内容进行检测;(6)判断写入内容是否被擦除,若是,则验证了flash读保护等级改变会引起程序擦除。本发明将测试程序烧录到芯片自带的SRAM里,并从SRAM启动,避免将flash中的测试程序擦除,且通过对寄存器写入标记值可避免程序进入不断重启的死循环。死循环。死循环。
技术研发人员:
娄霞 张旭
受保护的技术使用者:
苏州洪芯集成电路有限公司
技术研发日:
2021.12.23
技术公布日:
2022/3/22