diff options
author | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-04-16 13:08:14 +0200 |
---|---|---|
committer | Paul Fertser <fercerpav@gmail.com> | 2015-04-16 20:23:46 +0100 |
commit | 9dfb58e802787b1dcee756cdf963a7a2ac808eca (patch) | |
tree | 35e9ec89c51c0c2c03f8f46c802ee3be349bfd1c /src/rtos | |
parent | 6b2887e16acefada94a496ef786882d04b9b89a2 (diff) | |
download | riscv-openocd-9dfb58e802787b1dcee756cdf963a7a2ac808eca.zip riscv-openocd-9dfb58e802787b1dcee756cdf963a7a2ac808eca.tar.gz riscv-openocd-9dfb58e802787b1dcee756cdf963a7a2ac808eca.tar.bz2 |
rtos: add instructions and helper code to make FreeRTOS work again
Run-time tested with FreeRTOS V8.1.2 (current version).
For the time being I propose this way of dealing with RTOSes that do
not export necessary information on their own.
I also suggest implementing a similar scheme for ChibiOS, exporting
the necessary struct fields' offsets via an OpenOCD-specific helper.
Change-Id: Iacf8b88004d62206215fe80011fd7592438446a3
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/2347
Tested-by: jenkins
Diffstat (limited to 'src/rtos')
-rw-r--r-- | src/rtos/FreeRTOS.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rtos/FreeRTOS.c b/src/rtos/FreeRTOS.c index e13cc46..1ce6807 100644 --- a/src/rtos/FreeRTOS.c +++ b/src/rtos/FreeRTOS.c @@ -135,7 +135,7 @@ static const struct symbols FreeRTOS_symbol_list[] = { { "xTasksWaitingTermination", true }, /* Only if INCLUDE_vTaskDelete */ { "xSuspendedTaskList", true }, /* Only if INCLUDE_vTaskSuspend */ { "uxCurrentNumberOfTasks", false }, - { "uxTopUsedPriority", false }, + { "uxTopUsedPriority", true }, /* Unavailable since v7.5.3 */ { NULL, false } }; @@ -231,6 +231,10 @@ static int FreeRTOS_update_threads(struct rtos *rtos) } /* Find out how many lists are needed to be read from pxReadyTasksLists, */ + if (rtos->symbols[FreeRTOS_VAL_uxTopUsedPriority].address == 0) { + LOG_ERROR("FreeRTOS: uxTopUsedPriority is not defined, consult the OpenOCD manual for a work-around"); + return ERROR_FAIL; + } int64_t max_used_priority = 0; retval = target_read_buffer(rtos->target, rtos->symbols[FreeRTOS_VAL_uxTopUsedPriority].address, |