#include <common.h> | |
#include <command.h> | |
#include <net.h> | |
#include <jffs2/load_kernel.h> | |
#include <common.h> | |
#include <asm/arch/hardware.h> | |
#include <asm/arch/uart.h> | |
#include <asm/arch/cpu.h> | |
#include <asm/arch/lsp_crpm.h> | |
#include "errno.h" | |
#include <drvs_gpio.h> | |
#if CONFIG_HARDWARE_TEST | |
/* ================================================================================ | |
* do_test_nand : | |
* ³É¹¦: GPIO17 GPIO16 ¶¼ÁÁ | |
* ʧ°Ü: GPIO17 ÁÁ | |
*/ | |
int do_test_nand(void) | |
{ | |
uint32_t is_ok = 0; | |
static uint32_t nand_led_state = 0; | |
static uint32_t test_cnt=0; | |
test_cnt++; | |
memcpy((uint8_t *)0x21000000, (uint8_t *)0x82000000, 0x4000); //SYS_IRAM2_BASE | |
run_command("nand erase 0x300000 0x20000", 0); | |
run_command("nand write 0x21000000 0x300000 0x4000", 0); | |
run_command("nand read 0x22000000 0x300000 0x4000", 0); | |
is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x22000000, 0x4000); | |
if( is_ok != 0 ) | |
goto error; | |
printf("test round:%d\n",test_cnt); | |
run_command("nand erase 0x500000 0x20000", 0); | |
run_command("nand write 0x21000000 0x500000 0x4000", 0); | |
run_command("nand read 0x23000000 0x500000 0x4000", 0); | |
is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x23000000, 0x4000); | |
if( is_ok != 0 ) | |
goto error; | |
printf("test round:%d\n",test_cnt); | |
run_command("nand erase 0x5000000 0x20000", 0); | |
run_command("nand write 0x21000000 0x5000000 0x4000", 0); | |
run_command("nand read 0x24000000 0x5000000 0x4000", 0); | |
is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x24000000, 0x4000); | |
if( is_ok != 0 ) | |
goto error; | |
printf("test round:%d\n",test_cnt); | |
run_command("nand erase 0xf000000 0x20000", 0); | |
run_command("nand write 0x21000000 0xf000000 0x4000", 0); | |
run_command("nand read 0x25000000 0xf000000 0x4000", 0); | |
is_ok = memcmp((uint8_t *)0x21000000, (uint8_t *)0x25000000, 0x4000); | |
if( is_ok != 0 ) | |
goto error; | |
printf("test round:%d\n",test_cnt); | |
if( nand_led_state ==0 ) | |
{ | |
zDrvGpio_SetOutputValue(GPIO33,GPIO_HIGH); | |
nand_led_state = 1; | |
} | |
else | |
{ | |
zDrvGpio_SetOutputValue(GPIO33,GPIO_LOW); | |
nand_led_state = 0; | |
} | |
udelay(500000); | |
return 0; | |
error: | |
zDrvGpio_SetOutputValue(GPIO75,GPIO_HIGH); | |
while(1); | |
printf("nand test failed !"); | |
run_command("nand erase 0x300000 0x20000", 0); | |
run_command("nand erase 0x500000 0x20000", 0); | |
run_command("nand erase 0x5000000 0x20000", 0); | |
run_command("nand erase 0xf000000 0x20000", 0); | |
return -1; | |
} | |
U_BOOT_CMD( | |
test_nand, CONFIG_SYS_MAXARGS, 0, do_test_nand, | |
"test_nand: test_nand ", | |
"" | |
); | |
#endif |