mirror of
https://github.com/FreeRTOS/FreeRTOS.git
synced 2025-06-22 00:50:34 +08:00
Implement dumping the Tracelyzer trace when pressing enter (#252)
* Test: Press Enter to Trace dump on posix demo * Test: allow tracedump multiple times * Fix: main full demo
This commit is contained in:
@ -19,8 +19,8 @@
|
|||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*
|
*
|
||||||
* http://www.FreeRTOS.org
|
* https://www.FreeRTOS.org
|
||||||
* http://aws.amazon.com/freertos
|
* https://github.com/FreeRTOS
|
||||||
*
|
*
|
||||||
* 1 tab == 4 spaces!
|
* 1 tab == 4 spaces!
|
||||||
*/
|
*/
|
||||||
@ -79,7 +79,7 @@
|
|||||||
extern void main_blinky( void );
|
extern void main_blinky( void );
|
||||||
extern void main_full( void );
|
extern void main_full( void );
|
||||||
extern void main_tcp_echo_client_tasks( void );
|
extern void main_tcp_echo_client_tasks( void );
|
||||||
|
static void traceOnEnter( void );
|
||||||
/*
|
/*
|
||||||
* Only the comprehensive demo uses application hook (callback) functions. See
|
* Only the comprehensive demo uses application hook (callback) functions. See
|
||||||
* http://www.freertos.org/a00016.html for more information.
|
* http://www.freertos.org/a00016.html for more information.
|
||||||
@ -135,6 +135,7 @@ int main( void )
|
|||||||
/* Start the trace recording - the recording is written to a file if
|
/* Start the trace recording - the recording is written to a file if
|
||||||
configASSERT() is called. */
|
configASSERT() is called. */
|
||||||
printf( "\r\nTrace started.\r\nThe trace will be dumped to disk if a call to configASSERT() fails.\r\n" );
|
printf( "\r\nTrace started.\r\nThe trace will be dumped to disk if a call to configASSERT() fails.\r\n" );
|
||||||
|
printf( "\r\nThe trace will be dumped to disk if Enter is hit.\r\n" );
|
||||||
uiTraceStart();
|
uiTraceStart();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -159,7 +160,6 @@ int main( void )
|
|||||||
{
|
{
|
||||||
#error "The selected demo is not valid"
|
#error "The selected demo is not valid"
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* if ( mainSELECTED_APPLICATION ) */
|
#endif /* if ( mainSELECTED_APPLICATION ) */
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -197,6 +197,9 @@ void vApplicationIdleHook( void )
|
|||||||
allocated by the kernel to any task that has since deleted itself. */
|
allocated by the kernel to any task that has since deleted itself. */
|
||||||
|
|
||||||
|
|
||||||
|
usleep(15000);
|
||||||
|
traceOnEnter();
|
||||||
|
|
||||||
#if ( mainSELECTED_APPLICATION == FULL_DEMO )
|
#if ( mainSELECTED_APPLICATION == FULL_DEMO )
|
||||||
{
|
{
|
||||||
/* Call the idle task processing used by the full demo. The simple
|
/* Call the idle task processing used by the full demo. The simple
|
||||||
@ -237,6 +240,26 @@ void vApplicationTickHook( void )
|
|||||||
#endif /* mainSELECTED_APPLICATION */
|
#endif /* mainSELECTED_APPLICATION */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void traceOnEnter()
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct timeval tv = { 0L, 0L };
|
||||||
|
fd_set fds;
|
||||||
|
FD_ZERO(&fds);
|
||||||
|
FD_SET(0, &fds);
|
||||||
|
ret = select(1, &fds, NULL, NULL, &tv);
|
||||||
|
if ( ret > 0 )
|
||||||
|
{
|
||||||
|
if( xTraceRunning == pdTRUE )
|
||||||
|
{
|
||||||
|
prvSaveTraceFile();
|
||||||
|
}
|
||||||
|
/* clear the buffer */
|
||||||
|
char buffer[200];
|
||||||
|
read(1, &buffer, 200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void vLoggingPrintf( const char *pcFormat,
|
void vLoggingPrintf( const char *pcFormat,
|
||||||
... )
|
... )
|
||||||
{
|
{
|
||||||
|
@ -27,8 +27,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* NOTE 1: The Linux port is a simulation (or is that emulation?) only! Do not
|
* NOTE 1: The POSIX port is a simulation (or is that emulation?) only! Do not
|
||||||
* expect to get real time behaviour from the Linux port or this demo
|
* expect to get real time behaviour from the POSIX port or this demo
|
||||||
* application. It is provided as a convenient development and demonstration
|
* application. It is provided as a convenient development and demonstration
|
||||||
* test bed only.
|
* test bed only.
|
||||||
*
|
*
|
||||||
@ -719,13 +719,6 @@ uint32_t ulIdleExecutionTime;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ulIdleExecutionTime = ulTaskGetIdleRunTimeCounter();
|
|
||||||
if( ulIdleExecutionTime == ulLastIdleExecutionTime )
|
|
||||||
{
|
|
||||||
pcStatusMessage = "Error: Total amount of Idle task execution time did not change";
|
|
||||||
}
|
|
||||||
ulLastIdleExecutionTime = ulIdleExecutionTime;
|
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user