RTOS Thread awareness support wip

- works on Cortex-M3 with ThreadX and FreeRTOS

Compared to original patch a few nits were fixed:

- remove stricmp usage
- unsigned compare fix
- printf formatting fixes
- fixed a bug with overrunning a memory buffer allocated with malloc.
This commit is contained in:
Broadcom Corporation (Evan Hunter)
2011-04-14 10:25:01 +02:00
committed by Øyvind Harboe
parent f9feeacb7f
commit b69119668e
13 changed files with 1975 additions and 10 deletions

View File

@@ -14,6 +14,9 @@
* Copyright (C) 2008 by Rick Altherr *
* kc8apf@kc8apf.net> *
* *
* Copyright (C) 2011 by Broadcom Corporation *
* Evan Hunter - ehunter@broadcom.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
@@ -44,6 +47,7 @@
#include "register.h"
#include "trace.h"
#include "image.h"
#include "rtos/rtos.h"
static int target_read_buffer_default(struct target *target, uint32_t address,
@@ -3704,6 +3708,7 @@ enum target_cfg_param {
TCFG_COREID,
TCFG_CHAIN_POSITION,
TCFG_DBGBASE,
TCFG_RTOS,
};
static Jim_Nvp nvp_config_opts[] = {
@@ -3718,6 +3723,7 @@ static Jim_Nvp nvp_config_opts[] = {
{ .name = "-coreid", .value = TCFG_COREID },
{ .name = "-chain-position", .value = TCFG_CHAIN_POSITION },
{ .name = "-dbgbase", .value = TCFG_DBGBASE },
{ .name = "-rtos", .value = TCFG_RTOS },
{ .name = NULL, .value = -1 }
};
@@ -4024,6 +4030,18 @@ static int target_configure(Jim_GetOptInfo *goi, struct target *target)
Jim_SetResult(goi->interp, Jim_NewIntObj(goi->interp, target->dbgbase));
/* loop for more */
break;
case TCFG_RTOS:
/* RTOS */
{
int result = rtos_create( goi, target );
if ( result != JIM_OK )
{
return result;
}
}
/* loop for more */
break;
}
} /* while (goi->argc) */
@@ -4746,6 +4764,9 @@ static int target_create(Jim_GetOptInfo *goi)
target->endianness = TARGET_ENDIAN_UNKNOWN;
target->rtos = NULL;
target->rtos_auto_detect = false;
/* Do the rest as "configure" options */
goi->isconfigure = 1;
e = target_configure(goi, target);