break in irq thread will error looping

//in arm cortex a8 a9

/root/project_board/free_imx/myandroid/kernel_imx/drivers/input/keyboard/gpio_keys.c

static void gpio_keys_gpio_timer(unsigned long _data)

{

struct gpio_button_data *bdata = (struct gpio_button_data *)_data;

schedule_work(&bdata->work); //breakpoint here openocd can not continue

}

/////////////

//fixed way

/root/openocd-0.9.0/src/server/gdb_server.c

static char gdb_running_type;

//after gdb_running_type add

static int gdb_rmpacket_times = 0;

in gdb_read_memory_packet(struct connection *connection, char const *packet, int packet_size)

//if ((retval != ERROR_OK) && !gdb_report_data_abort)

//change to

if ( (retval != ERROR_OK && !gdb_report_data_abort) || gdb_rmpacket_times >= 60 )

//above 60 mean error looping happened, you can tune this number (60 ~ 100)

in gdb_input_inner(struct connection *connection)

switch (packet[0])

{

}

//after switch case add

if( packet[0] == ‘m’ )

gdb_rmpacket_times++;

else

gdb_rmpacket_times = 0;

demo:

https://picasaweb.google.com/1061855410 … 5702289762

//i make patch here

http://www.mediafire.com/download/c3p6c … 14b.tar.gz