Crash in _User_extensions_Thread_create
Matthew J Fletcher
amimjf at gmail.com
Wed Feb 20 20:39:14 UTC 2013
Hi,
Ok so looking at the rtl22xx BSP as an example i can see the linker
creates a .data section like so,
.data :
{
*(.data)
*(.data.*)
*(.gnu.linkonce.d*)
*(.jcr)
SORT(CONSTRUCTORS)
_edata = .;
} > sdram
but in start.s there is no reference to the data section or the _edata
symbol, so i've got no idea how that could setup the data section with
the initialised variables in it.
Thinking for a minute, would the linker script not need a symbol for
both the beginning and the end of the data section so start.s knows the
range to copy ? and then a loop in start.s to copy the data.
I wonder if these BSP's are only suitable for execute from flash systems
where you dont need to do the store -> ram copy of initialised data.
Thats ultimately how i will run but i am running from RAM at the moment
to ease (i thought !) being up and debugging.
On 20/02/13 17:25, Joel wrote:
> On 2/20/2013 10:37 AM, Matthew J Fletcher wrote:
>> Hi
>>
>> I dont define CONFIGURE_INITAL_EXTENSIONS so i was surprised to even
>> be in this code. A #error in confdefs.h shows that its the
>> RTEMS_NEWLIB define thats causing that path to be taken.
>>
>> The faulting line is the function pointer call into
>> Callouts.thread_create as Callouts in uninitialised.
>>
>> I guess i am missing some #define that will setup this for me, i've
>> looked in the samples folder and they just seem to #define the drivers
>> they need, then #define the number of resources, then #define
>> CONFIGURE_RTEMS_INIT_TASKS_TABLE, then #define CONFIG_INIT and include
>> confdefs.h so i am a bit confused about the problem i am seeing.
>>
>>
> There is very likely nothing wrong with your configuration via confdefs.h.
>
> Assuming you are completely up to date... there is almost certainly
> something
> wrong with your layout or handling of initialized data.
>
> Check Configuration_Initial_Extensions. It is initialized data and if it
> doesn't have
> pointers to the newlib extensions at download or by the time you get to
> boot_card(),
> then something is broken. If it is correct and is overwritten by the
> time you get to
> using it, then something is overwriting it.
>
> Memory layout and program initialization issues are a big part of
> mysterious
> failures at this point in a BSP.
>
>>
>> --
>>
>> regards
>> ---
>> Matthew J Fletcher
>>
>
More information about the users
mailing list