Versioning and Task Names
Warning
Migrated from: https://cwiki.apache.org/confluence/display/NUTTX/Versioning+and+Task+Names
And also seems outdated.
Question
I have strange output from the NSH:
nsh> sysinfo
System Information:
NuttX Version: 0.0 Build: 0
System Time: 1325809119 [s] UTC
nsh> ps
PID PRI SCHD TYPE NP STATE NAME
0 0 FIFO KTHREAD READY <noname>()
1 50 FIFO KTHREAD WAITSIG <noname>()
2 100 FIFO TASK RUNNING <noname>()
No NAME and no version / build number
Answer
This is probably normal behavior. There are two separate, unrelated issues here.
Versioning
There are two different ways to get NuttX: (1) You can download the versioned releases at https://bitbucket.org/nuttx/nuttx/downloads, or you can (2) take un-versioned snapshots from the GIT repository at https://github.com/apache/nuttx. Since you have no version information, I am assuming that you are using a un-versioned copy.
The version number you are looking at comes from the header file
nuttx/include/nuttx/version.h
. That header file was created at build time
from a hidden file that you can find in the top-level nuttx directory called
.version. For NuttX-7.10, that file looks like this:
#!/bin/bash
CONFIG_VERSION_STRING="7.10"
CONFIG_VERSION_MAJOR=7
CONFIG_VERSION_MINOR=10
CONFIG_VERSION_BUILD="85981b37acc215ab795ef4ea4045f3e85a49a7af"
The .version
file does not exist in the GIT repository; it is was added to
the nuttx-7.10.tar.gz
tarball when the NuttX-7.10 version was created.
The version.h
header file is then generated by tools/mkversion
the
first time that you build the RTOS. That tool generates this version.h
header file for the above .version
file:
/* version.h -- Autogenerated! Do not edit. */
#ifndef __INCLUDE_NUTTX_VERSION_H
#define __INCLUDE_NUTTX_VERSION_H
#define CONFIG_VERSION_STRING "7.10"
#define CONFIG_VERSION_MAJOR 7
#define CONFIG_VERSION_MINOR 10
#define CONFIG_VERSION_BUILD "85981b37acc215ab795ef4ea4045f3e85a49a7af"
#define CONFIG_VERSION ((CONFIG_VERSION_MAJOR << 8) | (CONFIG_VERSION_MINOR))
#endif /* __INCLUDE_NUTTX_VERSION_H */
And that is where the sysinfo command gets the version information that it prints.
If you are using an un-versioned snapshot of NuttX from the GIT repository,
then the .version
file will not exist. The make system will check if there
is .version
file every time you build. If there is no .version
in the
top-level nuttx directory, then the make system will use the script at
tools/version.sh
to create one with version 0.0:
$(TOPDIR)/.version:
$(Q) if [ ! -f .version ]; then \
echo "No .version file found, creating one"; \
tools/version.sh -v 0.0 -b 0 .version; \
chmod 755 .version; \
fi
This is completely appropriate if you are using un-versioned code. You are,
however, free to edit the top-level .version
file to generate any kind of
custom versioning information that you would like. It would, however,
probably be inappropriate to say you are using a released version when you
are not.
Task Name Size
This one is easy. The size of a task name is controlled by the following
setting in your .config
file:
CONFIG_TASK_NAME_SIZE=0
It provides the maximum length of a task name. Zero, of course, then means no task names are supported.