MPC8314(e300核)uboot调试分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MPC8314(e300 核)uboot 调试 历经 2 个多月,完成了MPC8314 最小系统(uboot)及 Linux 内核和根文件系统的调试。这是我第一次从头开始做小系统和内核的移植工作,虽然调试的比较辛苦,但是收获还是很多的。下面就介绍一下调试的过程和一些原理性的东西。 MPC8314 上电流程 系 统上 电 后, 经 过 若干 个 时 钟后 , MPC8314 会 检 测 复位 配 置 输入 信 号CFG_RESET_SOURCE[0:3] 来确定硬件配置字源选择,在目标板上可以设置跳线来改变CFG_RESET_SOURCE[0:3] ,选择硬件配置字源。本系统中的硬件配置字存放在CPLD 模拟的 Flash 空间中。 从相应的地方读取硬件配置字(RCWL,RCWH)后,会设置相应的寄存器。其中 RCWH 中的 BMS 位值为 1,定义了 e300 核心的 MSR[IP]位初始值,如上图所示,MSR[IP]为 1 决定中断向量的前缀为 0xFFF,启动存储空间的位置为0xFF80_0000~0xFFFF_FFFF;SWEN 位为 0,禁止软件看门狗;ROMLOC 位为 0b110,RLEXT 位为 0b00 确定了选择 local bus GPCM-16bit ROM 为启动 ROM。复位向量和本地地址映射的默认启动 ROM 访问将直接指向 ROMLOC 指定的接口。选中的启动 ROM 的本地访问窗口(LBLAW0)将被使能,并初始化基地址 LBLAWBAR0 为 0xFF80_0000,窗口大小为 8M。这时,Local Bus 上的片选 CS0 的寄存器值为 BR0:0000_0000,OR0:0000_0000。整个 4G 空间全是 ROM,每 16M 重复一次。 中断向量的前缀为 0xFFF,复位向量为 100,决定了系统复位后的第一条指令从 0xFFF0_0100 处获得。 /cpu/mpc83xx/u-boot.lds 文件时连接器脚本文件,其中 .text : { cpu/mpc83xx/start.o (.text) o 。 。 。 。 } o 。 。 。 。 。 ENTRY(_start) 规定了代码段从/cpu/mpc83xx/start.s 开始。而 ENTRY(_start)这一句告诉编译器 uboot.bin 的镜像入口点为 start.s 中的_start 标号。 所以,我们要将 UBOOT的代码烧写到 16M Flash 中偏移15M 的地方,保证了从 0xFFF0_0100 的空间取到的指令为 uboot 代码。并且还需要保证 0xFFF0_0100 为start 标号。 uboot 启动流程 uboot 启动概述 Uboot 的 启 动 是 从 /cpu/mpc83xx/start.s 中 的 _start 标 号 开 始 的 , 经 历 了 /cpu/mpc83xx/start.s,/cpu/mpc83xx/cpu_init.c ,/lib_ppc/Board.c 等几个文件中的多个汇编和C 函数,最后会在/lib_ppc/Board.c 中的 board_init_r 函数中进入命令死循环,等待执行键入的命令。其具体的流程如下图所示: init_e300_core 函数 初始化 e300 核心,禁止中断响应,只允许 machine check 中断和 system reset 中断,禁止指令和数据地址转换,即关闭 MMU,进行实地址转换,设置为 supervisor 级别,禁止看门狗,无效指令和数据 cache,等,为系统创建一个干净可靠的初始环境。 窗口重映射 从前面 MPC8314 上电流程可以看出,上电之后,第一条代码是从 0xFFF0_0100 的地方开始执行的,但是 flash 并不一定会分配在 0xFF00_0000 到 0xFFFF_FFFF 的地方(以我们 16M 的为例)。在本系统中,Flash 的地址就被分配到了 0xFE00_0000 到 0xFEFF_FFFF 的地方。所以这其中需要做一个跳转,这正是这段代码中 map_flash_by_law1,remap_flash_by_law0 等函数要做的,具体的流程可以由下面的五张图来说明: 开始时,BR0,OR0 为全零,4G 全是重复的 Flash,CPU 通过 LBLAW0 访问 Flash 空间 FF80_0000 到 FFFF_FFFF。 map_flash_by_law1 函数使用 LBLAW1 映射 FE00_0000 到 FEFF_FFFF 这段空间。 跳转到FE00_0000 这段空间执行代码,由于 4G 空间重复,只要偏移地址计算正确就会顺序执行。 remap_flash_by_law0

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档