<!doctype html public "-//W3C//DTD W3 HTML//EN">
<html><head><style type="text/css"><!--
blockquote, dl, ul, ol, li { padding-top: 0 ; padding-bottom: 0 }
 --></style><title>Strange problem - RTEMS globals memory
offset?</title></head><body>
<div>I'm observing a strange problem in an system with custom hardware
and a slightly modified sparc BSP (Sparc erc32-based) with RTEMS
4.6.6. It may not be an RTEMS problem at all, but it is mysterious
enough that I could use some extra ideas.</div>
<div><br></div>
<div>The basic observations are that the executable image (built from
C code) ends with a bunch of RTEMS global variables (partial symbol
table below, showing which ones). The image size has grown, and we
observe some bad application behavior, that looks rather like some
sort of intermittent IRQ error (missing interrupts, maybe taking too
long to respond or execute, not entirely clear yet). However, I've
determined that changing the linker command file to move the RTEMS
globals a little farther up in memory makes the problem go away.
Moving farther up in memory makes the problem come back. Moving
farther again, the problem goes away.</div>
<div><br></div>
<div>I have checked that the heap and stack are not colliding, and a
variety of other things (such as the word alignment remaining the
same). My basic question to the list is whether there is some RTEMS
structure that needs to be aligned on a large memory boundary (like
2048 bytes), or needs to be an aligned offset from start of code or
the trap table or something.</div>
<div><br></div>
<div>Again, this could be some weird hardware issue (though memory
tests pass), not RTEMS at all. But suggestions are welcome.</div>
<div><br></div>
<div>Thanks,</div>
<div>Ken Peters</div>
<div>Ken.Peters@jpl.nasa.gov</div>
<div><br></div>
<blockquote type="cite" cite><font face="Courier New">020977a4
g     O .bss   00000028
BSP_RTEMS_Configuration<br>
020977cc g     O .bss   00000004
bsp_isr_level<br>
020977d0 g     O .bss   00000028
Cpu_table<br>
020977f8 g     O .bss   0000003c
BSP_Configuration<br>
02097834 g     O .bss   00000004
CPU_SPARC_CLICKS_PER_TICK<br>
02097838 g     O .bss   00000004
rtems_clock_minor<br>
0209783c g     O .bss   00000004
Old_ticker<br>
02097840 g     O .bss   00000004
Clock_driver_ticks<br>
02097930 g     O .bss   00000004
rtems_progname<br>
02097934 g     O .bss   00000004
rtems_panic_in_progress<br>
02097940 g     O .bss   00000004
_IO_Number_of_drivers<br>
02097944 g     O .bss   00000004
_Configuration_MP_table<br>
02097948 g     O .bss   00000004
_TOD_Ticks_per_second<br>
0209794c g     O .bss   00000004
_Thread_Ready_chain<br>
02097950 g     O .bss   00000004
_Thread_Ticks_per_timeslice<br>
02097954 g     O .bss   00000004
_CPU_Interrupt_stack_high<br>
02097958 g     O .bss   00000014
_Objects_Information_table<br>
02097970 g     O .bss   00000088
_Thread_BSP_context<br>
020979f8 g     O .bss   00000004
_Thread_Dispatch_disable_level<br>
020979fc g     O .bss   0000000c
_User_extensions_Switches_list<br>
02097a08 g     O .bss   00000004
_CPU_Interrupt_stack_low<br>
02097a0c g     O .bss   00000028
_CPU_Table<br>
02097a34 g     O .bss   00000004
_TOD_Is_set<br>
02097a38 g     O .bss   00000004
_Objects_Maximum_nodes<br>
02097a3c g     O .bss   0000000c
_Internal_Objects<br>
02097a48 g     O .bss   0000001c
_Workspace_Area<br>
02097a64 g     O .bss   00000004
_ISR_Vector_table<br>
02097a68 g     O .bss   0000004c
_Extension_Information<br>
02097ab4 g     O .bss   00000004
_IO_Driver_name_table<br>
02097ab8 g     O .bss   00000004
_Thread_Allocated_fp<br>
02097abc g     O .bss   00000004
_Thread_libc_reent<br>
02097ac0 g     O .bss   00000004
_Thread_Heir<br>
02097ac4 g     O .bss   00000004
_Objects_Local_node<br>
02097ac8 g     O .bss   00000004
_Configuration_Table<br>
02097acc g     O .bss   00000004
_ISR_Nest_level<br>
02097ad0 g     O .bss   00000004
_Thread_Maximum_extensions<br>
02097ad4 g     O .bss   00000004
_Thread_Do_post_task_switch_extension<br>
02097ad8 g     O .bss   00000002
_Priority_Major_bit_map<br>
02097adc g     O .bss   00000004
_RTEMS_Allocator_Mutex<br>
02097ae0 g     O .bss   00000004
_Watchdog_Sync_level<br>
02097ae4 g     O .bss   00000004
_TOD_Seconds_since_epoch<br>
02097ae8 g     O .bss   00000004
_Thread_Executing<br>
02097aec g     O .bss   00000004
_Debug_Level<br>
02097af0 g     O .bss   00000004
_Context_Switch_necessary<br>
02097af4 g     O .bss   0000000c
_Watchdog_Seconds_chain<br>
02097b00 g     O .bss   0000000c
_Watchdog_Ticks_chain<br>
02097b0c g     O .bss   00000028
_TOD_Seconds_watchdog</font></blockquote>
<blockquote type="cite" cite><font face="Courier New">02097b34
g     O .bss   00000004
_System_state_Is_multiprocessing<br>
02097b38 g     O .bss   0000004c
_API_Mutex_Information<br>
02097b90 g     O .bss   00000020
_Priority_Bit_map<br>
02097bb0 g     O .bss   00000004
_Watchdog_Sync_count<br>
02097bb4 g     O .bss   00000004
_Watchdog_Ticks_since_boot<br>
02097bb8 g     O .bss   00000004
_ISR_Signals_to_thread_executing<br>
02097bbc g     O .bss   0000001c
_TOD_Current<br>
02097bd8 g     O .bss   00000004
_IO_Number_of_devices<br>
02097bdc g     O .bss   00000004
rtems_ada_self<br>
02097be0 g     O .bss   0000004c
_Thread_Internal_information<br>
02097c2c g     O .bss   00000004
_TOD_Microseconds_per_tick<br>
02097c30 g     O .bss   00000004
_System_state_Current<br>
02097c34 g     O .bss   00000004
_IO_Driver_address_table<br>
02097c38 g     O .bss   00000004
_Thread_Idle<br>
02097c40 g     O .bss   00000088
_CPU_Null_fp_context<br>
02097cc8 g     O .bss   0000000c
Internal_errors_What_happened<br>
02097cd4 g     O .bss   0000000c
_User_extensions_List<br>
02097ce0 g     O .bss   0000000c
_API_extensions_List<br>
02097cec g     O .bss   00000004
rtems_libio_iops<br>
02097cf0 g     O .bss   00000004
rtems_libio_iop_freelist<br>
02097cf4 g     O .bss   00000004
rtems_libio_semaphore<br>
02097cf8 g     O .bss   00000004
RTEMS_Malloc_Heap<br>
02097cfc g     O .bss   00000004
RTEMS_Malloc_Sbrk_amount<br>
02097d00 g     O .bss   0000000c
RTEMS_Malloc_GC_list<br>
02097d10 g     O .bss   00000380
libc_global_reent<br>
02098090 g     O .bss   00000004
libc_reentrant<br>
02098094 g     O .bss   0000004c
_Region_Information<br>
020980e0 g     O .bss   00000004
_RTEMS_tasks_User_initialization_tasks<br>
020980e4 g     O .bss   0000004c
_Timer_Information<br>
02098130 g     O .bss   0000004c
_Dual_ported_memory_Information<br>
0209817c g     O .bss   00000028
_RTEMS_Objects<br>
020981a4 g     O .bss   0000004c
_Semaphore_Information<br>
020981f0 g     O .bss   0000004c
_RTEMS_tasks_Information<br>
0209823c g     O .bss   00000004
_Timer_Server<br>
02098240 g     O .bss   0000004c
_Message_queue_Information<br>
0209828c g     O .bss   00000004
_RTEMS_tasks_Number_of_initialization_tasks<br>
02098290 g     O .bss   0000004c
_Partition_Information<br>
020982dc g     O .bss   00000004
_Event_Sync_state<br>
020982e0 g     O .bss   0000004c
_Rate_monotonic_Information<br>
0209832c g     O .bss   00000004
rtems_termios_ttyMutex<br>
02098330 g     O .bss   00000004
rtems_termios_ttyTail<br>
02098334 g     O .bss   00000004
rtems_termios_ttyHead<br>
02098338 g     O .bss   00000040
rtems_global_user_env<br>
02098378 g     O .bss   0000000c
rtems_filesystem_mount_table_control<br>
02098384 g       .bss  
00000000 end</font></blockquote>
</body>
</html>