处理器与bootflash间的连接装置及实现方法

文档序号:6460989阅读:233来源:国知局
专利名称:处理器与boot flash间的连接装置及实现方法
技术领域
本发明涉及一种具有不同字节序的处理器与BOOT FLASH (启动 闪存)间的连接装置及其实现方法。
背景技术
在嵌入式系统设计领域,无论硬件设计还是软件设计,字节序是一 个必须考虑的问题。所谓字节序,就是字节的顺序,是大于一个字节类 型的数据在存储器中的存取顺序,有大端字节序(bigendian)与小端字 节序(little endian)两者方式。大端字节序是在具有字节单位地址的存储器中存储两个字节以上数 据时字节排列顺序的方式,此时,从大端部MSB的字节开始按照存储 器的地址升序存储。字节序是字节的排列顺序,而不是比特的排列顺序, 字节内的比特排列顺序不变。图1表示大端字节序的说明图。如图所示,以大端字节序将4字节 数据"0X12345678"存储在地址为0X1000-0X1003位置情况下,按照 地址号码的升序,依次存储"12" 、 "34" 、 "56" 、 "78"。即从 MSB( Most Significant Bit )侧开始的字节按照地址升序存储在存储器中。图2表示32位数据总线情况下大端字节序的CPU (处理器)与存 爿賭器连4妄的一^:结构。如图所示,CPU的数据总线D[31: 24]、 D[23: 16]、 D[15: 8]、 D[7: 0]分别连4妻到存储器的D[7: 0]、 D[15: 8]、 D[23: 16]、 D[31: 24]上。小端字节序是指从小端部LSB(Least Significant Bit)的字节开始按 照存储器的地址升序存储的方式。图3表示小端字节序的说明图。如图所示,以小端字节序将4字节 数据"0X12345678"存储在地址为0X1000-0X1003位置情况下,按照 地址号码的升序,依次存储"78" 、 "56" 、 "34" 、 "12"。图4表示32位数据总线情况下小端字节序CPU与存储器连接的一 般结构。如图所示,CPU的数据总线D[7: 0]、 D[15: 8]、 D[23: 16]、 D[31: 24]分别连接到存储器的D[7: 0〗、D[15: 8]、 D[23: 16]、 D[31: 24]上。这样,大端字节序、小端字节序将2个字节以上的数据存储在存储 器中字节列的次序顺序相反。由于存在这种差异,目前多使用两种方式 一个是软件方式,通过对字节序反转处理来适应字节序变化; 一个是硬 件方式,数据线接线上的反接等手段来适应字节序的变化。但是当存储 器采用BOOT FLASH时,无法通过软件方式来改变字节序,这样给硬 件设计带来很大风险。申请号为200410030047.9的中国专利公开了 一种字节序不同的处理 器间共享数据的数据共享装置和处理器,此发明的实现主要基于对处理 器的凝:据地址的变换,虽然可用于解决存储器是BOOT FLASH时无法 通过软件方式改变字节序的问题,但是需要对处理器进行较大的改进, 耗费较大的成本,不利于实现。发明内容本发明所要解决的技术问题是提供一种不同字节序的处理器与BOOT FLASH间的连接装置及其实现方法,使得处理器简单灵活地选 择与BOOT FLASH之间的字节序接口方式。为解决上述技术问题,本发明是通过以下技术方案实现的 一种处理器与BOOT FLASH间的连接装置,该装置包括总线逻 辑处理单元、控制单元、成功启动寄存器;所述成功启动寄存器,用于存储BOOT FLASH的启动标识; 所述控制单元,用于监测所述启动标识,据此判断BOOT FLASH 是否成功启动,若启动成功,则向总线逻辑处理单元发送直接传递总线 信号的控制信号;若启动失败,则向总线逻辑处理单元发送对总线中的 数据总线信号进行按字节序反转处理后再进行传递的控制信号;所述总线逻辑处理单元,采用默认的连接方式与所述处理器相连,连,根据所述控制信号对处理器和BOOT FLASH间的总线信号进行处 理和传递。其中,所述控制单元还用于在对所述数据总线进行按字节序反转处 理后,向所述处理器发送复位信号,提示该处理器进行复位。 一种如上所述连接装置的实现方法,包括以下步骤 (1 )本装置的总线逻辑处理单元采用默认的连接方式与处理器的FLASH相连,将处理器的总线信号直接传递给BOOT FLASH,不作任 何处理;(2 )本装置的控制单元根据成功启动寄存器中的启动标识判断BOOT FLASH是否成功启动,若启动成功,则所述总线逻辑处理单元 继续在处理器和BOOT FLASH之间直接传递总线信号,不作任何处理; 若启动失败,则总线逻辑处理单元先将处理器的总线中的数据总线信号 按照字节序反转,再进行总线信号的传递。其中,所述步骤(2)中还包括在将所述数据总线信号按照字节 序反转后,向所述处理器发送复位信号,提示该处理器进行复位。其中,所述步骤(1)中默认的连接方式为大端连接方式或者小端 连接方式。其中,所述处理器的字节序为大端字节序或者小端字节序。 本发明具有以下有益效果不管采用何种字节序的CPU, CPU和BOOT FLASH与本发明的连 接装置都可以采用固定的硬件连接方式,在CPU与BOOT FLASH的字 节序不一致时,连接装置可对数据总线信号进行按照字节序反转处理, 因而可实现不同字节序CPU与BOOT FLASH间字节序连接方式的动态 选择,且方法简便,成本较低。


图1是大端字节序的说明图; 图2是小端字节序的说明图;图3是现有技术中大端字节序的CPU与存储器的连接示意图; 图4是现有技术中小端字节序的CPU与存储器的连接示意图; 图5是应用了本发明连接装置的CPU与BOOT FLASH的连接示意图;图6是本发明连接装置的实现方法流程图。
具体实施方式
下面将结合附图及具体实施例对本发明作进一步详细的描述请参阅图5,该图为应用了本发明连接装置的CPU与存储器的连接 示意图,其中的连接装置为可编程逻辑器件,是ROM类型的PLD器件; 存储器是BOOT FLASH,业界BOOT FLASH通常采样8位或者16位 数据总线宽度的NOR FLASH,由于8位数据总线的情况不存在字节序 的问题,所以本发明只需考虑16位数据总线宽度的情况;CPU可以使 大端字节序,也可以是小端字节序。在应用过程中,连接装置与CPU和存储器的总线接口分别固定连 接,其中连接装置与CPU的数据总线采用默认的连接方式(大端连接 方式或者小端连接方式)。连接装置包括以下几部分总线逻辑处理单元、控制单元、成功启 动寄存器。成功启动寄存器,用于存储存储器的启动标识,其默认值为0;若 存储器成功启动,则将启动标识更改为非0数据;若存储器启动失败, 则不对该启动标识进行:操作。控制单元,用于监测启动标识,据此判断存储器是否成功启动,若 启动成功,则向总线逻辑处理单元发送直接传递总线信号的控制信号; 若启动失败,则向总线逻辑处理单元发送对总线中的数据总线信号进行 按字节序反转处理后再进行传递的控制信号;还用于控制CPU的复位。总线逻辑处理单元,用于根据控制单元的控制信号在CPU和存储器之间进行总线信号的处理和传递。请参阅图6,该图为本实施例中连接装置的实现方法,包括以下步骤601 、总线逻辑处理单元与CPU采用默认的大端连接方式进行连接, 对输入的数据信号不做任何处理,直接送到存储器。602、 如果存储器中的代码能够正常运行,就会向成功启动寄存器 写入非0数据;若不能正常运行,则不进行操作,保持启动标识的默认 值不变。此过程中,控制单元不断地检测成功启动寄存器,若#佥测到非 0数据,表明CPU与存储器连接采用的字节序与存储器中的代码的编译 字节序一致,均为大端字节序,则总线逻辑处理单元直接传递总线信号, 不作任何处理;否则,表明CPU为小端字节序,继续下一步。603、 总线逻辑处理单元将CPU的数据信号按照字节序反转。604、 控制单元在短暂延时后向CPU发出复位信号,然后取消复位, 再次开始启动过程,CPU重新通过总线逻辑处理单元传递总线信号。由上可知,在硬件连接和启动程序均正确的情况下,经过两次启动递。下面,分别以大端字节序CPU和小端字节序CPU的BOOT FLASH 的启动过程为例进行描述,BOOT FLASH侧采用大端连接方式 大端字节序CPU:i、由于默认情况采用大端连接方式,连接装置对数据信号不做任 何处理,与BOOT FLASH直4妻相连,即DjN
与DJ3UT
直接连接。上电后,大端字节序CPU读取并运行BOOT FLASH中的代码, 并向B中的成功启动寄存器success—reg写入非0数据。ii、连接装置不断地检测成功启动寄存器success—reg,当纟企测到非 0数据时,表明CPU与BOOT FLASH连接采用的字节序与BOOT FLASH中的代码的编译字节序一致。此时,连接装置对CPU的复位信 号不会送出,BOOT FLASH启动成功。小端字节序CPU:I、开始过程与大端字节序CPU的过程i相同,如果连接装置检 测成功启动寄存器success一reg的数据一直为0,认定此次启动失败。II 、连接装置对输入的数据信号按照字节序反转,短暂延时后向 CPU发出复位信号,然后取消复位。m、再次开始启动过程。经过二次启动后,小端字节序CPU和BOOTFLASH就能够进行正常的数据传递。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡 在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应 包含在本发明的保护范围之内。
权利要求
1、一种处理器与BOOT FLASH间的连接装置,其特征在于,该装置包括总线逻辑处理单元、控制单元、成功启动寄存器;所述成功启动寄存器,用于存储BOOT FLASH的启动标识;所述控制单元,用于监测所述启动标识,据此判断BOOT FLASH是否成功启动,若启动成功,则向总线逻辑处理单元发送直接传递总线信号的控制信号;若启动失败,则向总线逻辑处理单元发送对总线中的数据总线信号进行按字节序反转处理后再进行传递的控制信号;所述总线逻辑处理单元,采用默认的连接方式与所述处理器相连,并根据BOOT FLASH的字节序采用相应的连接方式与BOOTFLASH相连,根据所述控制信号对处理器和BOOT FLASH间的总线信号进行处理和传递。
2、 如权利要求1所述的不同字节序的处理器与BOOT FLASH间 的连接装置,其特征在于,所述控制单元还用于在对所述数据总线进 行按字节序反转处理后,向所述处理器发送复位信号,提示该处理器 进行复位。
3、 一种如权利要求1所述连接装置的实现方法,其特征在于, 包括以下步骤(1 )本装置的总线逻辑处理单元采用默认的连接方式与处理器 的总线相连,并根据BOOT FLASH的字节序采用相应的连接方式与 BOOT FLASH相连,将处理器的总线信号直接传递给BOOT FLASH, 不作任何处理;(2 )本装置的控制单元根据成功启动寄存器中的启动标识判断BOOT FLASH是否成功启动,若启动成功,则所述总线逻辑处理单 元继续在处理器和BOOT FLASH之间直接传递总线信号,不作任何 处理;若启动失败,则总线逻辑处理单元先将处理器的总线中的^:据 总线信号按照字节序反转,再进行总线信号的传递。
4、 如权利要求3所述的连接装置的实现方法,其特征在于,所 述步骤(2)中还包括在将所述数据总线信号按照字节序反转后, 向所述处理器发送复位信号,提示该处理器进行复位。
5、 如权利要求3或4所述的连接装置的实现方法,其特征在于, 所述步骤(1 )中默认的连接方式为大端连接方式或者小端连接方式。
6、 如权利要求3或4所述的连接装置的实现方法,其特征在于, 所述处理器的字节序为大端字节序或者小端字节序。
全文摘要
本发明公开了一种处理器与BOOT FLASH间的连接装置及实现方法,连接装置包括总线逻辑处理单元、控制单元、成功启动寄存器;成功启动寄存器,用于存储BOOT FLASH的启动标识;控制单元,用于监测启动标识,判断BOOT FLASH是否成功启动,若成功,则向总线逻辑处理单元发送直接传递总线信号的控制信号;若失败,则向总线逻辑处理单元发送对总线中的数据总线信号进行按字节序反转处理后再进行传递的控制信号;总线逻辑处理单元,采用默认的连接方式与处理器相连,根据BOOT FLASH的字节序采用相应的连接方式与其相连。本发明实现了不同字节序CPU与BOOT FLASH间字节序连接方式的动态选择,且方法简便,成本较低。
文档编号G06F13/16GK101324868SQ20081006846
公开日2008年12月17日 申请日期2008年7月11日 优先权日2008年7月11日
发明者王凤彬 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1