P2020启动过程

P2020启动过程

ID:40752051

大小:110.31 KB

页数:9页

时间:2019-08-07

P2020启动过程_第1页
P2020启动过程_第2页
P2020启动过程_第3页
P2020启动过程_第4页
P2020启动过程_第5页
资源描述:

《P2020启动过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、系统上电到执行第一条指令前,需要经过配置PLL、LocalBus控制器、LAW、MMU等操作,这些配置完全是由Cpu根据芯片的默认值和芯片外部配置引脚的输入状态自动完成的。如:1)    Cpu根据cfg_sys_pll[0:2]的输入状态决定当前CPU的BBC对SYS_CLK的倍频参数;2)    Cpu根据cfg_ddr_pll[0:2] 的输入状态决定DDR的时钟频率(DDR2和DDR3不同);3)    Cpu根据cfg_core0_pll[0:2]/cfg_core1_pll[0:2]的输入状态决定当前CPU的cor0/cor1对CCB的倍频参数;4)    Cpu

2、根据cfg_cpu0_boot和cfg_cpu1_boot的输入状态决定复位时执行boot代码的Core,如下图所示:  5)    Cpu根据cfg_rom_loc[0:3]的输入状态决定BootROM的位置。6)    其它根据外部输入状态决定的配置。以上,对软件来说最重要的配置是BootROM位置的配置。BootROM位置与cfg_rom_loc[0:3]输入状态的关系如下图所示:在硬件连接无误的情况下,P2020启动的配置为:cfg_cpu0_boot=1,core0启动;cfg_cpu1_boot=0,core1等待;cfg_rom_loc[0:3]=1110,从L

3、ocalbusGPCM—16-bitROM启动;根据P2020的硬件手册,Cpu复位后执行的第一条指令的地址是0xFFFF,FFFC。因此,Cpu要能正确执行U-boot代码,至少需要下面几个条件:l         LocalAccessWindow能正确转换U-boot代码的物理地址空间l         LocalBusControl能正确转换U-boot代码的物理地址空间l         MMU能正确转换U-boot代码的有效地址空间(e500核的MMU无法关闭)首先,根据P2020手册,LocalAccessWindow对BootROM的地址转换,不通过LAW寄存

4、器配置。在复位时,映射0x0_FF80_0000到启动地址(硬件配置为LocalbusGPCM),共8M空间。这样解决了第一个问题。接着,P2020复位时LocalBusControl寄存器BRn/ORn有默认值为全0,设定了第0个LocalBusBank的地址空间是从0x0000_0000开始的4G空间,且MSEL=GPCM。这样,所有映射到LocalBus上的地址都会使CS0有效。然后,MMU在复位时也有默认值。实际上,虽然P2020的MMU有16个TLB1和512个TLB0,复位时仅TLB1的Entry0有效。Entry0将0xFFFF,F000开始的4k有效地址空间映

5、射到0xFFFF,F000开始的4k物理地址空间中,TLB1的Entry0配置如下表所示:  有了以上的配置,P2020Cpu复位时就能够从连接在LocalBus的CS0上的NorFlash执行第一条指令了。具体过程如下:Cpu从0xFFFF,FFFC有效地址开始执行,先经过MMU转换得到物理地址0xFFFF,FFFC;然后,LocalAccessWindow的特殊转换直接将0xFFFF,FFFC转换到Cpu的外围器件LocalbusGPCM—16-bitROM上;最后,由于LocalBus的CS0覆盖了4G空间,0xFFFF,FFFC直接被送到了NorFlash(BootF

6、lash)的地址总线上。如果外接BootFlash只有16M BYTE,则地址总线仅24位,0xFFFF,FFFC代表了Flash0xFF,FFFC的地址。/cpu/mpc85xx/u-boot.lds文件是连接器脚本文件,其中:.bootpgRESET_VECTOR_ADDRESS-0xffc:{cpu/mpc85xx/start.o       (.bootpg)}:text=0xffff规定了/cpu/mpc83xx/start.s的_start_e500代码段放在Flash倒数4K的位置。.resetvecRESET_VECTOR_ADDRESS:{        *

7、(.resetvec)}:text=0xffff规定了复位后从resetvec段开始取指令,这个resetvec段放在FFFFFFFC的位置,在/cpu/mpc85xx/resetvec.s中可以看到e500核从倒数第4个字节处取的是一条跳转指令为:b_start_e500跳转到位于倒数4K位置的_start_e500标号处。   _start_e500开始的代码会在空间1里建立一个4M的Entry映射,使用的是Entry15,这样就把所有的uboot代码都可以访问到了。然后再会跳到_start标号开始

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。