This is the mail archive of the ecos-discuss@sources.redhat.com 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: One question..


Gary Thomas wrote:

On Sat, 2004-06-26 at 02:59, anton yakovlev wrote:


Gary Thomas wrote:


On Fri, 2004-06-25 at 02:09, anton yakovlev wrote:


Hi, all!

I have a programm:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#include <stdio.h>
#include <cyg/kernel/kapi.h>

void first(cyg_addrword_t threadData) {

  (void) threadData;
  printf("the first thread\n");

}

static char stack_a[4096];
static cyg_thread thread_a;
static cyg_handle_t handle_a;

void cyg_user_start(void) {
cyg_thread_create(10, first, 0, "first", stack_a, 4096, &handle_a, &thread_a);
cyg_thread_resume(handle_a);


}
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
but when i try to executing it, i see only following:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
RedBoot> load -r -m y -b 0x205000
Raw file loaded 0x00205000-0x00210500
xyzModem - CRC mode, 363(SOH)/0(STX)/0(CAN) packets, 3 retries
RedBoot> go 0x205000


Why did you specify raw mode (-r)? When you do this, RedBoot loads the file directly into memory without any processing at all, probably not
what you want to do.


Because I upload exactly raw image.. neither elf-image, nor s-record..



That's fine (many people make mistakes here, but you've not).


Was the program linked to load at 0x205000? eCos programs are *not* position independent and must be loaded to memory that matches how they
are built/linked.


Hm.. I did not think about this.. I use GNU ld with "-L <smth> -Wl,--gc-sections -nostartfiles -Ttarget.ld -nostdlib" flags.. Simple "hello, world" and some more complex programms work's properly.. How to check, which way the program was linked?..

PS: When I turn on full kernel debug, that my above programm work's fine.. but when I try to execute more complex multithreaded program, this programm failed while system initialization with "ASSERT FAIL: mutex.cxx cyg_bool Cyg_Mutex::lock()".. :(

How did you create the file that's being downloaded? Is it an executable (ELF) image? or possibly S-records?


From elf-image using objcopy..


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
i.e. thread want not to start.. Why so?..

I have Falcom fx35xxlsi (based on NEC V850 processors family) platform with eCos 2.0.. I build eCos from the sources.. Maybe I have broken configuration?..




--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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