Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487947
  • 博文数量: 174
  • 博客积分: 2502
  • 博客等级: 少校
  • 技术积分: 1923
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-28 09:47
文章分类

全部博文(174)

文章存档

2011年(8)

2010年(16)

2009年(68)

2008年(82)

我的朋友

分类:

2009-06-23 22:12:42

这篇笔记大约是一年前写的,理解应该有些问题,不过还是贴在这吧,记录一下以前摸索的过程。
 
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
 
 
阅读(1858) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-07-01 03:06:48

好文章,学习了 自我介绍一下,我是ARM技术论坛 www.armjishu.com 的一名嵌入式老师 我的QQ号码是7819226,咱们有空切磋一下啊,很高兴能认识你啊

chinaunix网友2009-07-01 03:06:48

好文章,学习了 自我介绍一下,我是ARM技术论坛 www.armjishu.com 的一名嵌入式老师 我的QQ号码是7819226,咱们有空切磋一下啊,很高兴能认识你啊