您的位置:首页 > 其它

移植、烧录 PPCBOOT中的一些问题

2009-08-24 14:09 501 查看
1、 利用ppcboot更新ppcboot

a、 显示lash信息:SMDK2410# flinfo

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

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

d、 烧写ppcboot:SMDK2410# 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/目录,在linux的shell提示符下,键入以下命令:

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命令

更改第814、845、854行的

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

应该改为

*(volatile unsigned short *)(0xARM2410_FLASH_BASE)=0xff;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: