Hi all,

I have something new.

/(gdb) info threads
[New Thread 1]
[New Thread 2]
[New Thread 3]
  Id   Target Id         Frame
  4    Thread 3 (Threadxx :  : Sleeping) 0x8034a40c in Cyg_Flag::wait
(this=0x8020b3c0 <Cyg_Scheduler::unlock_inner(unsigned int)+16>,
pattern=1, mode=0 '\000')
    at /home/xxx/ecos/packages/kernel/current/src/sync/flag.cxx:224
  3    Thread 2 (Threadxx :  : Ready) procxx (ctx=0x0) at
/home/xx/procxx.c:164
  2    Thread 1 (Idle Thread :  : Ready) 0x11110006 in ?? ()
* 1    Thread 4 (Threadxx :  : Sleeping) 0x80349bc4 in
Cyg_Counting_Semaphore::wait (this=0x8020b3c0
<Cyg_Scheduler::unlock_inner(unsigned int)+16>, timeout=9240330010848395264)
    at /home/xxx/ecos/packages/kernel/current/src/sync/cnt_sem.cxx:145
Cannot access memory at address 0x0/

It's look like openocd ask 'ctx' (what is context ?) for Thread 2 but it
search at address 0x00000000
/
Debug: 3044 535277 gdb_server.c:1200 gdb_read_memory_packet(): addr:
0x80210244, len: 0x00000004
Debug: 3045 535277 target.c:1769 target_read_buffer(): reading buffer of
4 byte at 0x80210244
Debug: 3046 535277 arm7_9_common.c:2117 arm7_9_read_memory(): address:
0x80210244, size: 0x00000004, count: 0x00000001
Debug: 3047 535278 gdb_server.c:368 gdb_put_packet_inner(): sending
packet '$0dc0a0e1#4e'
Debug: 3048 535278 gdb_server.c:235 gdb_get_char_inner(): received
'$m0,4#fd'
Debug: 3049 535278 gdb_server.c:247 gdb_get_char_inner(): returned char
'$' (0x24)
Debug: 3050 535278 gdb_server.c:595 gdb_get_packet_inner(): character: '$'
Debug: 3051 535278 gdb_server.c:273 gdb_get_char_fast(): returned char
'f' (0x66)
Debug: 3052 535278 gdb_server.c:273 gdb_get_char_fast(): returned char
'd' (0x64)
Debug: 3053 535278 gdb_server.c:2050 gdb_input_inner(): received packet:
'm0,4'*
Debug: 3054 535278 gdb_server.c:1200 gdb_read_memory_packet(): addr:
0x00000000, len: 0x00000004
Debug: 3055 535278 target.c:1769 target_read_buffer(): reading buffer of
4 byte at 0x00000000
Debug: 3056 535278 arm7_9_common.c:2117 arm7_9_read_memory(): address:
0x00000000, size: 0x00000004, count: 0x00000001
Warn : 3057 535279 arm7_9_common.c:2257 arm7_9_read_memory(): memory
read caused data abort (address: 0x00000000, size: 0x4, count: 0x1)
Debug: 3058 535279 arm9tdmi.c:488 arm9tdmi_write_xpsr_im8(): xpsr_im:
13, rot: 0, spsr: 0
Debug: 3059 535279 gdb_server.c:1163 gdb_error(): Reporting -307 to GDB
as generic error*/

I give you my configuration, if someone use eCos and an ARM7TDMI or
ARM926-ejs :

ecos.c

const struct eCos_params eCos_params_list[] = {
    {
    "cortex_m3",            /* target_name */
    4,                        /* pointer_width; */
    0x0c,                    /* thread_stack_offset; */
    0x9c,                    /* thread_name_offset; */
    0x3c,                    /* thread_state_offset; */
    0xa0,                    /* thread_next_offset */
    0x4c,                    /* thread_uniqueid_offset */
    &rtos_eCos_Cortex_M3_stacking    /* stacking_info */
    },
    {
    "arm7tdmi",                /* target_name */
    4,                        /* pointer_width; */
    0x0c,                    /* thread_stack_offset; */ //OK
    0xec,                    /* thread_name_offset; */ //OK
    0x4c,                    /* thread_state_offset; */ //OK
    0xf0,                    /* thread_next_offset */ //OK
    0x5c,                    /* thread_uniqueid_offset */ //OK
    &rtos_eCos_ARM7TDMI_stacking    /* stacking_info */
    },
    {
    "arm926ejs",            /* target_name */
    4,                        /* pointer_width; */
    0x0c,                    /* thread_stack_offset; */ //OK
    0xec,                    /* thread_name_offset; */ //OK
    0x4c,                    /* thread_state_offset; */ //OK
    0xf0,                    /* thread_next_offset */ //OK
    0x5c,                    /* thread_uniqueid_offset */ //OK
    &rtos_eCos_ARM7TDMI_stacking    /* stacking_info */
    }
};

rtos_ecos_stacking.c

static const struct stack_register_offset
rtos_eCos_ARM7TDMI_stack_offsets[] = {
    { 0x7c, 32 },        /* r0   */
    { 0x80, 32 },        /* r1   */
    { 0x84, 32 },        /* r2   */
    { 0x88, 32 },        /* r3   */
    { 0x8c, 32 },        /* r4   */
    { 0x90, 32 },        /* r5   */
    { 0x94, 32 },        /* r6   */
    { 0x98, 32 },        /* r7   */
    { 0x9c, 32 },        /* r8   */
    { 0xa0, 32 },        /* r9   */
    { 0xa4, 32 },        /* r10  */
    { 0xa8, 32 },        /* r11  */
    { 0xac, 32 },        /* r12  */
    { -2,   32 },        /* sp   */
    { 0xb0, 32 },        /* lr   */
    { 0xb4, 32 },        /* pc   */
    { -1,   96 },        /* FPA1 */
    { -1,   96 },        /* FPA2 */
    { -1,   96 },        /* FPA3 */
    { -1,   96 },        /* FPA4 */
    { -1,   96 },        /* FPA5 */
    { -1,   96 },        /* FPA6 */
    { -1,   96 },        /* FPA7 */
    { -1,   96 },        /* FPA8 */
    { -1,   32 },        /* FPS  */
    { 0x40, 32 },        /* xPSR */
};

If someone could try and tell me if it's work for you, it would be great.

Best regards
Vivien
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to