Skip to content
Snippets Groups Projects
NuttShell.html 59.4 KiB
Newer Older
patacongo's avatar
patacongo committed
  <tr>
    <td><b><code>uordblks</code></b></td>
    <td>This is the total size of memory occupied by chunks handed out by malloc.</td>
  </tr>
  <tr>
    <td><b><code>fordblks</code></b></td>
    <td>This is the total size of memory occupied by free (not in use) chunks.</td>
  </tr>
</table></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdps"><h2>2.14 Show Current Tasks and Threads (ps)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
ps
</pre></ul>
<p>
  <b>Synopsis</b>.
  Show the currently active threads and tasks.  For example,
</p>
<ul><pre>
nsh&gt; ps
PID   PRI SCHD TYPE   NP STATE    NAME
    0   0 FIFO TASK      READY    Idle Task()
    1 128 RR   TASK      RUNNING  init()
    2 128 FIFO TASK      WAITSEM  nsh_telnetmain()
    3 100 RR   PTHREAD   WAITSEM  &lt;pthread&gt;(21)
nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdmkdir"><h2>2.15 Create a Directory (mkdir)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<p><b>Command Syntax:</b></p>
<ul><pre>
mkdir &lt;path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Create the directory at <code>&lt;path&gt;</code>.
  All components of of <code>&lt;path&gt;</code> except the final directory name must exist on a mounted file
  system; the final directory must not.
</p>
<p>
  <b>Limited to Mounted File Systems</b>.
  Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
  system.
  The <code>mkdir</code> command can only be used to create directories in volumes set up with the
  <a href="#cmdmount"><code>mount</code></a> command; it cannot be used to create directories in the <i>pseudo</i> filesystem.
</p>
<p><b>Example:</b></p>
<ul><pre>
nsh> mkdir /mnt/fs/tmp
nsh> ls -l /mnt/fs
/mnt/fs:
 drw-rw-rw-       0 TESTDIR/
 drw-rw-rw-       0 TMP/
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdmkfatfs"><h2>2.16 Create a FAT Filesystem (mkfatfs)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<p><b>Command Syntax:</b></p>
<ul><pre>
mkfatfs &lt;path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Format a fat file system on the block device specified by <code>&lt;path&gt;</code>.
  NSH provides this command to access the <a href="mkfatfs"><code>mkfatfs()</code></a> NuttX API.
  This block device must reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> and
  must have been created by some call to <code>register_blockdriver()</code> (see <code>include/nuttx/fs.h</code>).
</p>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdmkfifo"><h2>2.17 Create a FIFO (mkfifo)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<p><b>Command Syntax:</b></p>
<ul><pre>
mkfifo &lt;path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Creates a FIFO character device anywhere in the pseudo file system, creating
  whatever psuedo directories that may be needed to complete the <code>&lt;path&gt;</code>.
  By convention, however, device drivers are place in the standard <code>/dev</code> directory.
  After it is created, the FIFO device may be used as any other device driver.
  NSH provides this command to access the <a href="NuttxUserGuide.html#mkfifo"><code>mkfifo()</code></a> NuttX API.
</p>
<p><b>Example</b></p>
<ul><pre>
nsh> ls -l /dev
/dev:
 crw-rw-rw-       0 console
 crw-rw-rw-       0 null
 brw-rw-rw-       0 ram0
nsh> mkfifo /dev/fifo
nsh> ls -l /dev
ls -l /dev
/dev:
 crw-rw-rw-       0 console
 crw-rw-rw-       0 fifo
 crw-rw-rw-       0 null
 brw-rw-rw-       0 ram0
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdmkrd"><h2>2.18 Create a RAMDISK (mkrd)</h2></a>
  </td>
</tr>
</table>

