Boot代码的存取

Boot代码的存取

在大部分RapidIO应用中,系统初始化要求有用于探测和初始化器件的软件,系统初始化通常由一个处理器或一组处理器来执行,处理器的boot代码可以放在本地ROM里,也可以在一个远程代理器件那里,因为系统还没有初始化,这时,如果boot代码存放在远程代理器件那儿,我们需要一个特殊的方法让处理器通过一个还没有初始化的系统来存取到boot代码。

在复位之后,处理器通常向一个固定的地址发出代码存取请求,在处理器和RapidIO架构之间的代理硬件要求能够接收这个请求,自动将它映射成NREAD交易,这个交易以一个适当的地址偏移被映射到一个专用的器件ID上以便发现Boot代码。在处理器和存放有boot ROM的代理器件之间的所有器件应该有个缺省状态,都会将这个NREAD交易路由到Boot ROM器件,并把其响应路由回处理器。存有boot代码的代理器件的器件ID是0xFE(0x00FE),处理器缺省器件ID是从0x00开始,逐渐增加,顺序分配的。因为需要取boot代码的的都HOST,而HOST是系统设计的时候就确定的,其ID也是设计时就是这么分配好了。

Boot代码的存取

图2-1显示了带有boot ROM系统的一个例子,boot ROM存在一个代理器件上,在处理器和代理之间的交换器件的缺省路由状态应该是将所有对器件ID为0xFE的请求路由到代理器件,并将从代理那儿获得所有的响应包返回给处理器。这意味着交换机必须知道取boot代码的处理器的器件ID,处理器的器件ID是从0x00开始的。对于图2-2的例子,系统处理器缺省器件ID为0x00,交换机的缺省状态是路由器件ID=0x00到port 2。

Boot代码的存取

一旦处理器能开始运行boot代码,它就开始执行系统余下的探测和初始化。