samples/task_profiler: modifications to ease integration
- Few clarifications in README - addition of prof_flush() in profiler.h - renamed shell "commands" variable (too generic) Change-Id: I1bcf1867c15774a84ba24c19546e5ddafb2233a2 Signed-off-by: Fabrice Olivero <fabrice.olivero@intel.com>
This commit is contained in:
parent
ebd5011adf
commit
275a853c16
5 changed files with 31 additions and 6 deletions
|
@ -66,7 +66,7 @@ How to enable profiler in your application
|
|||
Conventions:
|
||||
$ZEPHYR_BASE = Zephyr base folder
|
||||
$APP_BASE = Application base folder
|
||||
$PROFILER_BASE = Profiler base folder
|
||||
$PROFILER_BASE = Profiler base folder i.e. $ZEPHYR_BASE/samples/task_profiler/profiler
|
||||
prof.log = profiler output file generated from Zephyr target (binary)
|
||||
|
||||
1) Enable KERNEL_EVENT_LOGGER
|
||||
|
@ -164,7 +164,7 @@ prof_flush in the main loop, where processing will be the least impacted)
|
|||
prof_flush function must be called from main task before going in idle mode
|
||||
|
||||
<--snippet
|
||||
extern void prof_flush()
|
||||
#include "profiler.h"
|
||||
|
||||
...
|
||||
|
||||
|
@ -177,6 +177,13 @@ void main(void)
|
|||
// Going to idle e.g. calling nano_cpu_idle()
|
||||
-->
|
||||
|
||||
Note that profiler src folder must be added to the Makefile:
|
||||
$APP_BASE/src/Makefile:
|
||||
|
||||
<--snippet
|
||||
ccflags-y += -I${ZEPHYR_BASE}/samples/task_profiler/profiler/src
|
||||
-->
|
||||
|
||||
2.2) Add path to $PROFILER_BASE folder in application Makefile
|
||||
--------------------------------------------------------------
|
||||
|
||||
|
@ -186,6 +193,10 @@ For example in $APP_BASE/src/Makefile:
|
|||
obj-y += $PROFILER_BASE/
|
||||
-->
|
||||
|
||||
Note:
|
||||
- the final "/" after $PROFILER_BASE is important
|
||||
- the path must be relative to application src folder
|
||||
|
||||
2.3) Increase console UART baud rate (depending on your board)
|
||||
------------------------------------
|
||||
|
||||
|
@ -267,6 +278,13 @@ const struct shell_cmd apps_cmd[] = {
|
|||
}
|
||||
-->
|
||||
|
||||
Note that profiler src folder must be added to the Makefile:
|
||||
$APP_BASE/src/Makefile:
|
||||
|
||||
<--snippet
|
||||
ccflags-y += -I${ZEPHYR_BASE}/samples/task_profiler/profiler/src
|
||||
-->
|
||||
|
||||
Additionally, the profiler must not register its console so
|
||||
PROFILER_NO_SHELL_REGISTER must be set to 1 while building:
|
||||
export PROFILER_NO_SHELL_REGISTER=1
|
||||
|
|
|
@ -163,7 +163,7 @@ int shell_cmd_prof(int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct shell_cmd commands[] = {
|
||||
struct shell_cmd prof_commands[] = {
|
||||
PROF_CMD,
|
||||
{ NULL, NULL}
|
||||
};
|
||||
|
@ -223,7 +223,7 @@ void prof_init(void)
|
|||
|
||||
#ifdef PROFILER_SHELL
|
||||
#ifndef PROFILER_NO_SHELL_REGISTER
|
||||
shell_init("shell> ", commands);
|
||||
shell_init("shell> ", prof_commands);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -19,8 +19,14 @@
|
|||
#ifndef PROFILER_H
|
||||
#define PROFILER_H
|
||||
|
||||
extern void prof_flush(void);
|
||||
|
||||
#if defined(CONFIG_CONSOLE_HANDLER_SHELL) && defined(CONFIG_KERNEL_EVENT_LOGGER_DYNAMIC)
|
||||
extern int shell_cmd_prof(int argc, char *argv[]);
|
||||
#define PROF_CMD { "prof", shell_cmd_prof, "<start|stop|cfg> [cfg1] [cfg2]" }
|
||||
#else
|
||||
#define PROF_CMD { "prof", NULL }
|
||||
#endif
|
||||
|
||||
#endif /* PROFILER_H */
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
ccflags-y += ${PROJECTINCLUDE}
|
||||
ccflags-y += -I${ZEPHYR_BASE}/samples/task_profiler/profiler/src
|
||||
|
||||
obj-y = hello.o ../../profiler/
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
#define PRINT printk
|
||||
#endif
|
||||
|
||||
#include "profiler.h"
|
||||
|
||||
#ifdef CONFIG_NANOKERNEL
|
||||
|
||||
/*
|
||||
|
@ -47,8 +49,6 @@ char __stack fiberStack[STACKSIZE];
|
|||
struct nano_sem nanoSemTask;
|
||||
struct nano_sem nanoSemFiber;
|
||||
|
||||
extern void prof_flush(void);
|
||||
|
||||
void fiberEntry(void)
|
||||
{
|
||||
while (1) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue