这篇笔记大约是一年前写的,理解应该有些问题,不过还是贴在这吧,记录一下以前摸索的过程。
U7 即bank0
start FE00_0000 active HRCW start
FE70_0000 (alternate U-Boot start - optional)
end FE7F_FFFF
U4 即bank1
start FE80_0000 (alternate HRCW start - optional)
FEF0_0000 active U-Boot start
end FEFF_FFFF
J22 E有跳线(0) 意味着MPC8349E从Flash1(U7)中获取复位向量(default)
以下bdinfo的信息
memstart = 0x00000000
memsize = 0x10000000
flashstart = 0xFE000000
flashsize = 0x01000000
flashoffset = 0x00000000
sramstart = 0x00000000
sramsize = 0x00000000
bootflags = 0x00000001
intfreq = 533.333 MHz
busfreq = 266.666 MHz
ethaddr = 08:00:3E:03:01:10
eth1addr = 08:00:3E:03:01:11
IP addr = 59.64.155.79
baudrate = 115200 bps
J22 E无跳线(1) 意味着MPC8349E从Flash0(U4)中获取复位向量
J22 H无跳线(1) 意味着Flash(U4和U7)非写保护(default);有跳线(0)意味着flash写保护
安装freescale CodeWarrior Version 8.8到 D:\
在运行CodeWarrior IDE前,将D:\iso_PPC\CW Files\FPDeviceConfig.xml复制到D:\Freescale\CodeWarrior PA V8.8\bin\Plugins\Support\Flash_Programmer\EPPC\下
为了方便,可以创建一个快捷方式FPDeviceConfig_loc到目录D:\Freescale\CodeWarrior PA V8.8\bin\Plugins\Support\Flash_Programmer\EPPC\
D:\iso_PPC\CW Files\flash.xml作为 Flash Programmer的设置来加载.
确保mpc8349e-mITXE断电. 设置跳线J22 A,B,C针打开;连接硬件调试器到P17(COP/JTAG口),保证连线正确;然后上电启动开发板;然后运行CodeWarrior
选择CodeWarrior IDE的"Tools" -> "Flash Programmer",然后点击最下面的"Load Settings..." 按钮,然后浏览目录选择"flash.xml".
加载设置之后,"Target Initialzation"必须通过浏览目录选择,因为flash programmer需要这个文件的绝对路径。可简单通过点击"Browse..."按钮来选择8349ITX_init.cfg文件。
点击Flash Programmer的左边"Program / Verify",同样须"Browse..."浏览目录来选择加载flash镜像二进制文件"flash_image.bin".
"flash_image.bin"文件包含了一整个flash bank的二进制镜像。这个镜像必须烧进MPC8349E-mITXE板上的两个flash bank。一个bank烧到"FE000000",另一个bank烧到"FE800000"。设置文件("flash.xml")的默认设置是允许烧到一个bank的起始地址"FE000000"。为了烧到bank的"FE800000",进入"Flash Configuration"的配置窗口,修改"Flash Memory Base Address:"为"FE800000";然后再到"Program / Verify"窗口,并修改"Offset:"为"FE800000"。确保在烧写之前先擦除这个flash bank.
完成烧写之后,断电关闭开发板,去除JTAG调试器,并设置跳线J22 A,B,C针关闭。然后可以上电启动开发板进入U-Boot.
说明:按照上面说明的,板子启动后会进入烧到FE80_0000地址的uboot;去掉J22 E跳线,启动会进入烧到FE00_0000地址的uboot
如何连接usbtap,上电. 打开CodeWarrior Hardware Diagnostics
点击Configuration 选择83xx , 8349 => CodeWarrior USB TAP
及初始化文件 8349ITX_init_liuby.cfg
MPC8349E-mITXE上采用的flash为S29GL064A(R3),和AMD的16x1的flash兼容,所以在Flash Programmer / Flash configuration窗口中Device可以选择S29GL064M(R3)或MX29LV640MTTC等采用amd15x1.elf算法的配置。
下面是通过u-boot烧写的笔记:
利用其中一个U-Boot烧写另一个U-Boot
0. 去掉开发板上的J22 E跳线帽,用串口与主机PC连接,连接网线eth0口。
1. 在主机上目录/home/liuby/tftpboot/下建立一个下载目录u4,将uboot镜像及相关文件复制到该目录下:
$ mkdir /home/liuby/tftpboot/u4
$ cp /mnt/hgfs/redhat/Binaries/* /home/liuby/tftpboot/u4/
2. 在开发板上进入U-Boot提示符 => ,设置serverip, ipaddr, gatewayip, tftp_path,并保存环境变量:
=> protect off all
=> setenv tftp_path u4 ## 类似
=> saveenv ## 保存
3. 比较烧写HRCW(Hard-Reset-Configuration-Word):
=> cmp.b fe000000 fe800000 40 ## 如果完全一致,跳到下一步4
=> erase fe800000 fe80ffff ## 若不一致,需烧写正确的HRCW,首先擦除
=> cp.b fe000000 fe800000 40 ## 从另一bank中来复制
=> cmp.b fe000000 fe800000
4. 烧写U-Boot:
=> tftpboot $loadaddr $tftp_path/u-boot.bin ## 下载u-boot.bin
=> erase fe700000 fe7fffff ## 擦除另一个U-Boot 或 只擦u-boot: erase fe700000 fe74ffff
=> cp.b $loadaddr fe700000 $filesize ## 烧写到 0xFE70_0000 位置
=> cmp.b $loadaddr fe700000 $filesize ## 比较校验
5. 烧写VSC7385 loader and firmware:
=> mw.b $loadaddr 0 20000 ## 可以用 $filesize代替20000?
=> tftpboot $loadaddr $tftp_path/vsc7385_load.bin
=> cp.b $loadaddr fe750000 20000 ## 烧写到 0xFE75_0000 ; ? $filesize
=> cmp.b $loadaddr fe750000 20000 ## $filesize
=> tftpboot $loadaddr $tftp_path/g5_plus1_2_29_unmanaged_freescale.bin
=> cp.b $loadaddr fe7fe000 2000 ## 烧写到 0xFE7F_E000 ; ? $filesize
=> cmp.b $loadaddr fe7fe000 2000 ## 或 $filesize
6. 关闭开发板,断电插上开发板的J22 E跳线帽,启动我们刚刚烧写的U-Boot(此时其逻辑地址为0xFEF0_0000)
U-Boot默认启动内核和文件系统镜像地址为0xFE81_0000,0xFE9A_0000
7. 将光盘上的MPC8349ITX set-uboot-env.txt(可以根据适当需要修改此文件)在linux下用工具unix2dos转换一下格式:
$unix2dos "
MPC8349ITX set-uboot-env.txt"
8. 点击超级终端界面第二行最后一个"属性"图标,弹出属性对话框,点击设置->ASCII码设置,设置行延迟20ms,字符延迟1ms;然后点击"发
送"->"发送文本文件",选择"MPC8349ITX set-uboot-env.txt"发送。
9. 最后显示配置信息,根据需要可以修改环境变量,最后保存启动linux:
=> printenv ## then setenv and saveenv
=> setenv bootcmd "run flashramboot" ## 默认从flash中启动
=> saveenv
=> protect on all
=> imls
Image at FE010000:
Image Name: Linux-2.6.13.4
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1548025 Bytes = 1.5 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Image at FE1A0000:
Image Name: uboot ext2 ramdisk rootfs
Image Type: PowerPC Linux RAMDisk
Data Size: 1913069 Bytes = 1.8 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
=> boot
uboot最后启动kernel时的命令是调用bootcmd,修改bootcmd可以改变启动方式,比如让其从flash中启动,可以如下操作:
=> setenv bootcmd run flashramboot
下载不畅时,用CTRL+C来终止回到提示符
查看HRCW二进制文件内容,可以VIM打开,然后:%!xxd即可查看,与uboot的命令md.w显示基本相同,最后退出用:q!来退出。linux下查看二进
制文件HRCW的工具有1: xxd HRCW ; 2: od HRCW ; 3: hexdump HRCW ; 4: hexdump -C HRCW |less ; 5:khexedit ; windows下查看用
ultraedit
在vi的命令状态下
:%!xxd ——将当前文本转换为16进制格式。== ' od -Ax -tx1z -v HRCW '
:%!od ——将当前文本转换为16进制格式 。
:%!xxd -c 12——将当前文本转换为16进制格式,并每行显示12个字节。
:%!xxd -r ——将当前文件转换回文本格式。
U-Boot启动Network File System (NFS) on the PC
1. 开发板串口连接主机PC,网口连接网关,主机ip:59.64.155.122,开发板ip:59.64.155.244
1. PC机上已经安装好NFS server.修改/etc/exports添加下面一句
# vim /etc/exports
/nfs/root1 59.64.155.*(rw,no_root_squash)
2. 启动NFS server:
# service nfs start
# service portmap start
3. 安装ltib,编译文件系统rootfs,假如文件系统位于主机的/usr/local/mpc8349/small/rootfs/,建立一个软连接而不是整个移除
到/nfs/root1
# mkdir /nfs
# ln -s /usr/local/mpc8349/small/rootfs /nfs/root1
## 备注:如果想用不同的文件系统,可以改变这个软连接指向新的文件系统,这比复制文件系统或者修改u-boot环境变量方便多了。
4. 开发板上电,进入u-boot提示符下,修改u-boot环境变量
=> setenv rootpath /nfs/root1
=> setenv ipaddr 59.64.155.244
=> setenv serverip 59.64.155.122
5.a 开发板进入u-boot提示符下,若采用tftp下载uImage(tftp server), 通过NFS加载FS模式
=> run tftpnfsboot
5.b 开发板进入u-boot提示符下,若只需启动flash中的kernel,而通过NFS加载FS
=> run flashnfsboot
? - alias for 'help'
autoscr - run script from memory
base - print or set address offset
bdinfo - print Board Info structure
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
cmp - memory compare
coninfo - print console devices and information
cp - memory copy
crc32 - checksum calculation
diskboot- boot from IDE device
echo - echo args to console
erase - erase FLASH memory
exit - exit script
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
flinfo - print FLASH memory information
go - start application at address 'addr'
help - print online help
icrc32 - checksum calculation
ide - IDE sub-system
iexp - running I2C expander test
iloop - infinite loop on address range
imd - i2c memory display
iminfo - print header information for application image
imls - list all images found in flash
imm - i2c memory modify (auto-incrementing)
imw - memory write (fill)
inm - memory modify (constant address)
iprobe - probe to discover valid I2C chip addresses
isdram - print SDRAM configuration information
itest - return true/false on integer compare
loadb - load binary file over serial line (kermit mode)
loads - load S-Record file over serial line
loop - infinite loop on address range
md - memory display
mii - MII utility commands
mm - memory modify (auto-incrementing)
mtest - simple RAM test
mw - memory write (fill)
nfs - boot image via network using NFS protocol
nm - memory modify (constant address)
pci - list and access PCI Configuration Space
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv - set environment variables
sleep - delay execution for some time
test - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
version - print monitor version
阅读(1868) | 评论(2) | 转发(0) |