1)Cpu根据SYS_PLL_RAT的值决定当前CPU的平台时钟对SYS_CLK的倍频参数; 2)Cpu根据CCn_PLL_RAT等值决定e500
core的时钟频率,目前跑1.5G(CPU版本2); 3)CPU根据BOOT_LOC决定Boot
ROM的位置。 4)Cpu根据BOOT_H复位时执行boot代码的Core,这里是core0。 以上,对软件来说最重要的配置是Boot
ROM位置的配置。在硬件连接无误的情况下,P4080启动的配置为: core0启动,core1~core7等待(hold
off); 从Local bus GPCM—8-bit ROM启动; 根据e500mc的硬件手册,CPU复位后执行的第一条指令的地址是0xFFFF,FFFC。因此,CPU要能正确执行U-boot代码,至少需要下面几个条件: 1) Local Access
Window能正确转换U-boot代码的物理地址空间 2) Local
Bus能正确转换U-boot代码的物理地址空间 3)
MMU能正确转换U-boot代码的有效地址空间(e500mc核的MMU无法关闭) 首先,根据P4080手册,Local Access
Window对Boot
ROM的地址转换,不通过LAW寄存器配置。在复位时,映射0x0_FF80_0000到启动地址(硬件配置为Local
bus
GPCM),共8M空间。这样解决了第一个问题。(手册中有这么一句话:
Also note that the boot window is always enabled and covers local
addresses from 0x0_FF80_0000 to 0x0_FFFF_FFFF.) 接着,P4080复位时Local Bus
Control寄存器BRn/ORn有默认值为全0,设定了第0个Local
Bus
Bank的地址空间是从0x0000_0000开始的4G空间,且MSEL=GPCM。这样,所有映射到Local
Bus上的地址都会使CS0有效。 然后,MMU在复位时也有默认值。实际上,虽然e500mc的MMU有16个TLB1和512个TLB0,复位时仅TLB1的Entry0有效。Entry0将0xFFFF,F000开始的4k有效地址空间映射到0xFFFF,F000开始的4k物理地址空间中,TLB1的Entry0配置如下表所示: