Thread support does not work for recent FreeRTOS because varialbe
'uxTopUsedPriority' used in <OPENOCD_SRC>/src/rtos/FreeRTOS.c was
obmitted in FreeRTOS.
Appended patch based on OpenOCD 0.8.0 corrects this by calculating this
variables value based on pointers available.
Regards
Matthias
>From 2cb93c0f8e74f504eee4171a16929ecb35c14d41 Mon Sep 17 00:00:00 2001
From: Matthias Meier <[email protected]>
Date: Tue, 27 Jan 2015 11:43:22 +0100
Subject: [PATCH] support for recent FreeRTOS releases without
uxTopUsedPriority variable
---
src/rtos/FreeRTOS.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/rtos/FreeRTOS.c b/src/rtos/FreeRTOS.c
index 57307d5..00b9f7c 100644
--- a/src/rtos/FreeRTOS.c
+++ b/src/rtos/FreeRTOS.c
@@ -221,13 +221,20 @@ static int FreeRTOS_update_threads(struct rtos *rtos)
/* Find out how many lists are needed to be read from pxReadyTasksLists, */
int64_t max_used_priority = 0;
+/*
retval = target_read_buffer(rtos->target,
rtos->symbols[FreeRTOS_VAL_uxTopUsedPriority].address,
param->pointer_width,
(uint8_t *)&max_used_priority);
+
if (retval != ERROR_OK)
return retval;
- if (max_used_priority > FREERTOS_MAX_PRIORITIES) {
+*/
+ max_used_priority = (rtos->symbols[FreeRTOS_VAL_xDelayedTaskList1].address
+ - rtos->symbols[FreeRTOS_VAL_pxReadyTasksLists].address) / param->list_width;
+ LOG_INFO("Calculated FreeRTOS max priorities: %" PRId64 "", max_used_priority);
+
+ if (max_used_priority > FREERTOS_MAX_PRIORITIES || max_used_priority < 1) {
LOG_ERROR("FreeRTOS maximum used priority is unreasonably big, not proceeding: %" PRId64 "",
max_used_priority);
return ERROR_FAIL;
--
2.1.0
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel