P2020启动过程
更新时间:2024-04-13 08:11:01 阅读量: 综合文库 文档下载
- p2020处理器推荐度:
- 相关推荐
系统上电到执行第一条指令前,需要经过配置PLL、Local Bus控制器、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根据cfg_cpu0_boot和cfg_cpu1_boot的输入状态决定复位时执行boot代码的Core,如下图所示:
5) Cpu根据cfg_rom_loc[0:3]的输入状态决定Boot ROM的位置。 6) 其它根据外部输入状态决定的配置。
以上,对软件来说最重要的配置是Boot ROM位置的配置。Boot ROM位置与cfg_rom_loc[0:3]输入状态的关系如下图所示:
在硬件连接无误的情况下,P2020启动的配置为: cfg_cpu0_boot=1,core0启动; cfg_cpu1_boot=0,core1等待;
cfg_rom_loc[0:3] =1110,从Local bus GPCM—16-bit ROM启动; 根据P2020的硬件手册,Cpu复位后执行的第一条指令的地址是
0xFFFF,FFFC。因此,Cpu要能正确执行U-boot代码,至少需要下面几个条件: ? Local Access Window能正确转换U-boot代码的物理地址空间 ? Local Bus Control能正确转换U-boot代码的物理地址空间
? MMU能正确转换U-boot代码的有效地址空间(e500核的MMU无法关闭)
首先,根据P2020手册,Local Access Window对Boot ROM的地址转换,不通过LAW寄存器配置。在复位时,映射0x0_FF80_0000到启动地址(硬件配置为Local bus GPCM),共8M空间。这样解决了第一个问题。
接着,P2020复位时Local Bus Control寄存器BRn/ORn有默认值为全0,设定了第0个Local Bus Bank的地址空间是从0x0000_0000开始的4G空间,且MSEL=GPCM。这样,所有映射到Local Bus上的地址都会使CS0有效。
然后,MMU在复位时也有默认值。实际上,虽然P2020的MMU有16个TLB1和512个TLB0,复位时仅TLB1的Entry0有效。Entry0将0xFFFF,F000开始的4k有效地址空间映射到0xFFFF,F000开始的4k物理地址空间中,TLB1的Entry0配置如下表所示:
有了以上的配置,P2020 Cpu复位时就能够从连接在Local Bus的CS0上的Nor Flash执行第一条指令了。具体过程如下:
Cpu从0xFFFF,FFFC有效地址开始执行,先经过MMU转换得到物理地址0xFFFF,FFFC;然后,Local Access Window的特殊转换直接将0xFFFF,FFFC转换到Cpu的外围器件Local bus GPCM—16-bit ROM上;最后,由于Local Bus的CS0覆盖了4G空间,0xFFFF,FFFC直接被送到了Nor Flash(Boot Flash)的地址总线上。如果外接Boot Flash只有16M BYTE,则地址总线仅24位,0xFFFF,FFFC代表了Flash 0xFF,FFFC的地址。
/cpu/mpc85xx/u-boot.lds文件是连接器脚本文件,其中: .bootpg RESET_VECTOR_ADDRESS - 0xffc: {
cpu/mpc85xx/start.o (.bootpg) } :text = 0xffff
规定了/cpu/mpc83xx/start.s的_start_e500代码段放在Flash倒数4K的位置。 .resetvec RESET_VECTOR_ADDRESS: {
*(.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标号开始的地方,_start标号位于倒数512K的位置,在这之后的过程和e300核的start.s类似。
E500核的u-boot的启动是从/cpu/mpc85xx/start.s中的_start_e500标号开始的,经历了/cpu/mpc85xx/start.s,/cpu/mpc85xx/cpu_init_early.c,/cpu/mpc85xx/cpu_init.c,/lib_ppc/Board.c等几个文件中的多个汇编和C函数,最后会在/lib_ppc/Board.c中的board_init_r函数中进入命令死循环,等待执行键入的命令。其具体的流程如下图所示:
_start_e500函数
正在阅读:
P2020启动过程04-13
浅谈军旅舞蹈《刀锋》的舞台表现力07-06
经济学硕士毕业论文06-16
2018年第1学期《管理学原理》平时作业题2018.101-30
会计电算化习题05-08
18年高考英语二轮复习专题08阅读填空练含解析180307114406-02
生产成本核算系统09-04
岗位证考前习题06-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 过程
- 启动
- P2020
- 微观经济学课后题答案--高鸿业主编 - 图文
- XX公司步行街招商策划书
- 小学一年级经典诵读教案
- 入院、出院、转科、转院、留观制度与流程规范
- 湖北省枣阳市第七中学2016届高三地理下学期期中试题
- 关于征求意见的情况报告
- 跨国企业并购案例分析
- 新文化运动、五四运动与中国共产党的诞生
- 第十四周实验内容1
- 山东省临沭县2013-2014学年高二数学下学期期中教学质量抽测试题
- 水吸收二氧化硫填料吸收塔设计说明书完整版 - 图文
- 第三章:数码相机基本功能
- 企业形象策划课程设计 - 乳业 - 图文
- 会计学复习资料
- 2012-2013学年下学期高一期末复习数学综合练习2
- 明朝经济史之明中叶的土地兼并与赋役制度改革
- 拥有一颗感恩的心
- 杨浦区2016年高三英语一模试卷 - 图文
- C语言上机题目汇总
- 结构力学模拟试题