<p><b>Command Syntax:</b></p>
<ul><pre>
mkrd [-m &lt;minor&gt;] [-s &lt;sector-size&gt;] &lt;nsectors&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Create a ramdisk consisting of <code>&lt;nsectors&gt;</code>, each of size
  <code>&lt;sector-size&gt;</code> (or 512 bytes if <code>&lt;sector-size&gt;</code> is not specified.
  The ramdisk will be registered as <code>/dev/ram&lt;n&gt;</code> (if <code>&lt;n&gt;</code> is not
  specified, mkrd will attempt to register the ramdisk as <code>/dev/ram0</code>.
</p>
<p><b>Example</b></p>
<ul><pre>
nsh&gt; ls /dev
/dev:
 console
 null
 ttyS0
 ttyS1
nsh&gt; mkrd 1024
nsh&gt; ls /dev
/dev:
 console
 null
 ram0
 ttyS0
 ttyS1
nsh&gt;
</pre></ul>
<p>
  Once the ramdisk has been created, it may be formatted using
  the <code>mkfatfs</code> command and mounted using the <code>mount</code> command.
</p>
<p><b>Example</b></p>
<ul><pre>
nsh&gt; mkrd 1024
nsh&gt; mkfatfs /dev/ram0
nsh&gt; mount -t vfat /dev/ram0 /tmp
nsh&gt; ls /tmp
/tmp:
nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdmount"><h2>2.19 Mount a File System (mount)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<p><b>Command Syntax:</b></p>
<ul><pre>
mount -t &lt;fstype&gt; &lt;block-device&gt; <code>&lt;dir-path&gt;</code>
</pre></ul>
<p>
  <b>Synopsis</b>.
  The 'm  ount' command mounts a file system in the NuttX psuedo
  filesystem.  'mount' performs a three way associating, binding:
</p>
<ol>
  <li><b>File system.</b>
    The '-t <code>&lt;fstype&gt;</code>' option identifies the type of
    file system that has been formatted on the <code>&lt;block-device&gt;</code>.
    As of this writing, <code>vfat</code> is the only supported value for <code>&lt;fstype&gt;</code>
  </li>
  <li><b>Block Device.</b>
    The <code>&lt;block-device&gt;</code> argument is the full or relative
    path to a block driver inode in the <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>.
    By convention, this is a name under the <code>/dev</code> sub-directory.
    This <code>&lt;block-device&gt;</code>  must have been previously formatted with the same file system
    type as specified by <code>&lt;fstype&gt;</code>
  </li>
  <li><b>Mount Point.</b>
    The mount point, <code>&lt;dir-path&gt;</code>, is the location in the
    <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> where the mounted volume will appear.
    This mount point can only reside in the NuttX <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>.
    By convention, this mount point is a subdirectory under <code>/mnt</code>.
    The mount command will create whatever psuedo directories that may be needed to complete the
    full path but the full path must not already exist.
  </li>
</ol>
<p>
  After the the volume has been mounted in the NuttX
  <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a>,
  it may be access in the same way as other objects in thefile system.
</p>
<p><b>Example</b></p>
<ul><pre>
nsh> ls -l /dev
/dev:
 crw-rw-rw-       0 console
 crw-rw-rw-       0 null
 brw-rw-rw-       0 ram0
nsh> ls /mnt
nsh: ls: no such directory: /mnt
nsh> mount -t vfat /dev/ram0 /mnt/fs
nsh> ls -l /mnt/fs/testdir
/mnt/fs/testdir:
 -rw-rw-rw-      15 TESTFILE.TXT
nsh> echo "This is a test" >/mnt/fs/testdir/example.txt
nsh> ls -l /mnt/fs/testdir
/mnt/fs/testdir:
-rw-rw-rw-      15 TESTFILE.TXT
 -rw-rw-rw-      16 EXAMPLE.TXT
nsh> cat /mnt/fs/testdir/example.txt
This is a test
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdping"><h2>2.20 Check Network Peer (ping)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
ping [-c &lt;count&gt;] [-i &lt;interval&gt;] &lt;ip-address&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Test the network communication with a remote peer.  Example,
</p>
<ul><pre>
nsh&gt; 10.0.0.1
PING 10.0.0.1 56 bytes of data
56 bytes from 10.0.0.1: icmp_seq=1 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=2 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=3 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=4 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=5 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=6 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=7 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=8 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=9 time=0 ms
56 bytes from 10.0.0.1: icmp_seq=10 time=0 ms
10 packets transmitted, 10 received, 0% packet loss, time 10190 ms
nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdput"><h2>2.21 Send File Via TFTP (put)</h2></a>
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
put [-b|-n] [-f &lt;remote-path&gt;] -h &lt;ip-address&gt; &lt;local-path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Copy the file at <code>&lt;local-address&gt;</code> to the host whose IP address is
  identified by <code>&lt;ip-address&gt;</code>.
</p>
<p><b>Other options:</b></p>
<ul><table>
  <tr>
    <td><b><code>-f &lt;remote-path&gt;</code></b></td>
    <td>
      The file will be saved relative with the same name on the host
      unless <code>&lt;remote-path&gt;</code> is provided.
    </td>
  </tr>
  <tr>
    <td><b><code>-b|-n</code></b></td>
    <td>
      Selects either binary (&quot;octect&quot;) or test (&quot;netascii&quot;) transfer
      mode.  Default: text.
    </td>
  </tr>
</table></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdpwd"><h2>2.22 Show Current Working Directory (pwd)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
pwd
</pre></ul>
<p>
  <b>Synopsis</b>.
  Show the current working directory.
</p>
<ul><pre>
nsh&gt; cd /dev
nsh&gt; pwd
/dev
nsh&gt;
</pre></ul>

<p>Same as <code><a href="#cmdecho">echo</a> <a href="#environvars">$PWD</a></code>.</p>
<ul><pre>
nsh&gt; echo $PWD
/dev
nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdrm"><h2>2.23 Remove a File (rm)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<a <p><b>Command Syntax:</b></p>
<ul><pre>
rm &lt;file-path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Remove the specified <code>&lt;file-path&gt;</code> name from the mounted file system.
  Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
  system.
  The <code>rm</code> command can only be used to remove (unlink) files in volumes set up with the
  <a href="#cmdmount"><code>mount</code></a> command;
  it cannot be used to remove names in the <i>pseudo</i> filesystem.
</p>
<p><b>Example:</b></p>
<ul><pre>
nsh> ls /mnt/fs/testdir
/mnt/fs/testdir:
 TESTFILE.TXT
 EXAMPLE.TXT
nsh> rm /mnt/fs/testdir/example.txt
nsh> ls /mnt/fs/testdir
/mnt/fs/testdir:
 TESTFILE.TXT
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdrmdir"><h2>2.24 Remove a Directory (rmdir)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<a <p><b>Command Syntax:</b></p>
<ul><pre>
rmdir &lt;dir-path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Remove the specified <code>&lt;dir-path&gt;</code> directory from the mounted file system.
  Recall that NuttX uses a <a href="NuttxUserGuide.html#FileSystemOverview"><i>pseudo</i> filesystem</a> for its root file
  system.
  The <code>rmdir</code> command can only be used to remove directories from volumes set up with the
  <a href="#cmdmount"><code>mount</code></a> command;
  it cannot be used to remove directories from the <i>pseudo</i> filesystem.
</p>
<p><b>Example:</b></p>
<ul><pre>
nsh> mkdir /mnt/fs/tmp
nsh> ls -l /mnt/fs
/mnt/fs:
 drw-rw-rw-       0 TESTDIR/
 drw-rw-rw-       0 TMP/
nsh> rmdir /mnt/fs/tmp
nsh> ls -l /mnt/fs
/mnt/fs:
 drw-rw-rw-       0 TESTDIR/
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdset"><h2>2.25 Set an Environment Variable (set)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
set &lt;name&gt; &lt;value&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Set the environment variable <code>&lt;name&gt;</code> to the string <code>&lt;value&gt;</code>.
  For example,
</p>
<ul><pre>
nsh&gt; echo $foobar

nsh&gt; set foobar foovalue
nsh&gt; echo $foobar
foovalue
nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdsh"><h2>2.26 Execute an NSH Script (sh)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
sh &lt;script-path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Execute the sequence of NSH commands in the file referred
  to by <code>&lt;script-path&gt;.
</p>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdsleep"><h2>2.27 Wait for Seconds (sleep)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
sleep &lt;sec&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Pause execution (sleep) for <code>&lt;sec&gt;</code> seconds.
</p>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdunmount"><h2>2.28 Unmount a File System (umount)</h2></a>
patacongo's avatar
patacongo committed
  </td>
</tr>
</table>

patacongo's avatar
patacongo committed
<a <p><b>Command Syntax:</b></p>
<ul><pre>
umount &lt;dir-path&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Un-mount the file system at mount point <code>&lt;dir-path&gt;</code>.
  The <code>umount</code> command can only be used to un-mount volumes previously mounted using
  <a href="#cmdmount"><code>mount</code></a> command.
</p>
<p><b>Example:</b></p>
<ul><pre>
nsh> ls /mnt/fs
/mnt/fs:
 TESTDIR/
nsh> umount /mnt/fs
nsh> ls /mnt/fs
/mnt/fs:
nsh: ls: no such directory: /mnt/fs
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdunset"><h2>2.29 Unset an Environment Variable (unset)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
unset &lt;name&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Remove the value associated with the environment variable
  <code>&lt;name&gt;.  Example:
</p>
<ul><pre>
nsh&gt; echo $foobar
foovalue
nsh&gt; unset foobar
nsh&gt; echo $foobar

nsh&gt;
</pre></ul>

<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdusleep"><h2>2.30 Wait for Microseconds (usleep)</h2></a>
patacongo's avatar
patacongo committed
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
usleep &lt;usec&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Pause execution (sleep) of <code>&lt;usec&gt;</code> microseconds.
</p>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmdxd"><h2>2.31 Hexadecimal dump (xd)</h2></a>
  </td>
  </tr>
</table>

<a <p><b>Command Syntax:</b></p>
<ul><pre>
xd &lt;hex-address&gt; &lt;byte-count&gt;
</pre></ul>
<p>
  <b>Synopsis</b>.
  Dump <code>&lt;byte-count&gt;</code> bytes of data from address <code>&lt;hex-address&gt;</code>.
</p>
<p><b>Example:</b></p>
<ul><pre>
nsh> xd 410e0 512
Hex dump:
0000: 00 00 00 00 9c 9d 03 00 00 00 00 01 11 01 10 06 ................
0010: 12 01 11 01 25 08 13 0b 03 08 1b 08 00 00 02 24 ....%..........$
...
01f0: 08 3a 0b 3b 0b 49 13 00 00 04 13 01 01 13 03 08 .:.;.I..........
nsh>
</pre></ul>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="configuration"><h1>3.0 Configuration Settings</h1></a>
  </td>
  </tr>
</table>

<p>
  The availability of the above commands depends upon features that
  may or may not be enabled in the NuttX configuration file.  The 
  following <a href="#cmddependencies">table</a> indicates the dependency of each command on NuttX
  configuration settings.  General configuration settings are discussed
  in the <a href="NuttxPortingGuide.html">NuttX Porting Guide.</a>
  Configuration settings specific to NSH as discussed at the <a href="#nshconfiguration">bottom</a> of this document.
</p>

<p>
  Note that in addition to general NuttX configuation settings, each NSH command can be
  individually disabled via the settings in the rightmost column.
  All of these settings make the configuration of NSH potentially complex but also allow it to
  squeeze into very small memory footprints.
</p>

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="cmddependencies"><h2>3.1 Command Dependencies on Configuration Settings</h2></a>
  </td>
  </tr>
</table>

<center><p>Table. Command Dependencies on Configuration Settings</p>
<table width="100%">
  <tr bgcolor="#e4e4e4">
    <th align="left" width="25%">Command</th>
    <th align="left">Depends on Configuration</th>
    <th align="left">Can Be Disabled with</th>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>[</code></b></td>
    <td>!<code>CONFIG_EXAMPLES_NSH_DISABLESCRIPT</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_TEST</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>cat</code></b></td>
    <td><code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_CAT</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>cd</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_ENVIRON</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_CD</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>cp</code></b></td>
    <td><code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_CP</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>echo</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_ECHO</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>exec</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_EXEC</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>exit</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_EXIT</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>get</code></b></td>
patacongo's avatar
patacongo committed
    <td><code>CONFIG_NET</code> &amp;&amp; <code>CONFIG_NET_UDP</code> &amp;&amp;
patacongo's avatar
patacongo committed
        <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_NET_BUFSIZE</code> &gt;= 558<sup>1</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_GET</code></td>
  </tr>
patacongo's avatar
patacongo committed
  <tr>
    <td><b><code>help</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_HELP</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>ifconfig</code></b></td>
    <td><code>CONFIG_NET</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_IFCONFIG</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>ls</code></b></td>
    <td><code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_LS</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mb,mh,mw</code></b></td>
    <td><br></td>
    <td>
      <code>CONFIG_EXAMPLES_NSH_DISABLE_MB</code>,<br>
      <code>CONFIG_EXAMPLES_NSH_DISABLE_MH</code>,<br>
      <code>CONFIG_EXAMPLES_NSH_DISABLE_MW</code>
    </td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mem</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MEM</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mkdir</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_WRITABLE</code><sup>4</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MKDIR</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mkfatfs</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_FAT</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MKFATFS</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mkfifo</code></b></td>
    <td><code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MKFIFO</code></td>
  </tr>
  <tr>
    <td><b><code>mkrd</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_WRITABLE</code><sup>4</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MKRD</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>mount</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_READABLE</code><sup>3</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_MOUNT</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>ping</code></b></td>
patacongo's avatar
patacongo committed
    <td><code>CONFIG_NET</code> &amp;&amp; <code>CONFIG_NET_ICMP</code> &amp;&amp;
        <code>CONFIG_NET_ICMP_PING</code>  &amp;&amp; !<code>CONFIG_DISABLE_CLOCK</code> &amp;&amp;
        !<code>CONFIG_DISABLE_SIGNALS</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_PING</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>ps</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_PS</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>put</code></b></td>
patacongo's avatar
patacongo committed
    <td><code>CONFIG_NET</code> &amp;&amp; <code>CONFIG_NET_UDP</code> &amp;&amp;
patacongo's avatar
patacongo committed
    <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_NET_BUFSIZE</code> &gt;= 558<sup>1,2</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_PUT</code></td>
  </tr>
patacongo's avatar
patacongo committed
  <tr>
    <td><b><code>pwd</code></b></td>
    <td>!<code>CONFIG_DISABLE_ENVIRON</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0</td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_PWD</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>rm</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_WRITABLE</code><sup>4</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_RM</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>rmdir</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_WRITABLE</code><sup>4</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_RMDIR</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>set</code></b></td>
    <td>!<code>CONFIG_DISABLE_ENVIRON</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_SET</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>sh</code></b></td>
    <td><code>CONFIG_NFILE_DESCRIPTORS &gt; 0 &amp;&amp; <code>CONFIG_NFILE_STREAMS &gt; 0 &amp;&amp; !<code>CONFIG_EXAMPLES_NSH_DISABLESCRIPT</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_SH</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>sleep</code></b></td>
    <td>!<code>CONFIG_DISABLE_SIGNALS</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_SLEEP</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>test</code></b></td>
    <td>!<code>CONFIG_EXAMPLES_NSH_DISABLESCRIPT</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_TEST</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>umount</code></b></td>
patacongo's avatar
patacongo committed
    <td>!<code>CONFIG_DISABLE_MOUNTPOINT</code> &amp;&amp; <code>CONFIG_NFILE_DESCRIPTORS</code> &gt; 0 &amp;&amp; <code>CONFIG_FS_READABLE</code><sup>3</sup></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_UMOUNT</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>unset</code></b></td>
    <td>!<code>CONFIG_DISABLE_ENVIRON</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_UNSET</code></td>
patacongo's avatar
patacongo committed
  </tr>
  <tr>
    <td><b><code>usleep</code></b></td>
    <td>!<code>CONFIG_DISABLE_SIGNALS</code></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_USLEEP</code></td>
  </tr>
  <tr>
    <td><b><code>xd</code></b></td>
    <td><br></td>
    <td><code>CONFIG_EXAMPLES_NSH_DISABLE_XD</code></td>
patacongo's avatar
patacongo committed
  </tr>
</table></center>

patacongo's avatar
patacongo committed
<p><sup>1</sup><small>
patacongo's avatar
patacongo committed
  Because of hardware padding, the actual required packet size may be larger</small><br>
  <sup>2</sup><small>
patacongo's avatar
patacongo committed
  Special TFTP server start-up optionss will probably be required to permit
patacongo's avatar
patacongo committed
  creation of files for the correct operation of the <code>put</code> command.</small><br>
  <sup>3</sup><small>
  <code>CONFIG_FS_READABLE</code> is not a user configuration but is set automatically
  if any readable filesystem is selected.  At present, this is either <code>CONFIG_FS_FAT</code>
  or <code>CONFIG_FS_ROMFS</code>.</small><br>
  <sup>4</sup><small>
  <code>CONFIG_FS_WRITABLE</code> is not a user configuration but is set automatically
  if any writable filesystem is selected.  At present, this is only <code>CONFIG_FS_FAT</code>.</small><br>
</p>
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
<table width ="100%">
  <tr bgcolor="#e4e4e4">
  <td>
    <a name="nshconfiguration"><h2>3.2  NSH-Specific Configuration Settings</h2></a>
  </td>
  </tr>
</table>

<p>
  The behavior of NSH can be modified with the following settings in
  the <code>configs/&lt;board-name&gt;/defconfig</code> file:
</p>

<center><table width="100%">
  <tr bgcolor="#e4e4e4">
    <th align="left" width="25%">Configuration</th>
    <th align="left">Description</th>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_FILEIOSIZE</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Size of a static I/O buffer used for file access (ignored if
      there is no filesystem). Default is 1024.
patacongo's avatar
patacongo committed
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_STRERROR</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      strerror(errno) makes more readable output but strerror() is
      very large and will not be used unless this setting is <i>y</i>
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_LINELEN</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      The maximum length of one command line and of one output line.
      Default: 80
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_STACKSIZE</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      The stack size to use when spawning new threads or tasks.  Such
      new threads are generated when a command is executed in background
      or as new TELNET connections are established.
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_NESTDEPTH</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      The maximum number of nested <a href="#conditional"><code>if-then[-else]-fi</code></a> sequences that
      are permissable.  Default: 3
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_DISABLESCRIPT</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      This can be set to <i>y</i> to suppress support for scripting.  This
      setting disables the <a href="#cmdsh"><code>sh</code></a>, <a href="#cmdtest"><code>test</code></a>, and <a href="#cmtest"><code>[</code></a> commands and the
      <a href="#conditional"><code>if-then[-else]-fi</code></a> construct.  This would only be set on systems
      where a minimal footprint is a necessity and scripting is not.
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_DISABLEBG</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      This can be set to <i>y</i> to suppress support for background
      commands.  This setting disables the <a href="#cmdoverview"><code>nice</code></a> command prefix and
      the <a href="#cmdoverview"><code>&amp;</code></a> command suffix.  This would only be set on systems
      where a minimal footprint is a necessity and background command execution is not.
    </td>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_MMCSDMINOR</code></b></td>
    <td>
      If the architecture supports an MMC/SD slot and if the NSH
      architecture specific logic is present, this option will provide
      the MMC/SD minor number, i.e., the MMC/SD block driver will
      be registered as <code>/dev/mmcsd</code><i>N</i> where <i>N</i> is the minor number.
      Default is zero.
    </td>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_ROMFSETC</code></b></td>
    <td>
      Mount a ROMFS filesystem at <code>/etc</code> and provide a startup script
      at <code>/etc/init.d/rcS</code>.  The default startup script will mount
      a FAT FS RAMDISK at <code>/tmp</code> but the logic is
      <a href="#startupscript">easily extensible</a>.
    </td>
  </tr>
patacongo's avatar
patacongo committed
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_CONSOLE</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      If <code>CONFIG_EXAMPLES_NSH_CONSOLE</code>is set to <i>y</i>, then a serial
      console front-end is selected.
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_TELNET</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      If <code>CONFIG_EXAMPLES_NSH_TELNET</code> is set to <i>y</i>, then a TELENET
      server front-end is selected.  When this option is provided,
      you may log into NuttX remotely using telnet in order to
      access NSH.
    </td>
  </tr>
patacongo's avatar
patacongo committed
</table></center>
patacongo's avatar
patacongo committed

<p>
  One or both of <code>CONFIG_EXAMPLES_NSH_CONSOLE</code> and <code>CONFIG_EXAMPLES_NSH_TELNET</code>
  must be defined.  If <code>CONFIG_EXAMPLES_NSH_TELNET</code> is selected, then there some
  other configuration settings that apply:
</p>

<center><table width="100%">
  <tr bgcolor="#e4e4e4">
    <th align="left" width="25%">Configuration</th>
    <th align="left">Description</th>
  </tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_IOBUFFER_SIZE</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Determines the size of the I/O buffer to use for sending/
      receiving TELNET commands/reponses
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_DHCPC</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Obtain the the IP address via DHCP.
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_IPADDR</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      If <code>CONFIG_EXAMPLES_NSH_DHCPC</code> is NOT set, then the static IP
      address must be provided.
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_DRIPADDR</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Default router IP address
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_NETMASK</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Network mask
    </td>
  </tr>
  <tr>
patacongo's avatar
patacongo committed
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_NOMAC</code></b></td>
patacongo's avatar
patacongo committed
    <td>
      Set if your ethernet hardware has no built-in MAC address.
      If set, a bogus MAC will be assigned.
    </td>
  </tr>
patacongo's avatar
patacongo committed
</table></center>

<p>
  If <code>CONFIG_EXAMPLES_NSH_ROMFSETC</code> is selected, then the following additional
  configuration setting apply:
</p>

<center><table width="100%">
  <tr bgcolor="#e4e4e4">
    <th align="left" width="25%">Configuration</th>
    <th align="left">Description</th>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_ROMFSMOUNTPT</code></b></td>
    <td>
      The default mountpoint for the ROMFS volume is <code>&quot;/etc&quot;</code>, but that
      can be changed with this setting.  This must be a absolute path
      beginning with '<code>/</code>' and enclosed in quotes.
    </td>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_INITSCRIPT</code></b></td>
    <td>
      This is the relative path to the startup script within the mountpoint.
      The default is <code>&quot;init.d/rcS&quot;</code>.  This is a relative path and must not
      start with '<code>/</code>' but must be enclosed in quotes.
    </td>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_ROMFSDEVNO</code></b></td>
    <td>
      This is the minor number of the ROMFS block device.  The default is
      '<code>0</code>' corresponding to <code>/dev/ram0</code>.
    </td>
  </tr>
  <tr>
    <td valign="top"><b><code>CONFIG_EXAMPLES_NSH_ROMFSSECTSIZE</code></b></td>
    <td>
      This is the sector size to use with the ROMFS volume.  Since the
      default volume is very small, this defaults to 64 but should be
      increased if the ROMFS volume were to be become large.  Any value
      selected must be a power of 2.
    </td>