| apps/nshlib |
| ^^^^^^^^^^^ |
| |
| This directory contains the NuttShell (NSH) library. This library can be |
| linked with other logic to provide a simple shell application for NuttX. |
| |
| - Console/NSH Front End |
| - Command Overview |
| - Conditional Command Execution |
| - Looping |
| - Built-In Variables |
| - Current Working Directory |
| Environment Variables |
| - NSH Start-Up Script |
| - Simple Commands |
| - NSH Configuration Settings |
| Command Dependencies on Configuration Settings |
| NSH-Specific Configuration Settings |
| - Common Problems |
| |
| Console/NSH Front End |
| ^^^^^^^^^^^^^^^^^^^^^ |
| |
| Using settings in the configuration file, NSH may be configured to |
| use either the serial stdin/out or a telnet connection as the console |
| or BOTH. When NSH is started, you will see the following welcome on |
| either console: |
| |
| NuttShell (NSH) |
| nsh> |
| |
| 'nsh>' is the NSH prompt and indicates that you may enter a command |
| from the console. |
| |
| Command Overview |
| ^^^^^^^^^^^^^^^^ |
| |
| This directory contains the NuttShell (NSH). This is a simple |
| shell-like application. At present, NSH supports the following commands |
| forms: |
| |
| Simple command: <cmd> |
| Command with re-directed output: <cmd> > <file> |
| <cmd> >> <file> |
| Background command: <cmd> & |
| Re-directed background command: <cmd> > <file> & |
| <cmd> >> <file> & |
| |
| Where: |
| |
| <cmd> is any one of the simple commands listed later. |
| <file> is the full or relative path to any writeable object |
| in the file system name space (file or character driver). |
| Such objects will be referred to simply as files throughout |
| this README. |
| |
| NSH executes at the mid-priority (128). Backgrounded commands can |
| be made to execute at higher or lower priorities using nice: |
| |
| [nice [-d <niceness>>]] <cmd> [> <file>|>> <file>] [&] |
| |
| Where <niceness> is any value between -20 and 19 where lower |
| (more negative values) correspond to higher priorities. The |
| default niceness is 10. |
| |
| Multiple commands per line. NSH will accept multiple commands per |
| command line with each command separated with the semi-colon character (;). |
| |
| If CONFIG_NSH_CMDPARMS is selected, then the output from commands, from |
| file applications, and from NSH built-in commands can be used as arguments |
| to other commands. The entity to be executed is identified by enclosing |
| the command line in back quotes. For example, |
| |
| set FOO `myprogram $BAR` |
| |
| Will execute the program named myprogram passing it the value of the |
| environment variable BAR. The value of the environment variable FOO |
| is then set output of myprogram on stdout. Because this feature commits |
| significant resources, it is disabled by default. |
| |
| If CONFIG_NSH_ARGCAT is selected, the support concatenation of strings |
| with environment variables or command output. For example: |
| |
| set FOO XYZ |
| set BAR 123 |
| set FOOBAR ABC_${FOO}_${BAR} |
| |
| would set the environment variable FOO to XYZ, BAR to 123 and FOOBAR |
| to ABC_XYZ_123. If NSH_ARGCAT is not selected, then a slightly small |
| FLASH footprint results but then also only simple environment |
| variables like $FOO can be used on the command line. |
| |
| Conditional Command Execution |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| An if-then[-else]-fi construct is also supported in order to |
| support conditional execution of commands. This works from the |
| command line but is primarily intended for use within NSH scripts |
| (see the sh command). The syntax is as follows: |
| |
| if <cmd> |
| then |
| [sequence of <cmd>] |
| else |
| [sequence of <cmd>] |
| fi |
| |
| Looping |
| ^^^^^^^ |
| |
| while-do-done and until-do-done looping constructs are also supported. |
| These works from the command line but are primarily intended for use |
| within NSH scripts (see the sh command). The syntax is as follows: |
| |
| while <test-cmd>; do <cmd-sequence>; done |
| |
| Execute <cmd-sequence> as long as <test-cmd> has an exit status of |
| zero. |
| |
| until <test-cmd>; do <cmd-sequence>; done |
| |
| Execute <cmd-sequence> as long as <test-cmd> has a non-zero exit |
| status. |
| |
| A break command is also supported. The break command is only meaningful |
| within the body of the a while or until loop, between the do and done |
| tokens. If the break command is executed within the body of a loop, the |
| loop will immediately terminate and execution will continue with the |
| next command immediately following the done token. |
| |
| Built-In Variables |
| ^^^^^^^^^^^^^^^^^^ |
| |
| $? - The result of the last simple command execution |
| |
| Current Working Directory |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| All path arguments to commands may be either an absolute path or a |
| path relative to the current working directory. The current working |
| directory is set using the 'cd' command and can be queried either |
| by using the 'pwd' command or by using the 'echo $PWD' command. |
| |
| Environment Variables: |
| ---------------------- |
| |
| PWD - The current working directory |
| OLDPWD - The previous working directory |
| |
| NSH Start-Up Script |
| ^^^^^^^^^^^^^^^^^^^ |
| |
| NSH supports options to provide a start up script for NSH. In general |
| this capability is enabled with CONFIG_NSH_ROMFSETC, but has |
| several other related configuration options as described in the final |
| section of this README. This capability also depends on: |
| |
| - CONFIG_DISABLE_MOUNTPOINT not set |
| - CONFIG_NFILE_DESCRIPTORS > 4 |
| - CONFIG_FS_ROMFS |
| |
| Default Start-Up Behavior |
| ------------------------- |
| |
| The implementation that is provided is intended to provide great flexibility |
| for the use of Start-Up files. This paragraph will discuss the general |
| behavior when all of the configuration options are set to the default |
| values. |
| |
| In this default case, enabling CONFIG_NSH_ROMFSETC will cause |
| NSH to behave as follows at NSH startup time: |
| |
| - NSH will create a read-only RAM disk (a ROM disk), containing a tiny |
| ROMFS file system containing the following: |
| |
| |--init.d/ |
| `-- rcS |
| |
| Where rcS is the NSH start-up script |
| |
| - NSH will then mount the ROMFS file system at /etc, resulting in: |
| |
| |--dev/ |
| | `-- ram0 |
| `--etc/ |
| `--init.d/ |
| `-- rcS |
| |
| - By default, the contents of rcS script are: |
| |
| # Create a RAMDISK and mount it at XXXRDMOUNTPOINTXXX |
| |
| mkrd -m 1 -s 512 1024 |
| mkfatfs /dev/ram1 |
| mount -t vfat /dev/ram1 /tmp |
| |
| - NSH will execute the script at /etc/init.d/rcS at start-up (before the |
| first NSH prompt. After execution of the script, the root FS will look |
| like: |
| |
| |--dev/ |
| | |-- ram0 |
| | `-- ram1 |
| |--etc/ |
| | `--init.d/ |
| | `-- rcS |
| `--tmp/ |
| |
| Modifying the ROMFS Image |
| ------------------------- |
| |
| The contents of the /etc directory are retained in the file |
| apps/nshlib/nsh_romfsimg.h (OR, if CONFIG_NSH_ARCHROMFS |
| is defined, include/arch/board/rcS.template). In order to modify |
| the start-up behavior, there are three things to study: |
| |
| 1. Configuration Options. |
| The additional CONFIG_NSH_ROMFSETC configuration options |
| discussed in the final section of this README. |
| |
| 2. tools/mkromfsimg.sh Script. |
| The script tools/mkromfsimg.sh creates nsh_romfsimg.h. |
| It is not automatically executed. If you want to change the |
| configuration settings associated with creating and mounting |
| the /tmp directory, then it will be necessary to re-generate |
| this header file using the mkromfsimg.sh script. |
| |
| The behavior of this script depends upon three things: |
| |
| - The configuration settings of the installed NuttX configuration. |
| - The genromfs tool (available from http://romfs.sourceforge.net). |
| - The file apps/nshlib/rcS.template (OR, if |
| CONFIG_NSH_ARCHROMFS is defined, include/arch/board/rcs.template) |
| |
| 3. rcS.template. |
| The file apps/nshlib/rcS.template contains the general form |
| of the rcS file; configured values are plugged into this |
| template file to produce the final rcS file. |
| |
| NOTE: |
| |
| apps/nshlib/rcS.template generates the standard, default |
| nsh_romfsimg.h file. If CONFIG_NSH_ARCHROMFS is defined |
| in the NuttX configuration file, then a custom, board-specific |
| nsh_romfsimg.h file residing in configs/<board>/include will be |
| used. NOTE when the OS is configured, include/arch/board will |
| be linked to configs/<board>/include. |
| |
| All of the startup-behavior is contained in rcS.template. The |
| role of mkromfsimg.sh is to (1) apply the specific configuration |
| settings to rcS.template to create the final rcS, and (2) to |
| generate the header file nsh_romfsimg.h containing the ROMFS |
| file system image. |
| |
| Simple Commands |
| ^^^^^^^^^^^^^^^ |
| |
| o [ <expression> ] |
| o test <expression> |
| |
| These are two alternative forms of the same command. They support |
| evaluation of a boolean expression which sets $?. This command |
| is used most frequently as the conditional command following the |
| 'if' in the if-then[-else]-fi construct. |
| |
| Expression Syntax: |
| ------------------ |
| |
| expression = simple-expression | !expression | |
| expression -o expression | expression -a expression |
| |
| simple-expression = unary-expression | binary-expression |
| |
| unary-expression = string-unary | file-unary |
| |
| string-unary = -n string | -z string |
| |
| file-unary = -b file | -c file | -d file | -e file | -f file | |
| -r file | -s file | -w file |
| |
| binary-expression = string-binary | numeric-binary |
| |
| string-binary = string = string | string == string | string != string |
| |
| numeric-binary = integer -eq integer | integer -ge integer | |
| integer -gt integer | integer -le integer | |
| integer -lt integer | integer -ne integer |
| |
| o addroute <target> <netmask> <router> |
| |
| This command adds an entry in the routing table. The new entry |
| will map the IP address of a router on a local network(<router>) |
| to an external network characterized by the <target> IP address and |
| a network mask <netmask> |
| |
| Example: |
| |
| nsh> addroute 1.1.1.1 2.2.2.2 3.3.3.3 |
| |
| o base64dec [-w] [-f] <string or filepath> |
| |
| o base64dec [-w] [-f] <string or filepath> |
| |
| o basename <path> [<suffix>] |
| |
| Extract the final string from a <path> by removing the preceding path |
| segments and (optionally) removing any trailing <suffix>. |
| |
| o break |
| |
| The break command is only meaningful within the body of the a while or |
| until loop, between the do and done tokens. Outside of a loop, break |
| command does nothing. If the break command is executed within the body |
| of a loop, the loop will immediately terminate and execution will |
| continue with the next command immediately following the done token. |
| |
| o cat <path> [<path> [<path> ...]] |
| |
| This command copies and concatenates all of the files at <path> |
| to the console (or to another file if the output is redirected). |
| |
| o cd [<dir-path>|-|~|..] |
| |
| Changes the current working directory (PWD). Also sets the |
| previous working directory environment variable (OLDPWD). |
| |
| FORMS: |
| ------ |
| |
| 'cd <dir-path>' sets the current working directory to <dir-path>. |
| 'cd -' sets the current working directory to the previous |
| working directory ($OLDPWD). Equivalent to 'cd $OLDPWD'. |
| 'cd' or 'cd ~' set the current working directory to the 'home' |
| directory. The 'home' directory can be configured by setting |
| CONFIG_LIB_HOMEDIR in the configuration file. The default |
| 'home' directory is '/'. |
| 'cd ..' sets the current working directory to the parent directory. |
| |
| o cmp <path1> <path2> |
| |
| Compare of the contents of the file at <file1> with the contents of |
| the file at <path2>. Returns an indication only if the files differ. |
| |
| o cp <source-path> <dest-path> |
| |
| Copy of the contents of the file at <source-path> to the location |
| in the file system indicated by <path-path> |
| |
| o date [-s "MMM DD HH:MM:SS YYYY"] |
| |
| Show or set the current date and time. |
| |
| Only one format is used both on display and when setting the date/time: |
| MMM DD HH:MM:SS YYYY. For example, |
| |
| data -s "Sep 1 11:30:00 2011" |
| |
| 24-hour time format is assumed. |
| |
| o dd if=<infile> of=<outfile> [bs=<sectsize>] [count=<sectors>] [skip=<sectors>] |
| |
| Copy blocks from <infile> to <outfile>. <nfile> or <outfile> may |
| be the path to a standard file, a character device, or a block device. |
| |
| Examples: |
| |
| 1. Read from character device, write to regular file. This will |
| create a new file of the specified size filled with zero. |
| |
| nsh> dd if=/dev/zero of=/tmp/zeros bs=64 count=16 |
| nsh> ls -l /tmp |
| /tmp: |
| -rw-rw-rw- 1024 ZEROS |
| |
| 2. Read from character device, write to block device. This will |
| fill the entire block device with zeros. |
| |
| nsh> ls -l /dev |
| /dev: |
| brw-rw-rw- 0 ram0 |
| crw-rw-rw- 0 zero |
| nsh> dd if=/dev/zero of=/dev/ram0 |
| |
| 3. Read from a block devic, write to a character device. This |
| will read the entire block device and dump the contents in |
| the bit bucket. |
| |
| nsh> ls -l /dev |
| /dev: |
| crw-rw-rw- 0 null |
| brw-rw-rw- 0 ram0 |
| nsh> dd if=/dev/ram0 of=/dev/null |
| |
| o delroute <target> <netmask> |
| |
| This command removes an entry from the routing table. The entry |
| removed will be the first entry in the routing table that matches |
| the external network characterized by the <target> IP address and |
| the network mask <netmask> |
| |
| Example: |
| |
| nsh> delroute 1.1.1.1 2.2.2.2 |
| |
| o df |
| |
| Show the state of each mounted volume. |
| |
| Example: |
| |
| nsh> mount |
| /etc type romfs |
| /tmp type vfat |
| nsh> df |
| Block Number |
| Size Blocks Used Available Mounted on |
| 64 6 6 0 /etc |
| 512 985 2 983 /tmp |
| nsh> |
| |
| o dirname <path> |
| |
| Extract the path string leading up to the full <path> by removing |
| the final directory or file name. |
| |
| o echo [<string|$name> [<string|$name>...]] |
| |
| Copy the sequence of strings and expanded environment variables to |
| console out (or to a file if the output is re-directed). |
| |
| o exec <hex-address> |
| |
| Execute the user logic at address <hex-address>. NSH will pause |
| until the execution unless the user logic is executed in background |
| via 'exec <hex-address> &' |
| |
| o exit |
| |
| Exit NSH. Only useful if you have started some other tasks (perhaps |
| using the 'exec' command') and you would like to have NSH out of the |
| way. |
| |
| o free |
| |
| Show the current state of the memory allocator. For example, |
| |
| nsh> free |
| free |
| total used free largest |
| Mem: 4194288 1591552 2602736 2601584 |
| |
| Where: |
| total - This is the total size of memory allocated for use |
| by malloc in bytes. |
| used - This is the total size of memory occupied by |
| chunks handed out by malloc. |
| free - This is the total size of memory occupied by |
| free (not in use) chunks. |
| largest - Size of the largest free (not in use) chunk |
| |
| o get [-b|-n] [-f <local-path>] -h <ip-address> <remote-path> |
| |
| Use TFTP to copy the file at <remote-address> from the host whose IP |
| address is identified by <ip-address>. Other options: |
| |
| -f <local-path> |
| The file will be saved relative to the current working directory |
| unless <local-path> is provided. |
| -b|-n |
| Selects either binary ("octet") or test ("netascii") transfer |
| mode. Default: text. |
| |
| o help [-v] [<cmd>] |
| |
| Presents summary information about NSH commands to console. Options: |
| |
| -v |
| Show verbose output will full command usage |
| |
| <cmd> |
| Show full command usage only for this command |
| |
| o hexdump <file or device> |
| |
| Dump data in hexadecimal format from a file or character device. |
| |
| o ifconfig [nic_name [<ip-address>|dhcp]] [dr|gw|gateway <dr-address>] [netmask <net-mask>] [dns <dns-address>] [hw <hw-mac>] |
| |
| Show the current configuration of the network, for example: |
| |
| nsh> ifconfig |
| eth0 HWaddr 00:18:11:80:10:06 |
| IPaddr:10.0.0.2 DRaddr:10.0.0.1 Mask:255.255.255.0 |
| |
| if networking statistics are enabled (CONFIG_NET_STATISTICS), then |
| this command will also show the detailed state of transfers by protocol. |
| |
| NOTE: This commands depends upon having the rpocfs file system configured |
| into the system. The procfs file system must also have been mounted |
| with a command like: |
| |
| nsh> mount -t procfs /proc |
| |
| o ifdown <nic-name> |
| |
| Take down the interface identified by the name <nic-name>. |
| |
| Example: |
| |
| ifdown eth0 |
| |
| o ifup <nic-name> |
| |
| Bring up down the interface identified by the name <nic-name>. |
| |
| Example: |
| |
| ifup eth0 |
| |
| o kill -<signal> <pid> |
| |
| Send the <signal> to the task identified by <pid>. |
| |
| o losetup [-d <dev-path>] | [[-o <offset>] [-r] <ldev-path> <file-path>] |
| |
| Setup or teardown the loop device: |
| |
| 1. Teardown the setup for the loop device at <dev-path>: |
| |
| losetup d <dev-path> |
| |
| 2. Setup the loop device at <dev-path> to access the file at <file-path> |
| as a block device: |
| |
| losetup [-o <offset>] [-r] <dev-path> <file-path> |
| |
| Example: |
| |
| nsh> dd if=/dev/zero of=/tmp/image bs=512 count=512 |
| nsh> ls -l /tmp |
| /tmp: |
| -rw-rw-rw- 262144 IMAGE |
| nsh> losetup /dev/loop0 /tmp/image |
| nsh> ls -l /dev |
| /dev: |
| brw-rw-rw- 0 loop0 |
| nsh> mkfatfs /dev/loop0 |
| nsh> mount -t vfat /dev/loop0 /mnt/example |
| nsh> ls -l /mnt |
| ls -l /mnt |
| /mnt: |
| drw-rw-rw- 0 example/ |
| nsh> echo "This is a test" >/mnt/example/atest.txt |
| nsh> ls -l /mnt/example |
| /mnt/example: |
| -rw-rw-rw- 16 ATEST.TXT |
| nsh> cat /mnt/example/atest.txt |
| This is a test |
| nsh> |
| |
| o ls [-lRs] <dir-path> |
| |
| Show the contents of the directory at <dir-path>. NOTE: |
| <dir-path> must refer to a directory and no other file system |
| object. |
| |
| Options: |
| -------- |
| |
| -R Show the constents of specified directory and all of its |
| sub-directories. |
| -s Show the size of the files along with the filenames in the |
| listing |
| -l Show size and mode information along with the filenames |
| in the listing. |
| |
| o md5 [-f] <string or filepath> |
| |
| o mb <hex-address>[=<hex-value>][ <hex-byte-count>] |
| o mh <hex-address>[=<hex-value>][ <hex-byte-count>] |
| o mw <hex-address>[=<hex-value>][ <hex-byte-count>] |
| |
| Access memory using byte size access (mb), 16-bit accesses (mh), |
| or 32-bit access (mw). In each case, |
| |
| <hex-address>. Specifies the address to be accessed. The current |
| value at that address will always be read and displayed. |
| <hex-address>=<hex-value>. Read the value, then write <hex-value> |
| to the location. |
| <hex-byte-count>. Perform the mb, mh, or mw operation on a total |
| of <hex-byte-count> bytes, increment the <hex-address> appropriately |
| after each access |
| |
| Example |
| |
| nsh> mh 0 16 |
| 0 = 0x0c1e |
| 2 = 0x0100 |
| 4 = 0x0c1e |
| 6 = 0x0110 |
| 8 = 0x0c1e |
| a = 0x0120 |
| c = 0x0c1e |
| e = 0x0130 |
| 10 = 0x0c1e |
| 12 = 0x0140 |
| 14 = 0x0c1e |
| nsh> |
| |
| o mkdir <path> |
| |
| Create the directory at <path>. All components of of <path> |
| except the final directory name must exist on a mounted file |
| system; the final directory must not. |
| |
| Recall that NuttX uses a pseudo file system for its root file system. |
| The mkdir command can only be used to create directories in volumes |
| set up with the mount command; it cannot be used to create directories |
| in the pseudo file system. |
| |
| Example: |
| ^^^^^^^^ |
| |
| nsh> mkdir /mnt/fs/tmp |
| nsh> ls -l /mnt/fs |
| /mnt/fs: |
| drw-rw-rw- 0 TESTDIR/ |
| drw-rw-rw- 0 TMP/ |
| nsh> |
| |
| o mkfatfs [-F <fatsize>] <block-driver> |
| |
| Format a fat file system on the block device specified by <block-driver> |
| path. The FAT size may be provided as an option. Without the <fatsize> |
| option, mkfatfs will select either the FAT12 or FAT16 format. For |
| historical reasons, if you want the FAT32 format, it must be explicitly |
| specified on the command line. |
| |
| NSH provides this command to access the mkfatfs() NuttX API. |
| This block device must reside in the NuttX pseudo file system and |
| must have been created by some call to register_blockdriver() (see |
| include/nuttx/fs/fs.h). |
| |
| o mkfifo <path> |
| |
| Creates a FIFO character device anywhere in the pseudo file system, |
| creating whatever pseudo directories that may be needed to complete |
| the full path. By convention, however, device drivers are place in |
| the standard /dev directory. After it is created, the FIFO device |
| may be used as any other device driver. NSH provides this command |
| to access the mkfifo() NuttX API. |
| |
| Example: |
| ^^^^^^^^ |
| |
| 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> |
| |
| o mkrd [-m <minor>] [-s <sector-size>] <nsectors> |
| |
| Create a ramdisk consisting of <nsectors>, each of size |
| <sector-size> (or 512 bytes if <sector-size> is not specified. |
| The ramdisk will be registered as /dev/ram<n> (if <n> is not |
| specified, mkrd will attempt to register the ramdisk as |
| /dev/ram0. |
| |
| Example: |
| ^^^^^^^^ |
| |
| nsh> ls /dev |
| /dev: |
| console |
| null |
| ttyS0 |
| ttyS1 |
| nsh> mkrd 1024 |
| nsh> ls /dev |
| /dev: |
| console |
| null |
| ram0 |
| ttyS0 |
| ttyS1 |
| nsh> |
| |
| Once the ramdisk has been created, it may be formatted using |
| the mkfatfs command and mounted using the mount command. |
| |
| Example: |
| ^^^^^^^^ |
| nsh> mkrd 1024 |
| nsh> mkfatfs /dev/ram0 |
| nsh> mount -t vfat /dev/ram0 /tmp |
| nsh> ls /tmp |
| /tmp: |
| nsh> |
| |
| o mount [-t <fstype> [-o <options>] <block-device> <dir-path>] |
| |
| The mount command performs one of two different operations. If no |
| parameters are provided on the command line after the mount command, |
| then the 'mount' command will enumerate all of the current |
| mountpoints on the console. |
| |
| If the mount parameters are provied on the command after the 'mount' |
| command, then the 'mount' command will mount a file system in the |
| NuttX pseudo-file system. 'mount' performs a three way association, |
| binding: |
| |
| File system. The '-t <fstype>' option identifies the type of |
| file system that has been formatted on the <block-device>. As |
| of this writing, vfat is the only supported value for <fstype> |
| |
| Block Device. The <block-device> argument is the full or relative |
| path to a block driver inode in the pseudo file system. By convention, |
| this is a name under the /dev sub-directory. This <block-device> |
| must have been previously formatted with the same file system |
| type as specified by <fstype> |
| |
| Mount Point. The mount point is the location in the pseudo file |
| system where the mounted volume will appear. This mount point |
| can only reside in the NuttX pseudo file system. By convention, this |
| mount point is a subdirectory under /mnt. The mount command will |
| create whatever pseudo directories that may be needed to complete |
| the full path but the full path must not already exist. |
| |
| After the volume has been mounted in the NuttX pseudo file |
| system, it may be access in the same way as other objects in the |
| file system. |
| |
| Examples: |
| ^^^^^^^^^ |
| |
| 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> |
| |
| nsh> mount |
| /etc type romfs |
| /tmp type vfat |
| /mnt/fs type vfat |
| |
| o mv <old-path> <new-path> |
| |
| Rename the file object at <old-path> to <new-path>. Both paths must |
| reside in the same mounted file system. |
| |
| o nfsmount <server-address> <mount-point> <remote-path> |
| |
| Mount the remote NFS server directory <remote-path> at <mount-point> on the target machine. |
| <server-address> is the IP address of the remote server. |
| |
| o nslookup <host-name> |
| |
| Lookup and print the IP address associated with <host-name> |
| |
| o ping [-c <count>] [-i <interval>] <ip-address> |
| ping6 [-c <count>] [-i <interval>] <ip-address> |
| |
| Test the network communication with a remote peer. Example, |
| |
| nsh> 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> |
| |
| ping6 differs from ping in that it uses IPv6 addressing. |
| |
| o poweroff |
| |
| Shutdown and power off the system. This command depends on hardware |
| support to power down or reset the system. |
| |
| NOTE: Supporting both the poweroff and shutdown commands is redundant. |
| |
| o ps |
| |
| Show the currently active threads and tasks. For example, |
| |
| nsh> ps |
| PID PRI POLICY TYPE NPX STATE EVENT SIGMASK COMMAND |
| 0 0 FIFO Kthread --- Ready 00000000 Idle Task |
| 1 128 RR Task --- Running 00000000 init |
| 2 128 FIFO Task --- Waiting Semaphore 00000000 nsh_telnetmain() |
| 3 100 RR pthread --- Waiting Semaphore 00000000 <pthread>(21) |
| nsh> |
| |
| NOTE: This commands depends upon having the rpocfs file system configured |
| into the system. The procfs file system must also have been mounted |
| with a command like: |
| |
| nsh> mount -t procfs /proc |
| |
| o put [-b|-n] [-f <remote-path>] -h <ip-address> <local-path> |
| |
| Copy the file at <local-address> to the host whose IP address is |
| identified by <ip-address>. Other options: |
| |
| -f <remote-path> |
| The file will be saved with the same name on the host unless |
| unless <local-path> is provided. |
| -b|-n |
| Selects either binary ("octet") or test ("netascii") transfer |
| mode. Default: text. |
| |
| o pwd |
| |
| Show the current working directory. |
| |
| nsh> cd /dev |
| nsh> pwd |
| /dev |
| nsh> |
| |
| Same as 'echo $PWD' |
| |
| nsh> echo $PWD |
| /dev |
| nsh> |
| |
| o reboot |
| |
| Reset and reboot the system immediately. This command depends on hardware |
| support to reset the system. |
| |
| NOTE: Supporting both the reboot and shutdown commands is redundant. |
| |
| o rm <file-path> |
| |
| Remove the specified <file-path> name from the mounted file system. |
| Recall that NuttX uses a pseudo file system for its root file system. |
| The rm command can only be used to remove (unlink) files in volumes |
| set up with the mount command; it cannot be used to remove names from |
| the pseudo file system. |
| |
| Example: |
| ^^^^^^^^ |
| |
| 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> |
| |
| o rmdir <dir-path> |
| |
| Remove the specified <dir-path> directory from the mounted file system. |
| Recall that NuttX uses a pseudo file system for its root file system. The |
| rmdir command can only be used to remove directories from volumes set up |
| with the mount command; it cannot be used to remove directories from the |
| pseudo file system. |
| |
| Example: |
| ^^^^^^^^ |
| |
| 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 |
| ls -l /mnt/fs |
| /mnt/fs: |
| drw-rw-rw- 0 TESTDIR/ |
| nsh> |
| |
| o set <name> <value> |
| |
| Set the environment variable <name> to the sting <value>. |
| For example, |
| |
| nsh> echo $foobar |
| |
| nsh> set foobar foovalue |
| nsh> echo $foobar |
| foovalue |
| nsh> |
| |
| o sh <script-path> |
| |
| Execute the sequence of NSH commands in the file referred |
| to by <script-path>. |
| |
| o shutdown [--reboot] |
| |
| Shutdown and power off the system or, optionally, reset and reboot the |
| system immediately. This command depends on hardware support to power |
| down or reset the system; one, both, or neither behavior may be |
| supported. |
| |
| NOTE: The shutdown command duplicates the behavior of the poweroff and |
| reboot commands. |
| |
| o sleep <sec> |
| |
| Pause execution (sleep) of <sec> seconds. |
| |
| o unset <name> |
| |
| Remove the value associated with the environment variable |
| <name>. Example: |
| |
| nsh> echo $foobar |
| foovalue |
| nsh> unset foobar |
| nsh> echo $foobar |
| |
| nsh> |
| |
| o urldecode [-f] <string or filepath> |
| |
| o urlencode [-f] <string or filepath> |
| |
| o uname [-a | -imnoprsv] |
| |
| Print certain system information. With no options, the output is the same as -s. |
| |
| -a Print all information, in the following order, except omit -p and -i if unknown: |
| |
| -s, -o, Print the operating system name (NuttX) |
| |
| -n Print the network node hostname (only availabel if CONFIG_NET=y) |
| |
| -r Print the kernel release |
| |
| -v Print the kernel version |
| |
| -m Print the machine hardware name |
| |
| -i Print the machine platform name |
| |
| -p Print "unknown" |
| |
| o usleep <usec> |
| |
| Pause execution (sleep) of <usec> microseconds. |
| |
| o wget [-o <local-path>] <url> |
| |
| Use HTTP to copy the file at <url> to the current directory. |
| Options: |
| |
| -o <local-path> |
| The file will be saved relative to the current working directory |
| and with the same name as on the HTTP server unless <local-path> |
| is provided. |
| |
| o xd <hex-address> <byte-count> |
| |
| Dump <byte-count> bytes of data from address <hex-address> |
| |
| Example: |
| ^^^^^^^^ |
| |
| 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> |
| |
| NSH Configuration Settings |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| The availability of the above commands depends upon features that |
| may or may not be enabled in the NuttX configuration file. The |
| following table indicates the dependency of each command on NuttX |
| configuration settings. General configuration settings are discussed |
| in the NuttX Porting Guide. Configuration settings specific to NSH |
| as discussed at the bottom of this README file. |
| |
| Command Dependencies on Configuration Settings |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Command Depends on Configuration |
| ---------- -------------------------- |
| [ !CONFIG_NSH_DISABLESCRIPT |
| addroute CONFIG_NET && CONFIG_NET_ROUTE |
| base64dec CONFIG_NETUTILS_CODECS && CONFIG_CODECS_BASE64 |
| base64enc CONFIG_NETUTILS_CODECS && CONFIG_CODECS_BASE64 |
| basename -- |
| break !CONFIG_NSH_DISABLESCRIPT && !CONFIG_NSH_DISABLE_LOOPS |
| cat CONFIG_NFILE_DESCRIPTORS > 0 |
| cd !CONFIG_DISABLE_ENVIRON && CONFIG_NFILE_DESCRIPTORS > 0 |
| cp CONFIG_NFILE_DESCRIPTORS > 0 |
| dd CONFIG_NFILE_DESCRIPTORS > 0 |
| delroute CONFIG_NET && CONFIG_NET_ROUTE |
| df !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_FS_READABLE (see note 3) |
| dirname -- |
| echo -- |
| exec -- |
| exit -- |
| free -- |
| get CONFIG_NET && CONFIG_NET_UDP && CONFIG_NFILE_DESCRIPTORS > 0 && MTU >= 558 (see note 1) |
| help -- |
| hexdump CONFIG_NFILE_DESCRIPTORS > 0 |
| ifconfig CONFIG_NET && CONFIG_FS_PROCFS && !CONFIG_FS_PROCFS_EXCLUDE_NET |
| ifdown CONFIG_NET && CONFIG_FS_PROCFS && !CONFIG_FS_PROCFS_EXCLUDE_NET |
| ifup CONFIG_NET && CONFIG_FS_PROCFS && !CONFIG_FS_PROCFS_EXCLUDE_NET |
| kill !CONFIG_DISABLE_SIGNALS |
| losetup !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_DEV_LOOP |
| ls CONFIG_NFILE_DESCRIPTORS > 0 |
| md5 CONFIG_NETUTILS_CODECS && CONFIG_CODECS_HASH_MD5 |
| mb,mh,mw --- |
| mkdir (((!CONFIG_DISABLE_MOUNTPOINT && CONFIG_FS_WRITABLE) || !CONFIG_DISABLE_PSEUDOFS_OPERATIONS) && CONFIG_NFILE_DESCRIPTORS > 0) |
| mkfatfs !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_FS_FAT |
| mkfifo CONFIG_NFILE_DESCRIPTORS > 0 |
| mkrd !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_FS_WRITABLE (see note 4) |
| mount !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_FS_READABLE (see note 3) |
| mv (((!CONFIG_DISABLE_MOUNTPOINT && CONFIG_FS_WRITABLE) || !CONFIG_DISABLE_PSEUDOFS_OPERATIONS) && CONFIG_NFILE_DESCRIPTORS > 0) (see note 4) |
| nfsmount !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NET && CONFIG_NFS |
| nslookup CONFIG_LIBC_NETDB && CONFIG_NETDB_DNSCLIENT |
| ping CONFIG_NET && CONFIG_NET_ICMP && CONFIG_NET_ICMP_PING && !CONFIG_DISABLE_SIGNALS |
| ping6 CONFIG_NET && CONFIG_NET_ICMPv6 && CONFIG_NET_ICMPv6_PING && !CONFIG_DISABLE_SIGNALS |
| poweroff CONFIG_BOARDCTL_POWEROFF |
| ps CONFIG_FS_PROCFS && !CONFIG_FS_PROCFS_EXCLUDE_PROC |
| put CONFIG_NET && CONFIG_NET_UDP && CONFIG_NFILE_DESCRIPTORS > 0 && MTU >= 558 (see note 1,2) |
| pwd !CONFIG_DISABLE_ENVIRON && CONFIG_NFILE_DESCRIPTORS > 0 |
| reboot CONFIG_BOARDCTL_RESET |
| rm (((!CONFIG_DISABLE_MOUNTPOINT && CONFIG_FS_WRITABLE) || !CONFIG_DISABLE_PSEUDOFS_OPERATIONS) && CONFIG_NFILE_DESCRIPTORS > 0) |
| rmdir (((!CONFIG_DISABLE_MOUNTPOINT && CONFIG_FS_WRITABLE) || !CONFIG_DISABLE_PSEUDOFS_OPERATIONS) && CONFIG_NFILE_DESCRIPTORS > 0) |
| set !CONFIG_DISABLE_ENVIRON |
| sh CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_NFILE_STREAMS > 0 && !CONFIG_NSH_DISABLESCRIPT |
| shutdown CONFIG_BOARDCTL_POWEROFF || CONFIG_BOARDCTL_RESET |
| sleep !CONFIG_DISABLE_SIGNALS |
| test !CONFIG_NSH_DISABLESCRIPT |
| umount !CONFIG_DISABLE_MOUNTPOINT && CONFIG_NFILE_DESCRIPTORS > 0 && CONFIG_FS_READABLE |
| uname !CONFIG_NSH_DISABLE_UNAME |
| unset !CONFIG_DISABLE_ENVIRON |
| urldecode CONFIG_NETUTILS_CODECS && CONFIG_CODECS_URLCODE |
| urlencode CONFIG_NETUTILS_CODECS && CONFIG_CODECS_URLCODE |
| usleep !CONFIG_DISABLE_SIGNALS |
| get CONFIG_NET && CONFIG_NET_TCP && CONFIG_NFILE_DESCRIPTORS > 0 |
| xd --- |
| |
| * NOTES: |
| 1. Because of hardware padding, the actual MTU required for put and get |
| operations size may be larger. |
| 2. Special TFTP server start-up options will probably be required to permit |
| creation of file for the correct operation of the put command. |
| 3. CONFIG_FS_READABLE is not a user configuration but is set automatically |
| if any readable file system is selected. At present, this is either CONFIG_FS_FAT |
| and CONFIG_FS_ROMFS. |
| 4. CONFIG_FS_WRITABLE is not a user configuration but is set automatically |
| if any writeable file system is selected. At present, this is only CONFIG_FS_FAT. |
| |
| In addition, each NSH command can be individually disabled via one of the following |
| settings. All of these settings make the configuration of NSH potentially complex but |
| also allow it to squeeze into very small memory footprints. |
| |
| CONFIG_NSH_DISABLE_ADDROUTE, CONFIG_NSH_DISABLE_BASE64DEC, CONFIG_NSH_DISABLE_BASE64ENC, |
| CONFIG_NSH_DISABLE_BASENAME, CONFIG_NSH_DISABLE_CAT, CONFIG_NSH_DISABLE_CD, |
| CONFIG_NSH_DISABLE_CP, CONFIG_NSH_DISABLE_DD, CONFIG_NSH_DISABLE_DELROUTE, |
| CONFIG_NSH_DISABLE_DF, CONFIG_NSH_DISABLE_DIRNAME, CONFIG_NSH_DISABLE_ECHO, |
| CONFIG_NSH_DISABLE_EXEC, CONFIG_NSH_DISABLE_EXIT, CONFIG_NSH_DISABLE_FREE, |
| CONFIG_NSH_DISABLE_GET, CONFIG_NSH_DISABLE_HELP, CONFIG_NSH_DISABLE_HEXDUMP, |
| CONFIG_NSH_DISABLE_IFCONFIG, CONFIG_NSH_DISABLE_IFUPDOWN, CONFIG_NSH_DISABLE_KILL, |
| CONFIG_NSH_DISABLE_LOSETUP, CONFIG_NSH_DISABLE_LS, CONFIG_NSH_DISABLE_MD5, |
| CONFIG_NSH_DISABLE_MB, CONFIG_NSH_DISABLE_MKDIR, CONFIG_NSH_DISABLE_MKFATFS, |
| CONFIG_NSH_DISABLE_MKFIFO, CONFIG_NSH_DISABLE_MKRD, CONFIG_NSH_DISABLE_MH, |
| CONFIG_NSH_DISABLE_MOUNT, CONFIG_NSH_DISABLE_MW, CONFIG_NSH_DISABLE_MV, |
| CONFIG_NSH_DISABLE_NFSMOUNT, CONFIG_NSH_DISABLE_NSLOOKUP, CONFIG_NSH_DISABLE_POWEROFF, |
| CONFIG_NSH_DISABLE_PS, CONFIG_NSH_DISABLE_PING, CONFIG_NSH_DISABLE_PING6, |
| CONFIG_NSH_DISABLE_PUT, CONFIG_NSH_DISABLE_PWD, CONFIG_NSH_DISABLE_REBOOT, |
| CONFIG_NSH_DISABLE_RM, CONFIG_NSH_DISABLE_RMDIR, CONFIG_NSH_DISABLE_SET, |
| CONFIG_NSH_DISABLE_SH, CONFIG_NSH_DISABLE_SHUTDOWN, CONFIG_NSH_DISABLE_SLEEP, |
| CONFIG_NSH_DISABLE_TEST, CONFIG_NSH_DISABLE_UMOUNT, CONFIG_NSH_DISABLE_UNSET, |
| CONFIG_NSH_DISABLE_URLDECODE, CONFIG_NSH_DISABLE_URLENCODE, CONFIG_NSH_DISABLE_USLEEP, |
| CONFIG_NSH_DISABLE_WGET, CONFIG_NSH_DISABLE_XD |
| |
| Verbose help output can be suppressed by defining CONFIG_NSH_HELP_TERSE. In that |
| case, the help command is still available but will be slightly smaller. |
| |
| NSH-Specific Configuration Settings |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| The behavior of NSH can be modified with the following settings in |
| the configs/<board-name>/defconfig file: |
| |
| * CONFIG_NSH_READLINE |
| Selects the minimal implementation of readline(). This minimal |
| implementation provides on backspace for command line editing. |
| |
| * CONFIG_NSH_CLE |
| Selects the more extensive, EMACS-like command line editor. |
| Select this option only if (1) you don't mind a modest increase |
| in the FLASH footprint, and (2) you work with a terminal that |
| support VT100 editing commands. |
| |
| Selecting this option will add probably 1.5-2KB to the FLASH |
| footprint. |
| |
| * CONFIG_NSH_BUILTIN_APPS |
| Support external registered, "builtin" applications that can be |
| executed from the NSH command line (see apps/README.txt for |
| more information). |
| |
| * CONFIG_NSH_FILEIOSIZE |
| Size of a static I/O buffer used for file access (ignored if |
| there is no file system). Default is 1024. |
| |
| * CONFIG_NSH_STRERROR |
| strerror(errno) makes more readable output but strerror() is |
| very large and will not be used unless this setting is 'y'. |
| This setting depends upon the strerror() having been enabled |
| with CONFIG_LIBC_STRERROR. |
| |
| * CONFIG_NSH_LINELEN |
| The maximum length of one command line and of one output line. |
| Default: 80 |
| |
| * CONFIG_NSH_DISABLE_SEMICOLON |
| By default, you can enter multiple NSH commands on a line with |
| each command separated by a semicolon. You can disable this |
| feature to save a little memory on FLASH challenged platforms. |
| Default: n |
| |
| * CONFIG_NSH_CMDPARMS |
| If selected, then the output from commands, from file applications, and |
| from NSH built-in commands can be used as arguments to other |
| commands. The entity to be executed is identified by enclosing the |
| command line in back quotes. For example, |
| |
| set FOO `myprogram $BAR` |
| |
| Will execute the program named myprogram passing it the value of the |
| environment variable BAR. The value of the environment variable FOO |
| is then set output of myprogram on stdout. Because this feature commits |
| significant resources, it is disabled by default. |
| |
| * CONFIG_NSH_TMPDIR |
| If CONFIG_NSH_CMDPARMS is selected, then function output will be retained |
| in a temporary file. In that case, this string must be provided to |
| specify the full path to a directory where temporary files can be |
| created. This would be a good application of RAM disk: To provide |
| temporary storage for function output. |
| |
| * CONFIG_NSH_MAXARGUMENTS |
| The maximum number of NSH command arguments. Default: 6 |
| |
| * CONFIG_NSH_ARGCAT |
| Support concatenation of strings with environment variables or command |
| output. For example: |
| |
| set FOO XYZ |
| set BAR 123 |
| set FOOBAR ABC_${FOO}_${BAR} |
| |
| would set the environment variable FOO to XYZ, BAR to 123 and FOOBAR |
| to ABC_XYZ_123. If NSH_ARGCAT is not selected, then a slightly small |
| FLASH footprint results but then also only simple environment |
| variables like $FOO can be used on the command line. |
| |
| * CONFIG_NSH_NESTDEPTH |
| The maximum number of nested if-then[-else]-fi sequences that |
| are permissable. Default: 3 |
| |
| * CONFIG_NSH_DISABLESCRIPT |
| This can be set to 'y' to suppress support for scripting. This |
| setting disables the 'sh', 'test', and '[' commands and the |
| if-then[-else]-fi construct. This would only be set on systems |
| where a minimal footprint is a necessity and scripting is not. |
| |
| * CONFIG_NSH_DISABLE_ITEF |
| |
| If scripting is enabled, then then this option can be selected to |
| suppress support for if-then-else-fi sequences in scripts. This would |
| only be set on systems where some minimal scripting is required but |
| if-then-else-fi is not. |
| |
| * CONFIG_NSH_DISABLE_LOOPS |
| |
| If scripting is enabled, then then this option can be selected |
| suppress support for while-do-done and until-do-done sequences in |
| scripts. This would only be set on systems where some minimal |
| scripting is required but looping is not. |
| |
| * CONFIG_NSH_DISABLEBG |
| This can be set to 'y' to suppress support for background |
| commands. This setting disables the 'nice' command prefix and |
| the '&' command suffix. This would only be set on systems |
| where a minimal footprint is a necessity and background command |
| execution is not. |
| |
| * CONFIG_NSH_MMCSDMINOR |
| 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 /dev/mmcsdN where N is the minor number. |
| Default is zero. |
| |
| * CONFIG_NSH_ROMFSETC |
| Mount a ROMFS file system at /etc and provide a startup script |
| at /etc/init.d/rcS. The default startup script will mount |
| a FAT FS RAMDISK at /tmp but the logic is easily extensible. |
| |
| * CONFIG_NSH_CONSOLE |
| If CONFIG_NSH_CONSOLE is set to 'y', then a serial |
| console front-end is selected. |
| |
| Normally, the serial console device is a UART and RS-232 |
| interface. However, if CONFIG_USBDEV is defined, then a USB |
| serial device may, instead, be used if the one of |
| the following are defined: |
| |
| CONFIG_PL2303 and CONFIG_PL2303_CONSOLE - Sets up the |
| Prolifics PL2303 emulation as a console device |
| at /dev/console. |
| |
| CONFIG_CDCACM and CONFIG_CDCACM_CONSOLE - Sets up the |
| CDC/ACM serial device as a console device at |
| dev/console. |
| |
| CONFIG_NSH_USBCONSOLE |
| If defined, then the an arbitrary USB device may be used |
| to as the NSH console. In this case, CONFIG_NSH_USBCONDEV |
| must be defined to indicate which USB device to use as |
| the console. |
| |
| CONFIG_NSH_USBCONDEV |
| If CONFIG_NSH_USBCONSOLE is set to 'y', then CONFIG_NSH_USBCONDEV |
| must also be set to select the USB device used to support |
| the NSH console. This should be set to the quoted name of a |
| read-/write-able USB driver. Default: "/dev/ttyACM0". |
| |
| If there are more than one USB devices, then a USB device |
| minor number may also need to be provided: |
| |
| CONFIG_NSH_USBDEV_MINOR |
| The minor device number of the USB device. Default: 0 |
| |
| CONFIG_NSH_USBKBD |
| Normally NSH uses the same device for stdin, stdout, and stderr. By |
| default, that device is /dev/console. If this option is selected, |
| then NSH will use a USB HID keyboard for stdin. In this case, the |
| keyboard is connected directly to the target (via a USB host |
| interface) and the data from the keyboard will drive NSH. NSH |
| output (stdout and stderr) will still go to /dev/console. |
| |
| CONFIG_NSH_USBKBD_DEVNAME |
| If NSH_USBKBD is set to 'y', then NSH_USBKBD_DEVNAME must also be |
| set to select the USB keyboard device used to support the NSH |
| console input. This should be set to the quoted name of a read- |
| able keyboard driver. Default: "/dev/kbda". |
| |
| CONFIG_NSH_USBDEV_TRACE |
| If USB tracing is enabled (CONFIG_USBDEV_TRACE), then NSH can |
| be configured to show the buffered USB trace data afer each |
| NSH command: |
| |
| If CONFIG_NSH_USBDEV_TRACE is selected, then USB trace data |
| can be filtered as follows. Default: Only USB errors are traced. |
| |
| CONFIG_NSH_USBDEV_TRACEINIT |
| Show initialization events |
| CONFIG_NSH_USBDEV_TRACECLASS |
| Show class driver events |
| CONFIG_NSH_USBDEV_TRACETRANSFERS |
| Show data transfer events |
| CONFIG_NSH_USBDEV_TRACECONTROLLER |
| Show controller events |
| CONFIG_NSH_USBDEV_TRACEINTERRUPTS |
| Show interrupt-related events. |
| |
| * CONFIG_NSH_ALTCONDEV and CONFIG_NSH_CONDEV |
| If CONFIG_NSH_CONSOLE is set to 'y', then CONFIG_NSH_ALTCONDEV may also |
| be selected to enable use of an alternate character device to support |
| the NSH console. If CONFIG_NSH_ALTCONDEV is selected, then |
| CONFIG_NSH_CONDEV holds the quoted name of a readable/write-able |
| character driver such as: CONFIG_NSH_CONDEV="/dev/ttyS1". This is |
| useful, for example, to separate the NSH command line from the system |
| console when the system console is used to provide debug output. |
| Default: stdin and stdout (probably "/dev/console") |
| |
| NOTE 1: When any other device other than /dev/console is used for a |
| user interface, (1) linefeeds (\n) will not be expanded to carriage |
| return / linefeeds (\r\n). You will need to configure your terminal |
| program to account for this. And (2) input is not automatically |
| echoed so you will have to turn local echo on. |
| |
| NOTE 2: This option forces the console of all sessions to use |
| NSH_CONDEV. Hence, this option only makes sense for a system that |
| supports only a single session. This option is, in particular, |
| incompatible with Telnet sessions because each Telnet session must |
| use a different console device. |
| |
| * CONFIG_NSH_TELNET |
| If CONFIG_NSH_TELNET is set to 'y', 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. |
| |
| * CONFIG_NSH_ARCHINIT |
| Set if your board provides architecture specific initialization |
| via the board-interface function boardctl(). This function will |
| be called early in NSH initialization to allow board logic to |
| do such things as configure MMC/SD slots. |
| |
| If Telnet is selected for the NSH console, then we must configure |
| the resources used by the Telnet daemon and by the Telnet clients. |
| |
| * CONFIG_NSH_TELNETD_PORT - The telnet daemon will listen on this |
| TCP port number for connections. Default: 23 |
| |
| * CONFIG_NSH_TELNETD_DAEMONPRIO - Priority of the Telnet daemon. |
| Default: SCHED_PRIORITY_DEFAULT |
| |
| * CONFIG_NSH_TELNETD_DAEMONSTACKSIZE - Stack size allocated for the |
| Telnet daemon. Default: 2048 |
| |
| * CONFIG_NSH_TELNETD_CLIENTPRIO- Priority of the Telnet client. |
| Default: SCHED_PRIORITY_DEFAULT |
| |
| * CONFIG_NSH_TELNETD_CLIENTSTACKSIZE - Stack size allocated for the |
| Telnet client. Default: 2048 |
| |
| One or both of CONFIG_NSH_CONSOLE and CONFIG_NSH_TELNET |
| must be defined. If CONFIG_NSH_TELNET is selected, then there some |
| other configuration settings that apply: |
| |
| * CONFIG_NET=y |
| Of course, networking must be enabled |
| |
| * CONFIG_NSOCKET_DESCRIPTORS |
| And, of course, you must allocate some socket descriptors. |
| |
| * CONFIG_NET_TCP=y |
| TCP/IP support is required for telnet (as well as various other TCP-related |
| configuration settings). |
| |
| * CONFIG_NSH_IOBUFFER_SIZE |
| Determines the size of the I/O buffer to use for sending/ |
| receiving TELNET commands/reponses |
| |
| * CONFIG_NSH_DHCPC |
| Obtain the IP address via DHCP. |
| |
| * CONFIG_NSH_IPADDR |
| If CONFIG_NSH_DHCPC is NOT set, then the static IP |
| address must be provided. |
| |
| * CONFIG_NSH_DRIPADDR |
| Default router IP address |
| |
| * CONFIG_NSH_NETMASK |
| Network mask |
| |
| * CONFIG_NSH_NOMAC |
| Set if your ethernet hardware has no built-in MAC address. |
| If set, a bogus MAC will be assigned. |
| |
| * CONFIG_NSH_MAX_ROUNDTRIP |
| This is the maximum round trip for a response to a ICMP ECHO request. |
| It is in units of deciseconds. The default is 20 (2 seconds). |
| |
| If you use DHCPC, then some special configuration network options are |
| required. These include: |
| |
| * CONFIG_NET=y |
| Of course, networking must be enabled |
| |
| * CONFIG_NSOCKET_DESCRIPTORS |
| And, of course, you must allocate some socket descriptors. |
| |
| * CONFIG_NET_UDP=y |
| UDP support is required for DHCP (as well as various other UDP-related |
| configuration settings) |
| |
| * CONFIG_NET_BROADCAST=y |
| UDP broadcast support is needed. |
| |
| * CONFIG_NET_ETH_MTU=650 (or larger) |
| Per RFC2131 (p. 9), the DHCP client must be prepared to receive DHCP |
| messages of up to 576 bytes (excluding Ethernet, IP, or UDP headers and FCS). |
| NOTE: Note that the actual MTU setting will depend upon the specific |
| link protocol. Here Ethernet is indicated. |
| |
| If CONFIG_NSH_ROMFSETC is selected, then the following additional |
| configuration setting apply: |
| |
| * CONFIG_NSH_ROMFSMOUNTPT |
| The default mountpoint for the ROMFS volume is /etc, but that |
| can be changed with this setting. This must be a absolute path |
| beginning with '/'. |
| |
| * CONFIG_NSH_INITSCRIPT |
| This is the relative path to the startup script within the mountpoint. |
| The default is init.d/rcS. This is a relative path and must not |
| start with '/'. |
| |
| * CONFIG_NSH_ROMFSDEVNO |
| This is the minor number of the ROMFS block device. The default is |
| '0' corresponding to /dev/ram0. |
| |
| * CONFIG_NSH_ROMFSSECTSIZE |
| 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. |
| |
| When the default rcS file used when CONFIG_NSH_ROMFSETC is |
| selected, it will mount a FAT FS under /tmp. The following selections |
| describe that FAT FS. |
| |
| * CONFIG_NSH_FATDEVNO |
| This is the minor number of the FAT FS block device. The default is |
| '1' corresponding to /dev/ram1. |
| |
| * CONFIG_NSH_FATSECTSIZE |
| This is the sector size use with the FAT FS. Default is 512. |
| |
| * CONFIG_NSH_FATNSECTORS |
| This is the number of sectors to use with the FAT FS. Defalt is |
| 1024. The amount of memory used by the FAT FS will be |
| CONFIG_NSH_FATSECTSIZE * CONFIG_NSH_FATNSECTORS |
| bytes. |
| |
| * CONFIG_NSH_FATMOUNTPT |
| This is the location where the FAT FS will be mounted. Default |
| is /tmp. |
| |
| Common Problems |
| ^^^^^^^^^^^^^^^ |
| |
| Problem: |
| Using NSH over serial, the "nsh>" prompt repeats over and over again |
| with no serial input. |
| Usual Cause: |
| NSH over serial needs to use the interrupt driven serial driver |
| (drivers/serial/serial.c) not the polled serial driver (drivers/serial/lowconsole.c). |
| Make sure that the polled console is disabled in the OS configuration |
| file, .config. That file should have CONFIG_DEV_LOWCONSOLE=n for |
| NSH over serial. |
| |
| Problem: |
| The function 'readline' is undefined. |
| Usual Cause: |
| The following is missing from your defconfig file: |
| |
| CONFIG_SYSTEM_READLINE=y |