执行安全启动的片上系统、使用该片上系统的图像形成装置及其方法_4

文档序号:8548103阅读:来源:国知局
上系统110的配置并不限于此,而是可以应用各种修改。
[0167]图12是图示出根据本总体发明构思的示范性实施例的使用片上系统中的存储器的方法的流程图。根据图12,当在操作S1210,图像形成装置的电力被开启时,在操作S1220,CPU 130访问第一存储器110。因此,在操作S1230,CPU 130通过使用存储在第一存储器中的程序和数据执行各种操作。例如,当初始化数据被存储在第一存储器110中时,CPU 130通过使用初始化数据来执行初始化图像形成装置。当初始化完成时,CPU 130读取非易失性存储器200中的加密的数据,并且通过使用存储在第一存储器110中的加密密钥来解密数据。CPU 130将解密的数据存储在第二存储器120中。
[0168]启动操作通过使用第二存储器120而不是通过使用第一存储器110来执行。因此,CPU 130不再需要使用第一存储器110。因此,在操作S1240,CPU130禁止对第一存储器110的访问。在操作S1250,CPU 130通过访问第二存储器120来执行下一个操作。
[0169]因为解密操作和启动操作在如上所示的各种示范性实施例中具体描述了,所以重复的描述被省略。
[0170]图13是图示出片上系统的本发明一般构思的示范性实施例的视图。如图13中所图示的,片上系统100可以包括第一存储器控制器1310、第二存储器控制器1320以及开关单元1330。片上系统100可以包括第一存储器110、第二存储器120、CPU 130、第三存储器140、总线150、DDR控制器185以及电路155、160、165、170、175和180。除了第一存储器控制器1310、第二存储器控制器1320以及开关单元1330以外的其它元件在以上联系图7进行了具体描述,从而重复的描述被省略。
[0171]第一存储器控制器1310是用于控制对第一存储器110的访问的元件和/或设备。第一存储器控制器1310可以是集成电路、处理器、可编程逻辑器件、现场可编程门阵列和/或用于根据本总体发明构思的示范性实施例控制对第一存储器110的访问的任何适当的设备。当从CPU 130接收到读取信号时,第一存储器控制器1310读取由第一存储器110内的读取信号指定的区域中的数据,并且向CPU 130输出数据。第二存储器控制器1320可以控制对第二存储器120的访问。第二存储器控制器1320可以与第一存储器控制器1310 —样执行读取和写入。第二存储器控制器1320可以是集成电路、处理器、可编程逻辑器件、现场可编程门阵列和/或用于根据本总体发明构思的示范性实施例控制对第一存储器110的访问的任何适当的设备。
[0172]开关单元1330是用于将第一存储器控制器1310和第二存储器控制器1320之一选择性地与总线150连接的元件和/或电子设备。也就是说,如上所述,在装置(例如,图像形成装置、电子装置等)被开启之后,CPU 130使用第一存储器110直到非易失性存储器200的数据被解密为止,此后,CPU 130使用第二存储器120。开关单元1330在CPU 130处于操作状态时连接第一存储器控制器1310与总线150以使用第一存储器110,并且在使用第一存储器110完成时连接第二存储器控制器1320与总线150。
[0173]如图13中所图示的,第一存储器控制器1310包括寄存器1311。关于第一存储器110的访问控制值被存储在寄存器1311中。访问控制值是用于启用或禁止对第一存储器110的访问的值。访问控制值可以包括一个或多个位值。
[0174]如图13中所图示的,嵌入在第一存储器控制器1310中的寄存器1311中的数据被输入到第三电路165。不同于图7中图示的本总体发明构思的示范性实施例,第三电路165不包括逆变器和QR门。替代地,第三电路165可以包括AND门165-2。当存储在第三寄存器165-1中的存储值、存储在寄存器1311中的存储值以及从第四电路170输出的输出值中的全部都是‘I’时,AND门165-2输出‘I’。因此,当CPU 130在寄存器1311中存储具有‘0’值的访问控制值时,第三电路165输出‘0’,而不管存储在第三寄存器165-1中的存储值和从第四电路170输出的输出值。
[0175]当片上系统100被开启和/或从电源接收电力时,访问控制值,例如‘1’,被存储在寄存器1311中。因此,第三电线160输出‘I’到开关单元1330。开关单元1330包括第一复用器1331、第二复用器1332以及第三复用器1333。第一复用器1331根据从第三电路160输出的值,选择性地将从第一存储器控制器1310和第二存储器控制器1320输出的值之一输出到总线150。
[0176]图13图示了这样的电路结构:其中当从第三电路165输出‘I’时,从第一存储器控制器1310输出的值被传送到总线150,而当从第三电路165输出‘0’时,从第二存储器控制器1320输出的值被传送到总线150。第二复用器1332和第三复用器1333根据从第三电路165输出的值将从总线150输入的值输出到第一存储器控制器1310或第二存储器控制器 1320。
[0177]根据联系图12和图13图示和描述的本总体发明构思的示范性实施例,第一存储器110,g卩,诸如MASKROM,以及第二存储器120,g卩,诸如内部存储器,可以被分配给相同的地址区域,并且被根据启动次序选择性地使用。也就是说,在首先使用存储在第一存储器110中的代码之后,在最后阶段,通过设定寄存器1311,只有总线命令‘I’和数据输入‘I’在开关单元1330内可以是有效的。即使CPU 130访问相同的地址,第二存储器120也被连接,从而,第一存储器110的安全性被增加和/或加强。虽然图13图示了寄存器1311被布置在第一存储器控制器1310内部,但其当然不限于这种情况。例如,寄存器1311可以被布置在第一存储器控制器1310外部,并且可在初始阶段设定(即,只设定一次并且之后不被改变)的各种逻辑电路可以被嵌入到第一存储器控制器1310而非寄存器1311中。
[0178]因为开关单元1330被配备(例如,通过设定寄存器1311、和/或根据来自第二存储器控制器1320和/或第二电路160的输出),所有片上系统100不需要用总线150直接连接到诸如第一存储器控制器1310和第二存储器控制器1320的从设备,从而,逻辑的大小可以被降低。
[0179]在如上讨论的本总体发明构思的示范性实施例中,片上系统100通过使用存储在第一存储器110、第三存储器140等中的各种软件代码来执行初始化或安全启动。然而,存在如下风险:具有不良意图的人可以通过解封装过程直接对片上系统100(例如,第一存储器110)内的ROM执行攻击。因此,在本总体发明构思的示范性实施例中,软件代码可以在片上系统100中自主生成并且可以被使用,如以下详细讨论的。
[0180]图14是图示出根据本总体发明构思的示范性实施例的片上系统100的框图。如图14中所图示的,片上系统100包括第一存储器110、第二存储器120、CPU 130、第三存储器
140、总线150以及代码生成单元1400。以上详细描述了第一存储器110、第二存储器120、CPU 130、第三存储器140以及总线150。
[0181]代码生成单元1400生成一个或多个软件代码。CPU 130不仅可以使用存储在第一到第三存储器110、120和140中的数据,而且还可以使用在代码生成单元1400中生成的软件代码。
[0182]如上所述,各种数据,诸如用于初始化系统的代码、用于解密加密的外部程序代码的代码以及加密密钥等,可以被存储在第一存储器110中。代码生成单元1400可以生成存储在第一存储器110中的数据的至少一部分,并将数据提供给CPU 130。
[0183]CPU 130可以通过将在代码生成单元1400中生成的软件代码与存储在第一存储器110中的数据一起使用来执行初始化。例如,并不是所有的初始化代码都被存储在第一存储器110中,并且在本总体发明构思的一些示范性实施例中,一些没有存储的代码由代码生成单元1400生成。这里,CPU 130可以通过在靠近重置向量和读取第一存储器110中的初始化代码的同时从代码生成单元1400接收一些软件代码来执行初始化。在本总体发明构思的示范性实施例中,CPU 130可以通过使用存储在第一存储器110中的值和从代码生成单元1400输出的数据来执行各种操作。因此,即使第一存储器110被攻击,第三人(即,攻击者)也不能知道整个初始化代码。
[0184]图15图示了根据本总体发明构思的示范性实施例的片上系统。如在图15中所图示的,片上系统100排除了第一存储器110,并且包括代码生成单元1400。片上系统100包括以上详细描述了的第二存储器120、CPU 130、第三存储器140以及总线150。代码生成单元1400可以生成各种数据,诸如系统初始化代码、解密的代码、加密密钥等。CPU 130输入地址到代码生成单元1400,并接收根据地址生成的软件代码。因此,在不包括第一存储器110的图15中图示的示范性实施例中,CPU 130可以通过使用由代码生成单元1400生成的代码来执行初始化(例如,与存储在诸如第一存储器110的存储器中的那些相反)。
[0185]图16图示了在图14和/或图15中图示的本总体发明构思的示范性实施例中使用的代码生成单元1400的示范性实施例。如图16中所图示的,代码生成单元1400包括地址解码器1410、多个寄存器1420-1、1420-2到1420_n以及复用器1430。地址解码器1410可以是电路、集成电路、现场可编程门阵列、可编程逻辑器件和/或用于解码地址的任何适当的设备。寄存器1420-1、1420-2以及1420_n可以是一个或多个存储器设备中的寄存器。
[0186]地址解码器1410从CPU 130接收地址并解码地址。复用器1430接收在地址解码器1410中的解码的地址,并根据地址访问多个寄存器1420-1到1420-n中的一个或多个。
[0187]具体而言,复用器1430从多个寄存器1420-1到1420_n当中选择性地读取存储在由在地址解码器1410中解码的地址所指定的寄存器中的寄存器的值(例如,一个或多个寄存器中的数据值),并通过组合所述寄存器值来生成软件代码。
[0188]图17图示了根据本总体发明构思的代码生成单元的示范性实施例。在图17中图示的代码生成单元1700可以代替在图14和/或图15中图示的代码生成单元1400。如图17中所图示的,代码生成单元1700包括地址解码器1710、第一生成单元1720、多个指令寄存器1730-1到1730-n和1750-1到1750_m、多个指令复用器1740和1760、代码格式化器1770、第二生成单元1780、多个数据寄存器1790-1到1790-χ、数据复用器1800以及复用器1810。
[0189]地址解码器1710从CPU 130接收地址并解码地址,并向第一生成单元1720和第二生成单元1780提供解码的地址。第一生成单元1720从在地址解码器1710中解码的地址中读取指令地址,并生成指令地址。在第一生成单元1720中生成的指令地址被提供给多个指令复用器(例如,分别提供给指令复用器1740和1760)。
[0190]虽然图17仅图示了两个指令复用器1740和1760,但是指令复用器的数量可以根据区分指令寄存器的组的数量而改变。也就是说,指令寄存器可以根据来自输出指令地址的第一生成单元1720的输出的数量来分组,并且复用器可以针对每一组指令寄存器来提供。
[0191]指令寄存器1730-1到1730-n和1750-1到1750_m可以根据构成软件代码的字段来分组,并且被分为多个组。指令寄存器1730-1到1730-n以及1750-1到1750_m可以存储用于构成软件代码的特定代码,或至少一位数据。图17图示了分为总共η组的指令寄存器(例如,寄存器 1730-1、1730-2 和 1730-n)。
[0192]多个指令复用器1740和1760选择性地从根据指令地址匹配的指令寄存器(例如,指令寄存器1730-1到1730-n和1750-1到1750-m)中读取寄存器值(例如,寄存器中的数据值)。例如,当在指令地址中指定第一组内的第一、第三、第四和第五寄存器以及第η组内的第二、第三、第五和第六寄存器时,与第一组匹配的第一复用器1740从第一、第三、第四和第五寄存器1740-1、3、4和5中读取寄存器值。与第η组匹配的第一复用器1760从第二、第三、第五和第六寄存器1750-2、3、5和6中读取寄存器值。读取的值被传送到代码格式化器1770。
[0193]代码格式化器1770组合从多个指令复用器1740和1760中读取的值,并生成代码(即,指令)。代码格式化器1770可以例如是电路和/或用于组合值并生成代码和/或指令的任何适当的设备。
[0194]第二生成单元1780基于在地址解码器1710中解码的地址生成数据地址。第二生成单元1780向数据复用器1800提供所生成的数据地址。
[0195]数据复用器1800根据数据地址选择性地从多个数据寄存器1790-1到1790-χ中读取寄存器值(例如,寄存器中的数据值)。各种数据被部分地划分,并且可以被存储在多个数据寄存器1790-1到1790-χ中的一个或多个中。由数据复用器1800接收的寄存器值(例如,存储在寄存器1790-1到1790-χ中的数据值)中的一个或多个被数据复用器1800复用,并且被提供给复用器1810。
[0196]复用器1810可以组合代码格式化器1770中生成的代码和数据复用器1800中生成的数据,并生成软件代码。所生成的软件代码可以被提供给CPU130或可以被复制到第二存储器120。
[0197]通过使用在代码生成单元1400中生成的软件代码,CPU 130不仅可以执行初始化操作,而且还可以执行各种操作。
[0198]图18和图19是图示出代码生成单元(例如,图14和图15中图示的代码生成单元1400和/或图17中图示的代码生成单元1700)中生成的软件代码的本总体发明构思的各种示范性实施例的视图。
[0199]根据图18,软件代码可以包括多个字段1910到1950。各种数据,诸如,条件(图示为图18中的字段1910)、操作码(Opcode)(即,规定了将要执行的操作的操作代码;图示为图18中的字段1920)和寄存器值(例如,分别在图18中的字段1930、1940和1950中图示的寄存器0、1或2中的任何一个中的值),可以被存储在字段1910到1950的一个或多个中。代码生成单元1400或代码生成单元1700可以通过从与每个字段相对应的组的寄存器中分别读取寄存器值并组合所述值(例如,通过使用复用器),来生成如图18中所图示的软件代码。
[0200]图19图示了软件代码的本总体发明构思的示范性实施例。尽管图18中的软件代码可以包括相同大小的字段,但是图19中的软件代码可以包括大小彼此不同的字段。如图19中所图示的,配备了条件字段1960和操作码(即,操作代码)字段1970,而其它数据可以被存储在单独的字段1980中。也就是说,条件字段1960和操作码字段1970可以是相同大小的,而单独的字段1980可以是不同(即,更大)大小的。可替换地,条件字段1960、操作码字段1970、以及单独的字段1980每个可以具有不同的大小。
[0201]可以按各种形式来配置软件代码。一般来说,软件代码根据诸如命令部分、操作者部分等等之类的特定片段来划分。这些命令根据片段通常是相似的,从而,如果代码被最优化,并且考虑到最优化的代码来创建硬件设备,则可以减小硬件设备的大小。也就是说,代码可以被最优化,以便被更加快速地运行,或者使得其用更少的存储器存储或其它资源进行操作,或抽取更少的电力。硬件设备,诸如片上系统100,可以通过例如减小存储器(例如,第一存储器110、第二存储器120和/或第三存储器140)的量和/或大小,来减小大小。当运行最优化的代码时,硬件设备(例如,片上系统100)还可以消耗更少的电力。
[0202]如在本总体发明构思的以上各种示范性实施例中所述的,加密程序或加密数据被存储在没有嵌入在片上系统100中的外部存储器200 (例如在图1、图3、图4、图7以及图13至图15中图示的)中。外部存储器200可
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1