Bad Data CRC. ERROR: can't get kernel image!

Dhruv Vyas
Hi,,, I have burned u-boot, uImage and qtopia_64M in my nand.
While booting, it shows me this and gets stuck at the end saying.

Bad Data CRC. ERROR: can't get kernel image!

This is the output on minicom.

Please let me know the solution to this problem.

U-Boot 1.3.2-mini2440 (May 25 2010 - 19:15:21)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  Bad block table not found for chip 0
Bad block table not found for chip 0
64 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced                                                 
    
In:    serial                                                              
    
Out:   serial                                                              
    
Err:   serial                                                              
    
MAC: 08:08:11:18:12:27                                                     
    
Hit any key to stop autoboot:  0                                           
    
                                                                           
    
Loading from NAND 64MiB 3,3V 8-bit, offset 0x60000                         
    
   Image Name:   Linux-2.6.32.2-FriendlyARM                                
    
   Created:      2012-05-24   6:15:14 UTC                                  
    
   Image Type:   ARM Linux Kernel Image (uncompressed)                     
    
   Data Size:    2235584 Bytes =  2.1 MB                                   
    
   Load Address: 30008000                                                  
    
   Entry Point:  30008000                                                  
    
reading NAND page at offset 0x60400 failed                                 
    
** Read error                                                              
    
## Booting kernel from Legacy Image at 32000000 ...                        
    
   Image Name:   Linux-2.6.32.2-FriendlyARM                                
    
   Created:      2012-05-24   6:15:14 UTC                                  
    
   Image Type:   ARM Linux Kernel Image (uncompressed)                     
    
   Data Size:    2235584 Bytes =  2.1 MB                                   
    
   Load Address: 30008000                                                  
    
   Entry Point:  30008000                                                  
    
   Verifying Checksum ... Bad Data CRC                                     
    
ERROR: can't get kernel image!                                             
    
MINI2440 #

davef
> I have burned u-boot, uImage and qtopia_64M in my nand.

All from the DVD?  Any mods to the kernel?

Is that all you see while it is booting up?  The full boot message down to
the first error might be more helpful.

Dhruv Vyas
I made my own kernel image using arm-linux-gnuebi toolchain using standard
procedure,as far as u-boot and qtopia are concerned, they are from DVD.

Kernel image used to work fine with NFS server using u-boot. However, It
throws me this error when I try to get it booted from NAND. 

And ya....it is the only thing I get.

It stops there giving me "u-boot" prompt.

Dhruv Vyas
I think it is because u-boot does not have bbt.

How to create BBT without erasing NAND blocks ?

davef
So, you managed to get u-boot to load your kernel and root filesystem using
NFS?  I only ever used u-boot to load stuff into NAND and part of that task
involved <nand scrub>.  This took care of the BBT issue.

Could you reference the tutorial you used or state your procedure to get
u-boot to do:
nand scrub
mtdparts
dynenv set
etc.
when using NFS.

I would like to understand how you managed to do that.

Which toolchain did you use to make you own kernel?  One issue is that
there is limit around 2+M where you have to increase the kernel partition
size.  There were posts along the lines of <kernel too big> a long time
ago.

Dhruv Vyas
Ok. Let me tell how I did it.

1. I booted my system from nor.

2. Then I formatted nand.

3. Then I did bon part 0 320 k 23xx k thing.

4. Then I went to supervivi prompt by pressing q.

5. I deleted default partition table and created partition so
that...ultimately partitions look like as follows.

0. vivi ---> 0x0 --- 0x40000 0
1. param ----> 0x40000 --- 0x60000 0
2. kernel -----> 0x60000 --- 0x500000 0
3. root -----> 0x560000 --- 0x3aa0000 0

6. then I typed menu to get first selection menu

7. I pressed v to download vivi using USB, but i downloaded u-boot image
instead. (I mean bootloaders are bootloaders. They do not make any
difference, do they ?)

8. Then again menu and pressed k to download kernel image. As I increased
my partition size, it allows me to download upto 5 MB image size.

9. Then menu ---> followed by y to download yffs system and download
root_qtopia_64M

10. I flipped switch to nand so that boot takes place from nand.

11. It shows me u-boot prompt.

12. I fired command. *dynenv set 40000* (to set env offset)

