[ECOS] One question..

anton yakovlev antony@inbox.ru
Sat Jun 26 12:26:00 GMT 2004


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



More information about the Ecos-discuss mailing list