powerpc mpc8313调试实验流程

来源:互联网 发布:人女捏脸数据 编辑:程序博客网 时间:2024/05/21 14:57

原文地址:http://blog.myspace.cn/e/407330520.htm

 

mpc8313调试实验流程
硬件:1. MPC8313ERDB development board
        2. usbtap JTAG
软件:1. codewarrior for powerpc
        2. powerpc-linux-gcc
        3. u-boot
        4. linux kernel
一、 CPU片选分配和地址映射
address range         target interface        chip-select line        device name             port size(bits)
0x00000000~0x07ffffff    DDR2                  MCS0#        DDR SDRAM(128 Mbyte)          32
0x80000000~0x9fffffff     PCI                    Nil               PCI memory space(512Mbyte)  32
0xe0000000~0xe00fffff    internal bus         Nil              IMMR(1 Mbyte)                      
0xe2000000~0xe20fffff    PCI                    Nil              PCI I/O space(1 Mbyte)            32
0xe2800000~0xe2807fff   NAND controller   LCS1#         NAND flash(32kbyte)                8
0xf0000000~0xf001ffff     local bus             LCS2#        vsc7385(128kbyte)                   8
0xfa000000~0xfa07ffff     local bus             LCS3#        read/write buffer(32kbyte)        8
0xfe000000~0xfe7fffff      local bus             LCS0#        boot flash(8Mbyte)                  16
二、flash起始地址和内容分配
start ~ end                        definition
0xfe000000~0xfe0fffff         u-boot
0xfe100000~0xfe2fffff         linux kernel
0xfe300000~0xfe6fffff         ramdisk/jffs file system
0xfe700000~0xfe70ffff        of tree
0xfe710000~0xfe72ffff        vitesse 7385 image_loader program
0xfe730000~0xfe7fdffff       reserved 
0xfe7fe000 ~0xfe7ffffff       vitesse 7385 firmware image
三、编译u-boot并使用 codewarrior下载
u-boot$>make MPC8313ERDB_33_config
u-boot$>make all CROSS_COMPILE=powerpc-linux-
在进行u-boot烧写时先将拨码开关设置如下:
Switch    1    2    3    4
SW3       1    0    1    1
SW4       1    1    1    1
烧写完成后关闭电源将其设置为默认如下:
Switch    1    2    3    4
SW3       0    0    0    0
SW4       1    1    1    1
连接好串口和网络接口,打开超级终端,启动 u-boot至命令提示符。
使用setenv设置环境变量(正确的环境变量设置是启动linux保证)设置内容如下:
(需要根据自身硬件 环境修改)

CPU:   e300c3, MPC8313, Rev: 1.0 at 333.333 MHz, CSB: 166.667 MHz
Board: Freescale MPC8313ERDB
I2C:   ready
DRAM:  128 MB
FLASH:  8 MB
NAND:  32 MiB
In:    serial
Out:   serial
Err:   serial
Net:   TSEC0: No support for PHY id ffffffff; assuming generic
TSEC0, TSEC1 [PRIME]
Hit any key to stop autoboot:  0
=> printenv
ramboot=setenv rootdev /dev/ram;run setbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr

nfsboot=setenv rootdev /dev/nfs;run setbootargs;run setipargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr

baudrate=115200
loads_echo=1
ethaddr=00:E0:0C:00:95:01
eth1addr=00:E0:0C:00:95:02

rootpath=/nfs/root/path
hostname=mpc8313erdb
bootfile=uImage
netdev=eth1
ethprime=TSEC1
uboot=u-boot.bin

tftpflash=tftpboot $loadaddr $uboot; protect off 0xFE000000 +$filesize; erase 0xFE000000 +$filesize; cp.b $loadaddr 0xFE000000 $filesize; protect on 0xFE000000 +$filesize; cmp.b $loadaddr 0xFE000000 $file

fdtfile=mpc8313erdb.dtb
console=ttyS0
setbootargs=setenv bootargs root=$rootdev rw console=$console,$baudrate $othbootargs
setipargs=setenv bootargs nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off root=$rootdev rw console=$console,$baudrate $othbootargs
ethact=TSEC1
loadaddr=200000
fdtaddr=400000
bootcmd=bootm fe100000 fe300000 fe700000

bootdelay=3
ramdiskaddr=fe300000
filesize=460000
fileaddr=1000000
famdiskfile=rootfs.ext2.gz.uboot
ramdiskfile=rootfs.ext2.gz.uboot


netmask=255.255.255.0
bootargs=nfsroot=192.168.3.100:/nfs/root/path ip=192.168.3.200:192.168.3.100:192.168.3.1:255.255.255.0:mpc8313erdb:eth1:off root= rw console=ttyS0,115200
rootdev=/dev/nfs run setbootargs run setipargs bootm fe100000 - fe700000
imboot=setenv rootdev /dev/nfs run setbootargs run setipargs bootm fe100000 - fe700000
ipaddr=192.168.2.201
serverip=192.168.2.200
gatewayip=192.168.2.1

stdin=serial
stdout=serial
stderr=serial

Environment size: 1672/8188 bytes

=>setenv shiboot rootdev "/dev/nfs; run setbootargs; run setipargs; bootm fe100000 - fe700000"
四、编译linux内核和结点文件dts驱动树
1. 编译内核(略)
2. 编译驱动树文件dts
linux-2.6.x/arch/powerpc/boot/dts$ dtc -b 0 -V 17 -R 4 -S 0x3000 -I dts -O dtb -f mpc8313erdb.dts > mpc8313.dtb
生成 mpc8313.dtb后搭建tftp服务
将编译好的内核、文件系统、驱动树文件的bin放在搭建好的tftp目录下。
五、使用tftp进 行内核、文件系统、驱动树文件的下载。
1. 烧写内核
=>tftp 200000 uImage
=>erase fe100000 fe2fffff
=>cp.b 200000 fe100000 $size(uImage文件大小)
2. 烧写文件系统
=>tftp 1000000 rootfs.ext2.gz.uboot
=>erase fe300000 fe6fffff
=>cp.b 1000000 fe300000 $size(rootfs.ext2.gz.uboot文件大小)
3. 烧写驱动树文件
=>tftp 400000 mpc8313.dtb
=>erase fe700000 fe70ffff
=>cp.b 400000 fe700000 $size(mpc8313.dtb)
至此boot kernel filesystem dtb全部烧写完成,重启开发板启动至linux。

六、驱动程序加载
1. ping通网络使用NFS进行驱动加载。
/$> mount -t nfs -o nolock 192.168.x.x:/pctree/nfs/ /mnt
2. 加载/卸载驱动
/mnt>insmod **.ko
/mnt>rmmod **.ko

原创粉丝点击