mirror of
git://projects.qi-hardware.com/xburst-tools.git
synced 2024-11-25 20:20:39 +02:00
no '_' in package
Signed-off-by: Xiangfu Liu <xiangfu.z@gmail.com>
This commit is contained in:
parent
120e034cff
commit
aa89f3049f
@ -1,5 +1,5 @@
|
|||||||
xburst-tools (0.0+200906-1) unstable; urgency=low
|
xburst-tools (0.0+200906-1) unstable; urgency=low
|
||||||
|
|
||||||
* Non-maintainer upload
|
* Initial release (Closes: #535429)
|
||||||
|
|
||||||
-- xiangfu liu <xiangfu.z@gmail.com> Tue, 30 Jun 2009 14:28:36 +0800
|
-- xiangfu liu <xiangfu.z@gmail.com> Tue, 30 Jun 2009 14:28:36 +0800
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
usr/bin
|
usr/bin
|
||||||
usr/share/xburst_tools
|
usr/share/xburst-tools
|
||||||
usr/share/man/man1
|
usr/share/man/man1
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
AM_CFLAGS = -pedantic -Wall -W -O1 -g3 -std=gnu99 -lusb -lconfuse
|
AM_CFLAGS = -pedantic -Wall -W -O1 -g3 -std=gnu99 -lusb -lconfuse
|
||||||
|
|
||||||
xburst_tools_version.h:
|
xburst-tools_version.h:
|
||||||
echo -e '#ifndef XBURST_TOOLS_VERSION' \
|
echo -e '#ifndef XBURST_TOOLS_VERSION' \
|
||||||
'\n#define XBURST_TOOLS_VERSION "20090630-1"' \
|
'\n#define XBURST_TOOLS_VERSION "20090630-1"' \
|
||||||
'\n#endif' > xburst_tools_version.h
|
'\n#endif' > xburst-tools_version.h
|
||||||
BUILT_SOURCES = xburst_tools_version.h
|
BUILT_SOURCES = xburst-tools_version.h
|
||||||
|
|
||||||
bin_PROGRAMS = usbboot
|
bin_PROGRAMS = usbboot
|
||||||
usbboot_SOURCES = cmd.c command_line.c ingenic_cfg.c \
|
usbboot_SOURCES = cmd.c command_line.c ingenic_cfg.c \
|
||||||
ingenic_usb.c main.c
|
ingenic_usb.c main.c
|
||||||
|
|
||||||
prefix = /usr
|
prefix = /usr
|
||||||
datadir = /usr/share/xburst_tools
|
datadir = /usr/share/xburst-tools
|
||||||
data_DATA = ../xburst_stage1/xburst_stage1.bin \
|
data_DATA = ../xburst_stage1/xburst_stage1.bin \
|
||||||
../xburst_stage2/xburst_stage2.bin \
|
../xburst_stage2/xburst_stage2.bin \
|
||||||
usbboot.cfg
|
usbboot.cfg
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "usb_boot_defines.h"
|
#include "usb_boot_defines.h"
|
||||||
|
|
||||||
#define CONFIG_FILE_PATH "/usr/share/xburst_tools/usbboot.cfg"
|
#define CONFIG_FILE_PATH "/usr/share/xburst-tools/usbboot.cfg"
|
||||||
|
|
||||||
int hand_init_def(struct hand *hand);
|
int hand_init_def(struct hand *hand);
|
||||||
int check_dump_cfg(struct hand *hand);
|
int check_dump_cfg(struct hand *hand);
|
||||||
|
@ -37,8 +37,8 @@
|
|||||||
#define VENDOR_ID 0x601a
|
#define VENDOR_ID 0x601a
|
||||||
#define PRODUCT_ID 0x4740
|
#define PRODUCT_ID 0x4740
|
||||||
|
|
||||||
#define STAGE1_FILE_PATH "/usr/share/xburst_tools/xburst_stage1.bin"
|
#define STAGE1_FILE_PATH "/usr/share/xburst-tools/xburst_stage1.bin"
|
||||||
#define STAGE2_FILE_PATH "/usr/share/xburst_tools/xburst_stage2.bin"
|
#define STAGE2_FILE_PATH "/usr/share/xburst-tools/xburst_stage2.bin"
|
||||||
|
|
||||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
|
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "xburst_tools_version.h"
|
#include "xburst-tools_version.h"
|
||||||
#include "command_line.h"
|
#include "command_line.h"
|
||||||
#include "ingenic_usb.h"
|
#include "ingenic_usb.h"
|
||||||
#include "ingenic_cfg.h"
|
#include "ingenic_cfg.h"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2009 PI
|
* Copyright (C) 2009 QI
|
||||||
* Author: Xiangfu Liu <xiangfu.z@gmail.com>
|
* Author: Xiangfu Liu <xiangfu.z@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
@ -223,43 +223,36 @@ static int nand_check_block(u32 block)
|
|||||||
{
|
{
|
||||||
pg = block * ppb + 0;
|
pg = block * ppb + 0;
|
||||||
read_oob(oob_buf, oobsize, pg);
|
read_oob(oob_buf, oobsize, pg);
|
||||||
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff )
|
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff ) {
|
||||||
{
|
|
||||||
serial_puts("Absolute skip a bad block\n");
|
serial_puts("Absolute skip a bad block\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pg = block * ppb + 1;
|
pg = block * ppb + 1;
|
||||||
read_oob(oob_buf, oobsize, pg);
|
read_oob(oob_buf, oobsize, pg);
|
||||||
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff )
|
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff ) {
|
||||||
{
|
|
||||||
serial_puts("Absolute skip a bad block\n");
|
serial_puts("Absolute skip a bad block\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pg = block * ppb + ppb - 2 ;
|
pg = block * ppb + ppb - 2 ;
|
||||||
read_oob(oob_buf, oobsize, pg);
|
read_oob(oob_buf, oobsize, pg);
|
||||||
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff )
|
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff ) {
|
||||||
{
|
|
||||||
serial_puts("Absolute skip a bad block\n");
|
serial_puts("Absolute skip a bad block\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pg = block * ppb + ppb - 1 ;
|
pg = block * ppb + ppb - 1 ;
|
||||||
read_oob(oob_buf, oobsize, pg);
|
read_oob(oob_buf, oobsize, pg);
|
||||||
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff )
|
if ( oob_buf[0] != 0xff || oob_buf[1] != 0xff ) {
|
||||||
{
|
|
||||||
serial_puts("Absolute skip a bad block\n");
|
serial_puts("Absolute skip a bad block\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
pg = block * ppb + bad_block_page;
|
pg = block * ppb + bad_block_page;
|
||||||
read_oob(oob_buf, oobsize, pg);
|
read_oob(oob_buf, oobsize, pg);
|
||||||
if (oob_buf[bad_block_pos] != 0xff)
|
if (oob_buf[bad_block_pos] != 0xff) {
|
||||||
{
|
|
||||||
serial_puts("Skip a bad block\n");
|
serial_puts("Skip a bad block\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -383,14 +376,12 @@ static int read_oob(void *buf, u32 size, u32 pg)
|
|||||||
coladdr = pagesize;
|
coladdr = pagesize;
|
||||||
|
|
||||||
if (pagesize == 512)
|
if (pagesize == 512)
|
||||||
/* Send READOOB command */
|
__nand_cmd(CMD_READC); /* Send READOOB command */
|
||||||
__nand_cmd(CMD_READC);
|
|
||||||
else
|
else
|
||||||
/* Send READ0 command */
|
__nand_cmd(CMD_READA); /* Send READ0 command */
|
||||||
__nand_cmd(CMD_READA);
|
|
||||||
|
__nand_addr(coladdr & 0xff); /* Send column address */
|
||||||
|
|
||||||
/* Send column address */
|
|
||||||
__nand_addr(coladdr & 0xff);
|
|
||||||
if (pagesize != 512)
|
if (pagesize != 512)
|
||||||
__nand_addr(coladdr >> 8);
|
__nand_addr(coladdr >> 8);
|
||||||
|
|
||||||
@ -600,15 +591,14 @@ restart:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( option != NO_OOB ) //if NO_OOB do not perform vaild check!
|
//if NO_OOB do not perform vaild check!
|
||||||
{
|
if ( option != NO_OOB ) {
|
||||||
for ( j = 0 ; j < pagesize + oobsize; j ++)
|
for ( j = 0 ; j < pagesize + oobsize; j ++) {
|
||||||
{
|
|
||||||
if (tmpbuf[j] != 0xff)
|
if (tmpbuf[j] != 0xff)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( j == oobsize + pagesize )
|
|
||||||
{
|
if ( j == oobsize + pagesize ) {
|
||||||
tmpbuf += ( pagesize + oobsize ) ;
|
tmpbuf += ( pagesize + oobsize ) ;
|
||||||
i ++;
|
i ++;
|
||||||
cur ++;
|
cur ++;
|
||||||
@ -631,8 +621,7 @@ restart:
|
|||||||
rowaddr >>= 8;
|
rowaddr >>= 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (option)
|
switch (option) {
|
||||||
{
|
|
||||||
case OOB_ECC:
|
case OOB_ECC:
|
||||||
write_proc(tmpbuf, pagesize); //write data
|
write_proc(tmpbuf, pagesize); //write data
|
||||||
tmpbuf += pagesize;
|
tmpbuf += pagesize;
|
||||||
@ -668,7 +657,7 @@ restart:
|
|||||||
tmpbuf += oobsize;
|
tmpbuf += oobsize;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case NO_OOB: //bin image
|
case NO_OOB: /* bin image */
|
||||||
/* write out data */
|
/* write out data */
|
||||||
for (j = 0; j < ecccnt; j++) {
|
for (j = 0; j < ecccnt; j++) {
|
||||||
volatile u8 *paraddr = (volatile u8 *)EMC_NFPAR0;
|
volatile u8 *paraddr = (volatile u8 *)EMC_NFPAR0;
|
||||||
@ -691,6 +680,7 @@ restart:
|
|||||||
for (j = 0; j < oobsize; j++) {
|
for (j = 0; j < oobsize; j++) {
|
||||||
oob_buf[j] = 0xff;
|
oob_buf[j] = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
oob_buf[2] = 0;
|
oob_buf[2] = 0;
|
||||||
oob_buf[3] = 0;
|
oob_buf[3] = 0;
|
||||||
oob_buf[4] = 0;
|
oob_buf[4] = 0;
|
||||||
@ -698,6 +688,7 @@ restart:
|
|||||||
for (j = 0; j < ecccnt*PAR_SIZE; j++) {
|
for (j = 0; j < ecccnt*PAR_SIZE; j++) {
|
||||||
oob_buf[ecc_pos + j] = ecc_buf[j];
|
oob_buf[ecc_pos + j] = ecc_buf[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
write_proc((u8 *)oob_buf, oobsize);
|
write_proc((u8 *)oob_buf, oobsize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -708,8 +699,8 @@ restart:
|
|||||||
|
|
||||||
__nand_cmd(CMD_READ_STATUS);
|
__nand_cmd(CMD_READ_STATUS);
|
||||||
|
|
||||||
if (__nand_data8() & 0x01) /* page program error */
|
/* page program error */
|
||||||
{
|
if (__nand_data8() & 0x01) {
|
||||||
serial_puts("Skip a write fail block\n");
|
serial_puts("Skip a write fail block\n");
|
||||||
nand_erase_4740( 1, cur/ppb, 1); //force erase before
|
nand_erase_4740( 1, cur/ppb, 1); //force erase before
|
||||||
nand_mark_bad_4740(cur/ppb);
|
nand_mark_bad_4740(cur/ppb);
|
||||||
@ -768,8 +759,7 @@ u32 nand_mark_bad_4740(int block)
|
|||||||
u32 rowaddr;
|
u32 rowaddr;
|
||||||
|
|
||||||
//nand_erase_4740( 1, block, 1); //force erase before
|
//nand_erase_4740( 1, block, 1); //force erase before
|
||||||
if ( bad_block_page >= ppb ) //absolute bad block mark!
|
if ( bad_block_page >= ppb ) { //mark four page!
|
||||||
{ //mark four page!
|
|
||||||
rowaddr = block * ppb + 0;
|
rowaddr = block * ppb + 0;
|
||||||
nand_mark_bad_page(rowaddr);
|
nand_mark_bad_page(rowaddr);
|
||||||
|
|
||||||
@ -781,9 +771,7 @@ u32 nand_mark_bad_4740(int block)
|
|||||||
|
|
||||||
rowaddr = block * ppb + ppb - 1;
|
rowaddr = block * ppb + ppb - 1;
|
||||||
nand_mark_bad_page(rowaddr);
|
nand_mark_bad_page(rowaddr);
|
||||||
}
|
} else { //mark one page only
|
||||||
else //mark one page only
|
|
||||||
{
|
|
||||||
rowaddr = block * ppb + bad_block_page;
|
rowaddr = block * ppb + bad_block_page;
|
||||||
nand_mark_bad_page(rowaddr);
|
nand_mark_bad_page(rowaddr);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user