EP7312 can't use 32MB DRAM

shadow saturn at structure.biochem.nchu.edu.tw
Tue Dec 10 14:43:29 EST 2002


This is my ksymoops extract.

>>EIP; c0055804 <kmem_cache_grow+1ac/4a8>   <=====
>>r10; c0031154 <__arm720_proc_info+0/0>
Trace; c005565c <kmem_cache_grow+4/4a8>
Trace; c0055fb8 <kmalloc+200/240>
Trace; c0055dbc <kmalloc+4/240>
Trace; c007dac0 <proc_create+80/c4>
Trace; c007da3c <proc_kill_inodes+ac/b0>
Trace; c007dccc <create_proc_entry+74/b8>
Trace; c007dc54 <proc_mkdir+64/68>
Trace; c002dd48 <proc_misc_init+40/180>
Trace; c002dd08 <proc_misc_init+0/180>
Trace; c002dbb8 <proc_root_init+54/f0>
Trace; c002db64 <proc_root_init+0/f0>
Trace; c0028644 <start_kernel+fc/144>
Trace; c0028548 <start_kernel+0/144>
Trace; c0028080 <__mmap_switched+0/30>
Code;  c00557f4 <kmem_cache_grow+19c/4a8>
00000000 <_EIP>:
Code;  c00557f4 <kmem_cache_grow+19c/4a8>
   0:   81 30 83 e0 03 41         xorl   $0x4103e083,(%eax)
Code;  c00557fa <kmem_cache_grow+1a2/4a8>
   6:   82                        (bad)
Code;  c00557fb <kmem_cache_grow+1a3/4a8>
   7:   e0 18                     loopne 21 <_EIP+0x21> c0055815 
<kmem_cache_grow+1bd/4a8>
Code;  c00557fd <kmem_cache_grow+1a5/4a8>
   9:   02 9f e5 e2 a5 ff         add    0xffa5e2e5(%edi),%bl
Code;  c0055803 <kmem_cache_grow+1ab/4a8>   <=====
   f:   eb 00                     jmp    11 <_EIP+0x11> c0055805 
<kmem_cache_grow+1ad/4a8>   <=====
Code;  c0055805 <kmem_cache_grow+1ad/4a8>
  11:   50                        push   %eax
Code;  c0055806 <kmem_cache_grow+1ae/4a8>
  12:   84 e5                     test   %ah,%ch

Kernel panic: Attempted to kill the idle task!


Any suggestion would be greatly appreciated.

Brian

On Tue, 10 Dec 2002, shadow wrote:

> 
> 
> ---------- Forwarded message ----------
> Date: Mon, 9 Dec 2002 23:29:19 +0800 (CST)
> From: shadow <saturn at structure.biochem.nchu.edu.tw>
> To: PA Nilsson <pa at glaze.se>
> Subject: RE: EP7312 can't use 32MB DRAM
> 
> Thanks for your suggestion.
> I had modified my source code but still can not work.
>  mi->bank[0].start = 0xc0000000;
>  mi->bank[0].size = 32*1024*1024;
>  mi->bank[0].node = 0;
>  mi->nr_banks = 1;
> 
> I also rewrited my bootloader(hermit), in the linux.c, I specified
> page_size, page_number, page_number_in_bank. 
> 
> 	/* system page size */
>         ps->u1.s.page_size = 0x1000;
> 	/* number of pages in all banks */
> 	ps->u1.s.nr_pages = 8192;
> 	/* pages per bank */
> 	ps->u1.s.pages_in_bank[0] = 8192;
> 
> 
> In hermit's boot.S, I reconfigured the SDRAM size, 32MB.
> 	
> 	mov r1, #0x42 		/* 32MB */
>         add r1, r1, #0x0500
>         mov r2, #0x2300
>         add r2, r2, r0
>         str r1, [r2]
> 
>         mov r1, #0x240                  /* 36MHz SDRAM refresh period */
>         mov r2, #0x2340
>         add r2, r2, r0
>         str r1, [r2]
> 
> I wonder the above initial code of SDRAM, if it is also needed by linux 
> kernel's boot.S or it only needed to executed once at the bootloader ?
> 
> Sadly, it still can not work after the above course.
> Any suggestion would be greatly appreciated.
> 
> Thanks in advance,
> Brian
> 
> 
> 
> On Thu, 5 Dec 2002, PA Nilsson wrote:
> 
> > Since I am a hardware designer, software is not my strongest side but this
> > might help you.
> > 
> > You do not write anything about what board you are running on, but here is
> > one possibility why your code might crash:
> > 
> > If your board is set up with two 16-bit wide DRAMs to form a 32-bit wide
> > bus, all of your memory will be located in the same bank, not over both
> > banks. That would mean that you should only configure one bank, but twice
> > the size.
> > 
> > Make sure that you have set up your DRAM-controller in your bootloader
> > aswell, depending on the physical layout on the board.
> > 
> > /PA
> > 
> 
> 
> 
> 
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
> 





More information about the linux-mtd mailing list