[U-Boot] nand_scan() in ARM9 S3C2410

J.Hwan.Kim
2009-09-21T13:10:26Z

kevin.morfitt at fearnside-systems.co.uk wrote:
> Minkyu Kang wrote:
>
>> Dear J.Hwan.Kim
>>
>> 2009/9/20 J.Hwan.Kim <frog1120@gmail.com>:
>>
>>> Hi, everyone
>>>
>>> I'm using u-boot for ARM9 S3C2410.
>>> My tool chain is ELDK4.2.
>>>
>>> I defined configuration "CONFIG_NAND_CMD,
>>> CONFIG_SYS_MAX_NAND_DEVICE 1,
>>> and CONFIG_SYS_NAND_BASE 0x4E00000C" for nand_init().
>>>
>>> It works well until the routine reaches nand_scan() which is in nand_base.c
>>> When nand_scan() is called, the system hangs.
>>>
>>> For test, When I written dummy function is nand_base.c and
>>> called the dummy function from nand.c, the system is down.
>>>
>>> My u-boot is using relocation to SDRAM from NAND.
>>> The address of nand_scan() is 0x31F85894.
>>> (TEXT_BASE is 0x31F80000 and SDRAM start from 0x30000000)
>>> I'm sured that the binary data of u-boot.bin (address 0x5894) is same
>>> with SDRAM data in 0x31F85894.
>>> I think the relocation is OK.
>>>
>>> When I attached the routines of nand_base.c to nand.c,
>>> the nand_scan() function passed.
>>>
>>> Is there any hint for this problem?
>>>
>>> Thanks in advnace.
>>>
>>> Regards,
>>> J.Hwan Kim
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot at lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>
>>>
>> Did you check the kevin's mail?
>> He said "u-boot for s3c2410 doesn't support".
>> http://lists.denx.de/pipermail/u-boot/2009-September/060855.html
>>
>>
> u-boot for s3c2410 doesn't support booting from NAND flash, but assuming you
> boot from NOR flash and have NAND enabled properly in the board config file it
> does support the use of NAND flash.
> In the NAND config you show in your email, it's probably a typo but it should be
> CONFIG_CMD_NAND not CONFIG_NAND_CMD.
>
>

First of all, thank you for replies.

I solved the problem, which was not nand_scan routine() problem.
My board is DEP-2410 which is not included in an official U-boot.
I modifies smdk2410_config for my board.
However, I received an unofficial code from the company making DEP-2410
board,
which enables NAND booting.
The code includes routines for nand initialization before relocation to
SDRAM
and the routines copying pages from NAND to SDRAM.

My mistake was that I did not increased the relocation size after
including nand related code
by defining CONFIG_CMD_NAND and others.
The relocation size was defined in the code received from the DEP-2410
board company.
By defining CONFIG_CMD_NAND, the code size increased over 128Kbytes.
The size of original code ,which did not include NAND related code, was
about 93Kbytes
and my relocation code size was defined as 128KBytes.
So, when code branches to over 128Kbytes, strange code is executed and
system hangs.
It was my mistake.

Regards,
J.Hwan Kim

> If that's not the problem - I'm not sure what board you're using. If you're
> using an existing config file post the name of it, or if you're using one you've
> created post the board config file itself.
>
> Regards
> Kevin Morfitt
>
>
>> And I think.. you can trace nand_scan() step by step.
>> please try it and do more detailed question.
>>
>> Thanks
>> Minkyu Kang
>>