CN114220473A - 一种用于flash读保护改变的测试电路及方法 - Google Patents
一种用于flash读保护改变的测试电路及方法 Download PDFInfo
- Publication number
- CN114220473A CN114220473A CN202111586275.4A CN202111586275A CN114220473A CN 114220473 A CN114220473 A CN 114220473A CN 202111586275 A CN202111586275 A CN 202111586275A CN 114220473 A CN114220473 A CN 114220473A
- Authority
- CN
- China
- Prior art keywords
- flash
- program
- read protection
- chip
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 title claims abstract description 9
- 238000010998 test method Methods 0.000 claims description 10
- 230000000694 effects Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/1201—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising I/O circuitry
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种用于flash读保护改变的测试电路及方法,包括以下步骤:(1)完成测试电路连接工作;(2)将测试程序烧录到SRAM里并启动;(3)判断寄存器FLASH_OBR是否为初始值,若是,则向flash中写入内容,并写入标记值重启程序;(4)判断寄存器是否为写入的标记值,若是则修改读保护位的值重启程序;(5)判断读保护位的值是否为修改值,若是,对写入内容进行检测;(6)判断写入内容是否被擦除,若是,则验证了flash读保护等级改变会引起程序擦除。本发明将测试程序烧录到芯片自带的SRAM里,并从SRAM启动,避免将flash中的测试程序擦除,且通过对寄存器写入标记值可避免程序进入不断重启的死循环。
Description
技术领域
本发明涉及一种用于flash读保护改变的测试电路及方法,属于芯片测试技术领域。
背景技术
flash是存储芯片的一种,通过特定的程序可以修改里面的数据。flash在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”。flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失。
在实际发布的产品中,例如:在STM32芯片的内部flash存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部flash的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此,STM32芯片提供了多种方式保护内部flash的程序不被非法读取,但在默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部flash选项字节(Option Bytes)中的配置。
芯片的flash的读保护等级分为无保护、只读保护和禁止调试,芯片的flash的读保护等级发生改变,会引起mass erase,即此时写入flash主体部分的程序内容会全部被擦除,以达到保护用户代码安全的目的,这样发生读保护等级改变之后,由于测试程序被全部擦除了,所以这样后面用于验证flash发生mass erase的程序就无法继续执行了。此外,改变读保护等级的方式是通过修改寄存器FLASH_OBR的读保护选项字节,并且需要调用***函数system reset,使得程序重启之后才会生效,这里的问题就是程序重启之后,程序会重新从第一行开始执行,如果不做处理,程序就会进入不断重启的死循环。
发明内容
本发明的目的在于提供一种用于flash读保护改变的测试电路及方法,旨在解决flash读保护等级改变引起程序擦除而无法测试的问题。
为实现上述目的,本发明提供如下技术方案:一种用于flash读保护改变的测试电路,包括芯片、上位机和程序下载器,芯片内包括flash模块和SRAM模块,所述芯片电源引脚连接相应电压电源,所述芯片GND引脚接地,所述芯片BOOT0和BOOT1接上拉电阻连接至电源,所述程序下载器一端连接芯片JTAG串口,程序下载器另一端连接上位机。
本发明还公开了一种用于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读保护等级的改变不会引起程序擦除。
进一步地,上述用于flash读保护改变的测试方法,其中:所述重启程序通过调用芯片程序函数system reset执行。
进一步地,上述用于flash读保护改变的测试方法,其中:所述步骤(3)中向flash中写入内容具体为向flash主体部分写入内容。
进一步地,上述用于flash读保护改变的测试方法,其中:所述步骤(3)中对flash寄存器FLASH_OBR写入标记值,具体步骤为向flash寄存器FLASH_OBR中data部分写入数据,从而实现修改寄存器FLASH_OBR的值。
本发明的有益效果是:本发明将测试程序不烧录到flash主体而将程序烧录到芯片自带的SRAM里,并从SRAM启动,避免将flash中的测试程序擦除;此外,本发明通过在flash寄存器FLASH_OBR写入标记位用来记录发生了程序重启,当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
附图说明
图1是本发明的测试电路示意图;
图2是本发明的测试方法流程路。
具体实施方式
为能进一步了解本发明的发明内容、特点及功效,配合附图详细说明如下。
请同时参考图1和图2,下面将结合附图对本发明实施例的用于flash读保护改变的测试电路及方法作详细说明。
如图1所示,芯片的连接电路为芯片电源引脚连接相应电压的电源,芯片GND引脚接地,芯片BOOT0和BOOT1接上拉电阻连接至电源,将程序下载器一端连接芯片JTAG串口,程序下载器另一端连接上位机。
上述硬件连接完成后即可执行后续相应软件部分操作。针对现有技术中的问题,解决方法如下:针对flash程序被擦除的问题,可将测试程序不烧录到flash主体,通过电路设置将BOOT0和BOOT1设置成高电平,将程序烧录到芯片自带的SRAM里,并从SRAM启动,这样发生mass erase(程序擦除)的时候,不会将测试程序擦除;针对程序无限重启的问题,由于mass erase只擦除flash主体部分的内容,不会擦除flash寄存器option byte的内容,所以在option byte当中的一些位写入标记位用来记录发生了system reset(重启程序),当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
如图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。
具体地,上述步骤中,重启程序可通过调用芯片程序函数system reset执行。所述步骤(3)中向flash中写入内容为向flash主体部分写入内容;所述步骤(3)中对flash寄存器FLASH_OBR写入标记值,具体步骤为向flash寄存器FLASH_OBR中data部分写入数据,从而实现修改寄存器FLASH_OBR的值。
通过以上描述可以看出,本发明将测试程序不烧录到FLASH主体而将程序烧录到芯片自带的SRAM里,并从SRAM启动,避免将flash中的测试程序擦除;此外,本发明通过在flash寄存器FLASH_OBR写入标记位用来记录发生了程序重启,当下次程序重新开始运行时,跳过这一部分,从而避免进入不断重启的死循环。
当然,以上只是本发明的典型实例,除此之外,本发明还可以有其它多种具体实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求保护的范围之内。
Claims (5)
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的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111586275.4A CN114220473A (zh) | 2021-12-23 | 2021-12-23 | 一种用于flash读保护改变的测试电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111586275.4A CN114220473A (zh) | 2021-12-23 | 2021-12-23 | 一种用于flash读保护改变的测试电路及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114220473A true CN114220473A (zh) | 2022-03-22 |
Family
ID=80705337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111586275.4A Pending CN114220473A (zh) | 2021-12-23 | 2021-12-23 | 一种用于flash读保护改变的测试电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114220473A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079449A (ja) * | 2004-09-10 | 2006-03-23 | Canon Inc | 記憶媒体アクセス制御方法 |
KR20140148132A (ko) * | 2013-06-21 | 2014-12-31 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그것의 동작 방법 |
CN104598402A (zh) * | 2014-12-30 | 2015-05-06 | 北京兆易创新科技股份有限公司 | 一种闪存控制器和闪存控制器的控制方法 |
CN108269605A (zh) * | 2016-12-30 | 2018-07-10 | 谷歌有限责任公司 | 安全器件状态设备和方法以及生命周期管理 |
CN112182586A (zh) * | 2020-09-29 | 2021-01-05 | 中电海康无锡科技有限公司 | 一种mcu读写保护的测试方法、装置及*** |
CN113282442A (zh) * | 2021-07-22 | 2021-08-20 | 翱捷科技(深圳)有限公司 | 芯片量产自动化校准预设固件高速下载的方法及*** |
WO2021189322A1 (zh) * | 2020-03-25 | 2021-09-30 | 华为技术有限公司 | 一种芯片测试装置及测试方法 |
-
2021
- 2021-12-23 CN CN202111586275.4A patent/CN114220473A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006079449A (ja) * | 2004-09-10 | 2006-03-23 | Canon Inc | 記憶媒体アクセス制御方法 |
KR20140148132A (ko) * | 2013-06-21 | 2014-12-31 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그것의 동작 방법 |
CN104598402A (zh) * | 2014-12-30 | 2015-05-06 | 北京兆易创新科技股份有限公司 | 一种闪存控制器和闪存控制器的控制方法 |
CN108269605A (zh) * | 2016-12-30 | 2018-07-10 | 谷歌有限责任公司 | 安全器件状态设备和方法以及生命周期管理 |
WO2021189322A1 (zh) * | 2020-03-25 | 2021-09-30 | 华为技术有限公司 | 一种芯片测试装置及测试方法 |
CN112182586A (zh) * | 2020-09-29 | 2021-01-05 | 中电海康无锡科技有限公司 | 一种mcu读写保护的测试方法、装置及*** |
CN113282442A (zh) * | 2021-07-22 | 2021-08-20 | 翱捷科技(深圳)有限公司 | 芯片量产自动化校准预设固件高速下载的方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI473117B (zh) | 具資料修正功能之快閃記憶體儲存裝置 | |
US6587916B2 (en) | Microcomputer with built-in programmable nonvolatile memory | |
US7929354B2 (en) | Verified purge for flash storage device | |
US6798713B1 (en) | Implementing software breakpoints | |
US9437312B2 (en) | Management of write-protected data in a semiconductor memory | |
US20080016415A1 (en) | Evaluation system and method | |
KR100777446B1 (ko) | 전자장치 및 그 부팅방법 | |
JP2000045858A (ja) | 電子制御装置及び不揮発性メモリの書換回数記憶方法 | |
US6044014A (en) | Electronic control unit and method for storing rewrite count of nonvolatile memory | |
US20030135706A1 (en) | Microcontroller having embedded non-volatile memory with read protection | |
US7574585B1 (en) | Implementing software breakpoints and debugger therefor | |
CN114220473A (zh) | 一种用于flash读保护改变的测试电路及方法 | |
US20100083073A1 (en) | Data processing apparatus, memory controlling circuit, and memory controlling method | |
US20070088905A1 (en) | System and method for purging a flash storage device | |
KR100580071B1 (ko) | 메모리 오류 검출방법 | |
CN112052112A (zh) | 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质 | |
US20070101049A1 (en) | Redundant purge for flash storage device | |
US20050068842A1 (en) | Electronic device, nonvolatile memory and method of overwriting data in nonvolatile memory | |
JP4324149B2 (ja) | エミュレータ及びそれを用いた開発支援システム | |
TWI450275B (zh) | 可提升寫入保護之記憶體系統及相關方法 | |
US20070101048A1 (en) | Verified purge for flash storage device | |
CN118057380A (zh) | 芯片、芯片启动方法和电子设备 | |
CN111966363A (zh) | 配置字初始化设置及读取配置字的方法、控制装置和车辆 | |
CN114942896A (zh) | 一种c语言内存块的管理方法及终端 | |
CN116482514A (zh) | 用于芯片上电自动校准的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |