[ECOS] data abort exception (SWI)

Gary Thomas gary@mlbassoc.com
Fri Mar 21 12:50:00 GMT 2008


trollepi jj wrote:
> Hi,
> What do you mean by "standard tests"?
> I configure ecos with the minimal packages (hal+infra+kernel) and without swi it's work fine. (2 tasks with semaphore)
> So, now i try to manage swi handler without ecos, just a simple syscall implementation.
> Best regards.
> ps : what is "standard tests?"

Read the documentation :-(  There are a complete set of unit tests
for all components in eCos.  Until they run, you don't have a functional
base system.
   http://ecos.sourceware.org/docs-latest/user-guide/running-an-ecos-test-case.html

> ----------------------------------------
>> Date: Fri, 21 Mar 2008 06:20:23 -0600
>> From: gary@mlbassoc.com
>> To: jackoaway@hotmail.com
>> CC: ecos-discuss@ecos.sourceware.org
>> Subject: Re: [ECOS] data abort exception (SWI)
>>
>> trollepi jj wrote:
>>> Hi,
>>> So your patch can't work, because, the program never reach the routine software_interrupt, it always goes on abort_prefetch. This is the sample of my .ld (I do a entirely RAM project). We 
>>> must  not use RedBoot.
>> Have you tried running the standard tests with your configuration?
>> Until those work, you can't really proceed.
>>
>>> MEMORY
>>> {
>>>       ram  : ORIGIN = 0x04000000, LENGTH = 0x00080000
>>> }
>>>
>>> SECTIONS
>>> {
>>>     SECTIONS_BEGIN 
>>>     SECTION_rom_vectors (ram, 0x04000000, LMA_EQ_VMA)
>>>     SECTION_fixed_vectors (ram, ALIGN (0x04), 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
>>> }
>>> We need swi to implement syscall like linux. So we make a swi to enter on the exception handler and after modify the fields of the info parameter (cast in HAL_SavedRegisters) to point
>>> on a function we define(modify pc, sp). We need after all the stuff do return on the calling thread but it never goes. 
>>> Thank for future help
>>> Best regards
>>> ----------------------------------------
>>>> Date: Thu, 20 Mar 2008 10:11:33 -0600
>>>> From: gary@mlbassoc.com
>>>> To: jackoaway@hotmail.com
>>>> CC: ecos-discuss@ecos.sourceware.org
>>>> Subject: Re: [ECOS] data abort exception (SWI)
>>>>
>>>> trollepi jj wrote:
>>>>> Hi,
>>>>> I try to make a ecos project without Redboot for an atmel AT91M55800A (phycore). So it's a RAM project. I compile and debug an application without any problems.
>>>>> When i try to generate a SWI (with asm("swi")), the application reach the exeption handler that I define but the number of the exception is not CYGNUM_HAL_VECTOR_SOFTWARE_INTERRUPT (number 2 that i give on cyg_exception_set_handler) but CYGNUM_HAL_VECTOR_ABORT_PREFETCH (number 3) . Maybe I might modify vector.S to do the remap (like hal_platform_setup.h ). If anybody have an idea? I search on your mailing and nothing fit well.
>>>> Why are you trying to use the SWI instruction?
>>>>
>>>> In any case, it looks like there is a typo in the SWI handler.
>>>> I'm pretty sure no one has ever actually used this path!
>>>>
>>>> Please try the attached patch and let me know if it fixes
>>>> your problem.

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------

-- 
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