作者:michael.kang(
[email protected])
关键字:MPC8650 TLB CPM u-boot skyeye
简介
本文介绍了u-boot在MPC8560平台上的代码实现,并结合MPC8560平台的特性,对u-boot的对MPC8560处理器的启动代码进行了分析。最后我们还介绍了在SkyEye上运行MPC8560的u-boot镜像。
前言:
MPC8560平台是freescale公司是PowerpcQUICC II的下一代通讯处理器。它为网络和通讯外设提高了强大的计算能力,从而提高了整个系统的吞吐量和性能。它的主要架构是由一个高性能的e500的核和一个通讯处理器模块(CPM)组成. e500的核实现了powerpc BOOK E的ISA。
u-boot是一个目前最为流行的bootloader,它的特点是功能强大,支持的硬件平台非常多。目前在u-boot .1.1.6已经对MPC8650平台有很好的支持。
1、u-boot编译
编译MPC8560的u-boot,我们首先要下载支持e500的cross toolchain,我们可以在http://www.crosstool.org/ 网站下载cross的0.43版本,然后从以下链结再下载e500的补丁文件。
http://ozlabs.org/pipermail/linuxppc-embedded/2005-January/016398.html
在解压cross的0.43版本,并且打完我们下载的两个e500的补丁之后,我们可以运行一下命令来生成e500的toolchain:
./demo-e500.sh
在默认配置下,e500的交叉编译器会生成在/opt/crosstool目录下
然后我们运行export命令设置交叉编译器的路径
export PATH=$PATH:/opt/crosstool/gcc-3.4.3-glibc-2.3.3/powerpc-linux-gnuspe/bin/
在制作完交叉编译器之后,我们就可以开始编译u-boot了,这个我们很容易的运行下面的命令就可以完成:
make MPC8560ADS_config CROSS_COMPILE=powerpc-linux-gnuspe-
make CROSS_COMPILE=powerpc-linux-gnuspe-
当前目录下会出现u-boot的文件,这个就是我们编译出来的MPC8560的u-boot镜像文件。
2、u-boot代码分析
按照e500的架构描述,MPC8560启动时,会执行0xFFFF_FFFC地址的指令,这里存放的是u-boot代码中的cpu/
mpc85xx/resetvec.S一条跳转指令,如下:
b _start_e500
然后u-boot就开始执行cpu/mpc85xx/start.S处的_start_e500函数,这个函数比较长,我们进行主段分析:
mfspr r0, PVR
lis r1, PVR_85xx_REV1@h
ori r1, r1, PVR_85xx_REV1@l
cmpw r0, r1
bne 1f
然后在跳转到_start函数中执行:
在_start函数的最后,会调到:
bl cpu_init_f
bl icache_enable
bl board_init_f
在board_init_f的最后,会调用relocate_code函数,把一部分代码拷贝到ram中执行。 3、在SkyEye上运行MPC8560的u-boot
从skyeye的SVN中获得最新的SkyEye源码,并且运行make编译skyeye.我们可以在binary目录下找到SkyEye
的可执行文件
然后把这个可执行文件拷贝到u-boot的源码目录,并且在u-boot的源码目录下编译MPC8560的skyeye配置文件
skyeye.conf,内容为:
#skyeye config file sample
arch:ppc
cpu:e500
mach:mpc8560
mem_bank: map=M, type=RW, addr=0xFF000000, size=0x1000000
然后运行 "./skyeye -e u-boot", 我们就可以看到u-boot可以成功的在SkyEye上运行起来。
需要注意:
SKyEye还在不断更新过程中,本文描述的一些过程可能会有改变。请到Skyeye的官方网站查找关于运行
MPC8560的一些信息。