13. Then I set bootm using.... *setenv nboot.e kernel \; bootm*

14. I saved env variables using saveenv.

And then reset and I get the above error. Bad CRC. Can't get kernel image.
I tried loading different images (zImages). but in some it says, Wrong
kernel image.

My system is 64 MB DRAM, 64 MB NAND, 2 MB NOR, 3.5" touch screen.

Dhruv Vyas
I was wondering if you can tell me the how to change the offset of kernel
in u-boot.  i.e. if i have kernel stored in 0x70000 stead 0x60000 how do i
set env variables in u-boot to fetch kernel from 0x70000 stead 0x60000.

davef
(I mean bootloaders are bootloaders. They do not make any
difference, do they ?)

Yes, they do.  As far as I am aware:
- Supervivi can only load zImages
- uboot can only load uImages
- Barebox only loads uImages

7 and 9 confuse me.

7. you mean you loaded u-boot using something like:

sudo ./s3c2410_boot_usb u-boot.bin or
using usbpush

9. loading a YFFS2 filesystem?

uImages go with a JFFS2 root filesystem.

Normal procedure:
u-boot uImage JFFS2
supervivi zImage YAFFS2

Suggest you place this into Google:

<deploying u-boot linux kernel and GPE>

You might not be able to get the files he refers to, but the procedure may
cast some light on your situation.

Dhruv Vyas
Regarding 7.....

Yes, I pushed u-boot using usbpush. sudo ./usbpush/usbpush u-boot-128M.bin

Regarding 9, 

I think I have made a mistake here... I am trying to run uImage with yffs2
file system.

Let me check.

Dhruv Vyas
Here is an update. 

I got passed through my error by loading using supervivi, zImage of my
compiled linux and root_qtopia-64M.

Thanks Dave. :)

It was showing error because I was using yffs2 with uImage. :)

However got stuck in kernel panic as it failed to execute linuxrc.

I changed supervivi linx_cmd_line to "/dev/mtdblock3" but it throws the
same error.

I will have to rectify it.

Thanks, pal. :)

davef
> Yes, I pushed u-boot using usbpush. sudo ./usbpush/usbpush
u-boot-128M.bin

I thought you were running a 64M machine as you said you were trying to
load qtopia_64M  u-boot-128M is for 128M and greater mini2440s.

Dhruv Vyas
I am running a 64 M machine but u-boot-128M was working fine I guess.

Is there any difference in page size in 64 M and 128 M versions ?

How does it affect u-boot any way ?

davef
The erase page size is one value for the 64M machine and a different value
for ALL the other mini2440s.

Maybe somebody has developed a clever version of u-boot but I thought that
there were different versions to match erase page size.

There are many threads on this topic on this site.

Vinay
I am getting the following error

MPC8270 Reset Status: External Soft, External Hard

MPC8270 Clock Configuration
 - Bus-to-Core Mult 3x, VCO Div 4, 60x Bus Freq  16-50 , Core Freq  50-150
 - dfbrg 0, corecnf 0x10, busdf 3, cpmdf 1, plldf 0, pllmf 3, pcidf 3
 - vco_out  264000000, scc_clk   66000000, brg_clk   66000000
 - cpu_clk  198000000, cpm_clk  132000000, bus_clk   66000000
 - pci_clk   33000000

CPU:   MPC8270 (HiP7 Rev 14, Mask 1.0 1K49M) at 198 MHz
Board: KAT2000 SPU
       Emerson Network Power, Embedded Computing
       cPLD Ver: 10
       Reset cause: 0x6 (SPU PORESET)
       Executed out of: Intel StrataFlash, Bank 1
       POST Mode: Short
       Watchdog enabled (warn 0s, expire 5s)
DRAM:  32 MB, ECC enabled
POST pld PASSED
POST memory PASSED
POST psram PASSED
FLASH: 16 MB
In:    serial
Out:   serial
Err:   serial
Net:   FCC1 ETHERNET
POST flash PASSED
Hit any key to stop autoboot:  0
## Executing script at fffe0000
Bad data crc
KAT2000 SPU (1.5)=>

davef
CPU:   MPC8270 (HiP7 Rev 14, Mask 1.0 1K49M) at 198 MHz

Which bit of hardware is this?