CN104680059B - 一种保护芯片固件程序的仿真器及方法 - Google Patents
一种保护芯片固件程序的仿真器及方法 Download PDFInfo
- Publication number
- CN104680059B CN104680059B CN201310636809.9A CN201310636809A CN104680059B CN 104680059 B CN104680059 B CN 104680059B CN 201310636809 A CN201310636809 A CN 201310636809A CN 104680059 B CN104680059 B CN 104680059B
- Authority
- CN
- China
- Prior art keywords
- chip
- program
- emulator
- warm reset
- module
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明介绍一种保护芯片固件程序的仿真器及方法,涉及到芯片仿真技术领域。仿真器包括仿真器控制模块和仿真器硬件,仿真器硬件包括芯片功能调试模块、寄存器、停止信号产生模块和芯片功能模块。仿真器控制模块通过芯片功能调试模块设置寄存器,控制芯片功能模块产生软复位后CPU停止或是运行。保护芯片固件程序的方法:仿真器控制模块开启仿真器硬件的软复位停止功能,运行芯片固件程序中软复位指令后,自动停止在用户程序区的首地址,此时进入用户调试界面芯片固件程序不能访问,达到保护目的。本发明的仿真器实现自动切换到用户程序区并保护芯片固件程序的功能,具有设计简单、方便使用特点,为具有安全要求的芯片仿真器设计提供一种代码保护方案。
Description
技术领域
本发明涉及一种芯片仿真器,特别涉及一种保护芯片固件程序的仿真器及方法。
背景技术
智能卡芯片中都会存在芯片固件程序,通过执行程序实现基本功能设置和安全方面的功能。此程序由芯片厂商开发,并在芯片中进行保护,通过用户程序无法访问。
对于智能卡芯片仿真器,通常方法是在仿真器硬件中固化功能设置,当芯片更新功能设置时,仿真器硬件需要重新设计,修改固化设置的内容,设计实现和维护都不方便,更主要问题是这种仿真器与真实芯片有较多差异,功能设置可能不全、寄存器操作顺序无法控制、用户程序引导时间不一致等,存在用户程序在仿真器调试后在芯片上运行出错的风险。
另一种仿真器实现方法是通过固件程序进行仿真器功能配置,由仿真器控制模块对芯片固件程序进行读写和调试操作的保护,此方法使软件设计变得复杂且不易升级和维护。如何实现带有芯片固件程序且对固件程序进行有效保护的仿真器,为解决此问题,本发明提出一种保护芯片固件程序的仿真器及方法。本发明的仿真器在仿真器硬件中存放芯片固件程序,实现自动切换到用户程序区并保护芯片固件程序的功能,保证了与芯片功能的一致性,具有设计简单安全、方便用户使用的特点,为具有安全要求的芯片仿真器设计提供一种代码保护方案。
发明内容
本发明所解决的技术问题是,如何设计一种带有芯片固件程序且对固件程序进行有效保护的仿真器。
本发明的仿真器包括仿真器控制模块和仿真器硬件两部分:仿真器控制模块与仿真器硬件相连,用于控制仿真器硬件运行,配置仿真器硬件中的寄存器,实现对芯片功能模块中的用户程序调试功能,仿真器硬件主要是仿真和调试芯片的功能,对程序代码或数据进行保护。仿真器硬件包括芯片功能调试模块、软复位停止模块和芯片功能模块,其中软复位停止模块由寄存器和停止信号产生模块组成。芯片功能调试模块用于接收仿真器控制模块的调试命令,对软复位停止模块中的寄存器进行读写,连接到芯片功能模块,对芯片功能模块进行调试;软复位停止模块,包括寄存器和停止信号产生模块,停止信号产生模块分别与寄存器和芯片功能模块相连,寄存器根据仿真器控制模块配置产生软复位停止使能信号,开启或关闭软复位停止功能,停止信号产生模块根据软复位停止使能信号和来自芯片功能模块的软复位信号,产生CPU停止信号,控制芯片功能模块的CPU软复位后是停止还是运行;芯片功能模块,用于仿真芯片的功能,包括芯片固件区和用户程序区,芯片固件区存放芯片固件程序,固件程序最后的指令为软复位指令,用户程序区存放用户程序。芯片功能模块具有软复位和硬复位功能,硬复位后能访问芯片固件区和用户程序区,从芯片固件区执行程序,软复位后只能访问用户程序区,从用户程序区执行程序。
本发明的仿真器硬件实现了六种调试功能:硬复位操作停止功能、运行功能、软复位操作停止功能、软复位操作运行功能、执行软复位指令停止功能、执行软复位指令运行功能。在进入用户程序调试界面时,芯片固件程序已运行完成并不能访问,实现对仿真器中芯片固件程序的保护功能。
硬复位操作停止功能:由芯片功能调试模块实现,接收到仿真器控制模块发送的硬复位操作命令后,控制芯片功能模块完成硬复位并停止运行。用于使芯片处于复位后的初始状态,下载或执行芯片固件程序。
运行功能:由芯片功能调试模块实现,接收到仿真器控制模块发送的运行操作命令后,控制芯片功能模块中CPU运行。用于执行芯片固件程序或用户程序。
软复位操作停止功能:芯片功能模块完成软复位并停止运行。软复位后芯片固件程序不能访问,此功能用于下载用户程序,或者是芯片软复位后调试用户程序,同时对芯片固件程序进行保护。
软复位操作运行功能:芯片功能模块完成软复位并运行程序。软复位后芯片固件程序不能访问,此功能用于软复位并运行用户程序,同时对芯片固件程序进行保护。
执行软复位指令停止功能:芯片功能模块执行软复位指令后完成软复位并停止运行。用于实现执行芯片固件程序中软复位指令后,自动停止在用户程序区的首地址的功能。
执行软复位指令运行功能:芯片功能模块执行软复位指令后完成软复位并运行程序。保证执行用户程序中的软复位指令,或硬复位操作后从芯片固件程序开始运行遇到软复位指令,程序不会自动停止,不影响用户正常调试和测试。
本发明的仿真器控制模块实现了两种调试操作,用于实现对仿真器中芯片固件程序的保护:程序下载操作、复位功能操作。
程序下载操作:用于对芯片固件程序和用户程序下载,下载过程对用户不可见,下载后进入用户程序调试界面,芯片固件程序区不能访问,对芯片固件程序进行保护。芯片固件程序在芯片硬复位后进行加密下载,而不是固化在仿真器硬件中,此方法方便芯片固件程序的更新。用户程序在芯片软复位程序停止后下载,此时不需进行下载数据地址的转换。先开启软复位停止功能,执行软复位操作后停止在用户程序区的首地址,下载用户程序,之后进行硬复位操作,运行芯片固件程序,由于开启了软复位停止功能,当执行完芯片固件程序的软复位指令后,程序会自动停止在用户程序区的首地址。最后关闭软复位停止功能,保证执行用户程序中的软复位指令或硬复位操作后从芯片固件程序开始运行执行到软复位指令,程序不会自动停止,不影响用户正常调试功能。
复位功能操作:复位功能操作后停止在用户程序区的首地址,芯片固件程序不能访问,达到保护目的。先进行硬复位操作,开启软复位停止功能,运行芯片固件程序,执行完芯片固件程序的软复位指令后,程序会自动停止在用户程序区的首地址,最后关闭软复位停止功能,不影响用户正常调试功能。
附图说明
图1是保护芯片固件程序的仿真器结构图。
图2是软复位前后存储器空间分配结构图。
图3是程序下载操作保护芯片固件程序流程图。
图4是复位功能操作保护芯片固件程序流程图。
具体实施方式
下面结合附图对本发明仿真器进行详细说明。
如图1所示,仿真器1包括仿真器控制模块2和仿真器硬件3,仿真器硬件3包括芯片功能调试模块4、软复位停止模块5和芯片功能模块8,其中软复位停止模块5由寄存器6和停止信号产生模块7组成。
仿真器控制模块2与芯片功能调试模块4相连,芯片功能调试模块4连接到寄存器6和芯片功能模块8。仿真器控制模块2通过功能调试模块4实现寄存器6的读写访问,产生软复位停止使能信号9,同时通过功能调试模块4实现对芯片功能模块8进行调试操作。
停止信号产生模块7连接到寄存器6和芯片功能模块8,根据寄存器6产生的软复位停止使能信号9和来自芯片功能模块8的软复位信号10,产生CPU停止信号11,此信号用于控制芯片功能模块8中的CPU软复位后是停止还是运行。包括软复位操作和执行软复位指令操作两类共四种情况,实现说明如下:
软复位操作停止功能:仿真器控制模块2通过芯片功能调试模块4,配置软复位停止模块5中的寄存器6,使软复位停止使能信号9有效,开启软复位停止功能;芯片调试功能模块4接收到仿真器控制模块2发送的软复位操作命令后,控制芯片功能模块8产生软复位信号10,停止信号产生模块7根据软复位停止使能信号9和软复位信号10,设置CPU停止信号11有效,此时CPU完成软复位并停止运行。
软复位操作运行功能:先配置软复位停止模块5中的寄存器6,关闭软复位停止功能;芯片调试功能模块4接收到仿真器控制模块2发送的软复位操作命令后,控制芯片功能模块8产生软复位信号10,停止信号产生模块7根据软复位停止使能信号9和软复位信号10,设置CPU停止信号11无效,此时CPU完成软复位并运行程序。
执行软复位指令停止功能:先配置软复位停止模块5中的寄存器6,开启软复位停止功能;芯片功能模块8执行软复位指令产生软复位信号10,停止信号产生模块7根据软复位停止使能信号9和软复位信号10,设置CPU停止信号11有效,此时CPU完成软复位并停止运行。
执行软复位指令运行功能:先配置软复位停止模块5中的寄存器6,关闭软复位停止功能;芯片功能模块8执行软复位指令产生软复位信号10,停止信号产生模块7根据软复位停止使能信号9和软复位信号10,设置CPU停止信号11无效,此时CPU完成软复位并运行程序。
如图2所示,芯片功能模块在硬复位后软复位前,芯片固件区和用户程序区都能访问,从芯片固件区开始执行程序,芯片固件程序区从0x00地址开始,用户程序区在高端地址,而用户程序也时从0x00地址开始,此时下载用户程序,需对地址进行偏移;在软复位后,芯片固件区不能访问,只有用户程序区能访问,从用户程序区开始执行程序,此时用户程序区从0x00地址开始,可以直接下载用户程序。
如图3所示,给出芯片固件程序和用户程序下载流程,仿真器控制模块自动执行对用户不可见的此流程操作步骤后,芯片固件程序区不能访问,达到对芯片固件程序保护的目的。共分为8个步骤,实现了芯片固件程序下载、用户程序下载、运行芯片固件程序停止在用户程序区的首地址,芯片完成硬复位和软复位操作四个功能。
步骤1,执行硬复位操作,芯片功能模块中CPU停止在芯片固件区的首地址,此时芯片固件区和用户程序区均可访问;
步骤2,向芯片固件区下载芯片固件程序,由仿真器控制模块后台加密下载,用户不可见,保证芯片固件程序下载的安全,实现芯片固件程序下载功能;
步骤3,开启软复位停止功能,后续执行软复位操作或CPU执行软复位指令后程序停止;
步骤4,执行软复位操作,芯片功能模块中CPU停止在用户程序区的首地址,此时只有用户程序区可以访问,用户程序可以直接下载;
步骤5,向用户程序区下载用户程序,完成用户程序代码数据的下载;
步骤6,执行硬复位操作,芯片功能模块中CPU停止在芯片固件区的首地址;
步骤7,运行芯片固件程序,执行芯片固件程序中软复位指令后,程序自动停止在用户程序区的首地址;
步骤8,关闭软复位停止功能,保证执行用户程序中的软复位指令,或是硬复位操作后执行芯片固件程序中的软复位指令,程序不会自动停止,不影响用户正常调试。此时芯片完成硬复位和软复位操作,用户开始使用仿真器调试用户程序。
如图4所示,给出复位功能操作流程,仿真器控制模块自动执行对用户不可见的此流程操作步骤后,芯片固件程序区不能访问,达到对芯片固件程序保护的目的。共分为4个步骤,实现了运行芯片固件程序停止在用户程序区的首地址,芯片完成硬复位和软复位操作两个功能。
步骤1,执行硬复位操作,芯片功能模块中CPU停止在芯片固件区的首地址;
步骤2,开启软复位停止功能,后续执行软复位操作或CPU执行软复位指令后程序停止;
步骤3,运行芯片固件程序,执行芯片固件程序软复位指令后,程序自动停止在用户程序首地址;
步骤4,关闭软复位停止功能,此时芯片完成硬复位和软复位操作,用户开始使用仿真器调试用户程序。
Claims (4)
1.一种保护芯片固件程序的仿真器,其特征在于在调试通路中设计软复位停止模块,实现在仿真器调试过程中芯片固件程序不能访问的功能,达到对芯片固件程序保护的目的,具体包括:
仿真器控制模块,与仿真器硬件相连,用于控制仿真器硬件运行,配置仿真器硬件中的寄存器,实现对芯片功能模块中程序的调试功能;
仿真器硬件,包括芯片功能调试模块、软复位停止模块和芯片功能模块,用于仿真和调试芯片的功能,对程序代码或数据进行保护;
其中芯片功能调试模块,接收仿真器控制模块的调试命令,连接到软复位停止模块中的寄存器,用于对寄存器进行读写,连接到芯片功能模块,对芯片功能模块进行调试;
软复位停止模块,包括寄存器和停止信号产生模块,停止信号产生模块分别与寄存器和芯片功能模块相连,寄存器根据仿真器控制模块配置产生软复位停止使能信号,开启或关闭软复位停止功能,停止信号产生模块根据软复位停止使能信号和来自芯片功能模块的软复位信号,产生CPU停止信号,控制芯片功能模块的CPU软复位后是停止还是运行;
芯片功能模块,用于仿真芯片的功能,包括芯片固件区和用户程序区,具有软复位和硬复位功能,硬复位后能访问芯片固件区和用户程序区,从芯片固件区执行程序,软复位后只能访问用户程序区,从用户程序区执行程序。
2.根据权利要求1所述的一种保护芯片固件程序的仿真器,其特征在于芯片功能模块运行芯片固件区的芯片固件程序时,执行软复位指令产生软复位信号,此时CPU停止信号由软复位停止使能信号控制,实现运行芯片固件程序中软复位指令后,程序停止或继续运行的功能。
3.根据权利要求1所述的一种保护芯片固件程序的仿真器,其特征在于仿真器控制模块通过芯片功能调试模块控制芯片功能模块产生软复位信号,此时CPU停止信号由软复位停止使能信号控制,实现软复位操作后停止在用户程序区的首地址或者运行用户程序区的程序的功能,软复位操作后停止在用户程序区的首地址,仿真器控制模块不需要对程序代码的地址进行转换,直接下载用户程序。
4.一种保护芯片固件程序的方法,应用于权利要求1所述的仿真器中,其特征在于仿真器控制模块自动执行以下对用户不可见的操作步骤,完成芯片固件程序和用户程序的下载操作,进入用户程序调试界面后,芯片固件程序区不能访问,达到对芯片固件程序保护的目的:
步骤1,执行硬复位操作,芯片功能模块中CPU停止在芯片固件区的首地址;
步骤2,向芯片固件区后台加密下载芯片固件程序;
步骤3,配置仿真器硬件中的寄存器,开启软复位停止功能;
步骤4,执行软复位操作,芯片功能模块中CPU停止在用户程序区的首地址;
步骤5,向用户程序区下载用户程序,完成用户程序代码数据的下载;
步骤6,执行硬复位操作,芯片功能模块中CPU停止在芯片固件区的首地址;
步骤7,运行芯片固件程序,执行芯片固件程序中软复位指令后,程序自动停止在用户程序区的首地址,此时芯片固件程序区不能访问;
步骤8,关闭软复位停止功能,保证执行用户程序中的软复位指令或硬复位操作后执行芯片固件程序中的软复位指令,程序不会自动停止,不影响用户正常调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310636809.9A CN104680059B (zh) | 2013-12-03 | 2013-12-03 | 一种保护芯片固件程序的仿真器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310636809.9A CN104680059B (zh) | 2013-12-03 | 2013-12-03 | 一种保护芯片固件程序的仿真器及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104680059A CN104680059A (zh) | 2015-06-03 |
CN104680059B true CN104680059B (zh) | 2017-11-03 |
Family
ID=53315091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310636809.9A Active CN104680059B (zh) | 2013-12-03 | 2013-12-03 | 一种保护芯片固件程序的仿真器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104680059B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106066822B (zh) * | 2016-05-26 | 2018-04-13 | 北京中电华大电子设计有限责任公司 | 一种支持覆盖率统计功能的仿真器及方法 |
CN106055382B (zh) * | 2016-05-26 | 2019-03-08 | 北京中电华大电子设计有限责任公司 | 一种支持nvm掉电保护功能测试的仿真器 |
CN106445808A (zh) * | 2016-08-29 | 2017-02-22 | 北京中电华大电子设计有限责任公司 | 一种具有控制程序单步调试功能的仿真器 |
US10642693B2 (en) * | 2017-09-06 | 2020-05-05 | Western Digital Technologies, Inc. | System and method for switching firmware |
CN110489206B (zh) * | 2019-07-05 | 2023-05-12 | 北京中电华大电子设计有限责任公司 | 一种具有禁止程序调试功能的仿真器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1920806A (zh) * | 2005-08-23 | 2007-02-28 | 成都联星微电子有限公司 | 一种可编程设备的在通讯中测试及编程方法 |
CN101329650A (zh) * | 2007-06-20 | 2008-12-24 | 上海华虹集成电路有限责任公司 | 智能卡仿真器 |
CN102750214A (zh) * | 2011-04-19 | 2012-10-24 | 成都联星微电子有限公司 | 一种通过设备应用接口进行测试及编程的方法 |
CN102955872A (zh) * | 2011-08-31 | 2013-03-06 | 北京中电华大电子设计有限责任公司 | 具有参数传递功能的仿真器 |
-
2013
- 2013-12-03 CN CN201310636809.9A patent/CN104680059B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1920806A (zh) * | 2005-08-23 | 2007-02-28 | 成都联星微电子有限公司 | 一种可编程设备的在通讯中测试及编程方法 |
CN101329650A (zh) * | 2007-06-20 | 2008-12-24 | 上海华虹集成电路有限责任公司 | 智能卡仿真器 |
CN102750214A (zh) * | 2011-04-19 | 2012-10-24 | 成都联星微电子有限公司 | 一种通过设备应用接口进行测试及编程的方法 |
CN102955872A (zh) * | 2011-08-31 | 2013-03-06 | 北京中电华大电子设计有限责任公司 | 具有参数传递功能的仿真器 |
Also Published As
Publication number | Publication date |
---|---|
CN104680059A (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104680059B (zh) | 一种保护芯片固件程序的仿真器及方法 | |
CN102236621B (zh) | 计算机接口信息配置系统及方法 | |
US6289300B1 (en) | Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit | |
CN102289386B (zh) | 通过部分虚拟化机器的统一存储设备 | |
CN101978339B (zh) | 用于硬件重置保护的方法和装置 | |
CN106293807A (zh) | 一种基于DSP的Flash芯片引导加载方法 | |
US20020144235A1 (en) | Debugging embedded systems | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN110489206A (zh) | 一种具有禁止程序调试功能的仿真器 | |
CN105204393A (zh) | 基于虚核单片机的单片机生产研发工具及其实现方法 | |
CN103970565A (zh) | 一种服务器系统中fpga多途径下载配置实现方法 | |
CN103677923A (zh) | 一种boot引导程序运行保护方法 | |
CN104461859A (zh) | 一种支持nvm软断点调试的仿真器和方法 | |
CN107729040A (zh) | 一种单片机的iap方法及系统 | |
CN105740013B (zh) | 刷机操作控制方法及装置 | |
CN109492418A (zh) | 一种基于aes算法的通用dsp安全加解密系统 | |
CN107506208A (zh) | 一种设备防烧死的dsp固件在线升级方法 | |
CN105278445A (zh) | 同步发电机励磁调节器控制程序的二次开发方法 | |
CN104991774A (zh) | 一种uefi平台下截获系统引导的系统和方法 | |
CN111414182A (zh) | 一种基于spi的fpga远程升级方法 | |
CN112702327B (zh) | 一种主控芯片的安全服务设计方法 | |
CN104156241B (zh) | 处理器微程序的初始化配置方法及系统 | |
Dinda | Towards virtual passthrough I/O on commodity devices | |
CN110688099A (zh) | 远距离无线电集成可编程片上系统的微处理器开发方法 | |
CN103677953A (zh) | 可设置程序指针值的仿真器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 102209 Beijing, Beiqijia, the future of science and technology in the south area of China electronic network security and information technology industry base C building, Applicant after: Beijing CEC Huada Electronic Design Co., Ltd. Address before: 100102 Beijing City, Chaoyang District Lize two Road No. 2, Wangjing science and Technology Park A block five layer Applicant before: Beijing CEC Huada Electronic Design Co., Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |