This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: LPC2xxx Ethernet device driver


Hello Andrew,

maybe you made a mistake when building tm_basic. Please make sure that RAM startup is selected.

Here is what I get from objdump:

arm-elf-objdump --headers redboot.elf
 15 .data         00000e08  a0000000  0002a458  00038000  2**2
                  CONTENTS, ALLOC, LOAD, CODE
 16 .bss          0000ad78  a0000e08  a0000e08  00038e08  2**5
                  ALLOC

arm-elf-objdump --headers tm_basic
 15 .data         00000330  a002bd98  a002bd98  00023d98  2**2
                  CONTENTS, ALLOC, LOAD, DATA
 16 .bss          00c7a65c  a002c0c8  a002c0c8  000240c8  2**5
                  ALLOC

So there is no memory clash here. This is a snipped from the RAM ldi file:

MEMORY
{
    sram   : ORIGIN = 0x40000000, LENGTH = 0x10000
    ram    : ORIGIN = 0xA0000000, LENGTH = 0x2000000
}

SECTIONS
{
    SECTIONS_BEGIN
    SECTION_fixed_vectors (sram, 0x40000400, LMA_EQ_VMA)
    SECTION_rom_vectors (ram, 0xA0010000, LMA_EQ_VMA)
    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
    SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
    SECTIONS_END
}

The first data in RAM (rom_vectors) starts at 0xA10000. That means the first 0x10000 bytes in RAM are reserved for Redboot.

I have the tm_basic test as an image in fis directory. I'm connected to Redboot via serial line. I load tm_basic with fis load tm_basic. After this operation there are no problems. The ethernet part from Redboot works fine (Ping and connection via TCP/IP is possible). If I execute the tm_basic test now while I'm still connected via serial line, the test runs properly. If I connect to Redboot via TCP/IP directly before I type the go command and then type the go command via TCP/IP then the test starts (I can see the first lines printed in my TCP/IP console) and then the test crashes.

If the test is started via TCP/IP then the test uses the TCP/IP connection channel to print all diag_printf messages. Only for testing purposes I inserted the following line into tm_basic cyg_start() function: CYGACC_CALL_IF_SET_CONSOLE_COMM(0). This forces all output to the first serial channel. So no single character is transmitted via TCP/IP after start of tm_basic. If I start tm_basic via TCP/IP then I see the first three lines in my serial console and then the test crashes. If I start this modiefied tm_basic via TCP/IP connection and the option -n then the test runs till completion without any problems - real strange :o(

Regards,

Dipl. Inf. (FH)
Uwe Kindler
Software Engineering

--

cetoni GmbH
Am Wiesenring 6
D-07554 Korbussen

Tel.: +49 (0) 36602 338 28
Fax:  +49 (0) 36602 338 11
uwe.kindler@cetoni.de
www.cetoni.de


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]