在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、  利用ppcboot更新ppcboot

a、  显示lash信息:SMDK2410#  flinfo

b、  去除第一个扇区的保护:SMDK2410#  protect off 1:0

c、  通过TFTP下载ppcboot.binSMDK2410#  tftp 30008000 pccboot.bin

d、  烧写ppcbootSMDK2410#  fl 0 30008000 2000

e、  重新启动:SMDK2410#  reset

2、  利用JTAG烧写ppcboot

a、  硬件连接

b、  生成SJF2410烧写程序:主要解决编译版本不一致问题

                              i.          /usr/src/linux-headers-2.6.22-14/include/linux/io.h
/usr/src/linux-headers-2.6.22-14/include/linux/string.h
/usr/src/linux-headers-2.6.22-14/include/linux/compiler.h

三个文件拷贝到/HHARM2410-R3/SJF/

                            ii.          修改SJF/ppt.h文件:

将此句#include <asm/io.h>
修改为#include "io.h"

                           iii.          修改SJF/io.h文件

#include <linux/string.h>

#include <linux/compiler.h>

   修改为:

#include "string.h"

#include "compiler.h"

                           iv.          修改Makefile文件

cp SJF2410 ../image/

修改为:cp SJF2410 /tftpboot/

                            v.          make all

c、  查询FLASH芯片的类型:

SMDK2410 # flinfo

d、  进入/tftpboot/目录,在linuxshell提示符下,键入以下命令:

sudo ./SJF2410 /f:ppcboot.bin

出现提示:

+------------------------------------+

|     SEC JTAG FLASH(SJF) v 0.3      |

|     (S3C2410X & SMDK2410 B/D)      |

+------------------------------------+

Usage: SJF /f:<filename> /d=<delay>

ERROR: No CPU is detected(ID=0xffffffff).         说明连接CPU是否正常

 

[SJF Main Menu]

 0:K9S1208 program      1:28F128J3A program    2:Memory Rd/Wr         3:Exit

Select the function to test:

 

选择与FLASH类型相符的数字:如1,出现提示:

 

[28F128J3A Flash JTAG Programmer]

 

*** Very Important Notes ***

1. 28F128J3A must be located at 0x08000000.

   J6  : connect 2-3 pins,   J9  : connect 1-2 pins

   J33 : Open,               J34 : Short

2. After programming, 28F128J3A may be located at 0x0.

   J6  : connect 1-2 pins,   J9  : connect 2-3 pins

   J33 : Short,              J34 : Open

 

Source size = 152c0h

 

Available Target Offset Address:

0x0,0x20000,0x40000, ..., 0x1ce0000

Input target address offset [0x?] :

 

键入0,即烧写到0x0位置

烧写时间大约十分钟!无异常情况,则说明烧写正常!

 

    e、由于PPCBOOT启动后,就会对PPCBOOT所占的扇区进行保护,若要通过JTAG   烧写,就需要对PPCBOOT接触保护才行!如果系统崩溃无法引导,则可以直接烧写!

以下是针对28F128J3A类型的FLAH烧写所做的修改

a、  修改include\configs\smdk2410.h   

#define CONFIG_NETMASK          255.255.255.0

#define CONFIG_IPADDR         192.168.110.222

#define CONFIG_SERVERIP      192.168.110.88

#define CONFIG_GATEWAYIP      192.168.110.1

 

 

#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */

#define PHYS_FLASH_SIZE 0x01000000 /* 16 MB */

#define CFG_FLASH_PROTECTION

#define CFG_FLASH_BASE PHYS_FLASH_1

#define CFG_MONITOR_BASE PHYS_FLASH_1

#define CFG_MAX_FLASH_BANKS 1/* max number of memory banks */

#define CFG_MAX_FLASH_SECT 128/* max number of sectors on one chip */

#define CFG_FLASH_ERASE_TOUT (2*CFG_HZ) /* Timeout for Flash Erase */

#define CFG_FLASH_WRITE_TOUT (2*CFG_HZ) /* Timeout for Flash Write */

#define CFG_ENV_IS_IN_FLASH 1

#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x20000) /*Address of Environment Sector */

#define CFG_ENV_SIZE 0x20000    /* Total Size of Environment Sector */

 

b、 使用u-boot-1.1.6\u-boot-1.1.6\board\cmi\flash.c修改其中内容:

删掉:#include <mpc5xx.h>

增加#define FLASH_BASE0_PRELIM     CFG_FLASH_BASE

#define CFG_MONITOR_BASE      PHYS_FLASH_1

monitor_flash_len换为CFG_ENV_SIZE

 

c、 修改\board\smdk2410\flash.c:

#define FLASH_BLOCK_SIZE     0x00020000

 

以下为华恒PPCBOOT中的BUG,非移植而做的更改

d、  修改include\flash_file.h        

原因:使用fl烧写时出现:“out of bound”提示

原来为:

#define ARM2410_FLASH_BASE 0x1000000

更改为:

#define ARM2410_FLASH_BASE 0x00000000

 

e修改\common\cmd_mem.c        
原因:原来的ppcboot在执行完fl命令后无法执行reset命令

更改第814845854行的

*(volatile unsigned short *)(0x10000000)=0xff;

应该改为

                       *(volatile unsigned short *)(0xARM2410_FLASH_BASE)=0xff;
posted on 2009-08-24 14:09  palam  阅读(525)  评论(0编辑  收藏  举报