Hi all,

 

            I am again trying to run uClinux, I have got more external RAM
in the board.

 

I have got a own board design, closely to Atmel eb40a, the microcontroller
is a AT91FR40162s (2Mb internal flash connected to CS0) and 4Mb of external
RAM in two banks connected in CS1 and CS2, the clk are 50Mhz. I configure
the following memory map:

 

            FLASH : 0x1000000 length: 0x100000

            RAM1  : 0x2000000 length : 0x200000 (in a page of 4Mb)

            RAM2 : 0x2400000 length : 0x200000 (in a page of 4Mb)

 

I run RedBoot without problems to boot the board.

 

RedBoot> +

RedBoot(tm) bootstrap and debug environment [ROM]

Non-certified release, version UNKNOWN - built 04:14:42, Feb  7 2007

 

Platform: Atmel AT91/EB40A (ARM7TDMI) 

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Copyright (C) 2003, 2004, 2005, 2006 eCosCentric Limited

 

RAM: 0x00000000-0x00040000, [0x0000aac0-0x00040000] available

FLASH: 0x01000000 - 0x1200000, 32 blocks of 0x00010000 bytes each.

RedBoot>

 

In RedBoot I can access to the external RAM without problems in the range of
0x2200000 – 0x2600000 (4Mb) of a contiguously memory space (the
microcontroller mirrowed the first RAM1 0x2000000-0x2200000 to
0x2200000-0x2400000 addresses) and in the range 0x2400000-0x2600000 access
to the RAM2.

 

I compile uClinux-dist-20051110 with the following configurations:

 

            ATMEL AT91

            Linux kernel 2.4.x uClibc

 

            System Type:

            (S)DRAM base Address : 0x02200000

            (S)DRAM Size:                0x0400000

            FLASH base Address :   0x01000000

            FLASH Size:                  0x0200000

                        Kernel executes from RAM

            CPU clock frequency 50000000

            Serial Console YES

            ATMEL CPU AT91x40

 

I changed the linux-2.4.x/arch/armnommu/Makefile in order to put the
TEXTADDR in the 0x02200000 address (RAM base address)

 

             ifeq ($(CONFIG_ARCH_ATMEL),Y)

            TEXTADDR = 0x2200000

            MACHINE = atmel

            endif

 

All the rest of parameters by default, I can load the image.bin in the flash
(with a JTAG cable) at the address 0x1010000 with a size of 0x19CDB7 bytes.
Then I start the board, boot RedBoot and I copy the image.bin located in
flash to RAM at 0x02200000 address.

 

RedBoot> help mcopy                                      

Copy memory from one address to another

   mcopy -s <location> -d <location> -l <length> [-1|-2|-4]

RedBoot> mcopy -s 0x01010000 -d  0x2200000 -l 0x19CDB7 -2

RedBoot>

 

At this point I place the image.bin in RAM memory at the address configured
in uClinux, then I can run uClinux with go command

 

            RedBoot> go 0x02200000

 

But in the ARM ocuurs a Data Abort Exception.  

 

¿Whats wrong? ¿ That other parameters I must change to run uClinux?

 

 

Thanks in Advance,

 

            

 

            

 

             

_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to