From b81b86e1f8c8a4aa0e3d85df8148152268f74260 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 1 Jun 2013 17:25:16 -0600 Subject: Updates to README files --- apps/README.txt | 13 +- apps/examples/README.txt | 284 ++++++------- apps/examples/touchscreen/Makefile | 2 +- apps/interpreters/README.txt | 13 +- apps/interpreters/ficl/README.txt | 15 +- apps/netutils/README.txt | 20 +- apps/nshlib/README.txt | 27 +- apps/system/i2c/README.txt | 797 +++++++++++++++++++------------------ 8 files changed, 599 insertions(+), 572 deletions(-) (limited to 'apps') diff --git a/apps/README.txt b/apps/README.txt index 55accfcf6..4451ef03f 100644 --- a/apps/README.txt +++ b/apps/README.txt @@ -33,7 +33,7 @@ NuttX directory. Like: `- apps If all of the above conditions are TRUE, then NuttX will be able to -find the application directory. If your application directory has a +find the application directory. If your application directory has a different name or is location at a different position, then you will have to inform the NuttX build system of that location. There are several ways to do that: @@ -61,7 +61,7 @@ collected during the make context build phase. To execute an application function: - exec_builtin() is defined in the nuttx/include/apps/builtin.h + exec_builtin() is defined in the nuttx/include/apps/builtin.h NuttShell (NSH) Built-In Commands --------------------------------- @@ -98,7 +98,7 @@ Application Configuration File The old-style NuttX configuration uses a special configuration file is used to configure which applications are to be included in the build. The source for this file is configs///appconfig. -The existence of the appconfig file in the board configuration directory\ +The existence of the appconfig file in the board configuration directory is sufficient to enable building of applications. The appconfig file is copied into the apps/ directory as .config when @@ -250,12 +250,13 @@ A: Here are four: a) Copy 'MyBoard' directory to configs/MyBoard. b) Add a symbolic link to MyApplication at apps/external c) Configure NuttX (usually by: - + tools/configure.sh MyBoard/MyConfiguration or simply by copying defconfig->nutt/.config, - setenv.sh->nuttx/setenv.sh, Make.defs->nuttx/Make.defs, - appconfig->apps/.config + setenv.sh->nuttx/setenv.sh, and Make.defs->nuttx/Make.defs + (and appconfig->apps/.config for the old-style, deprecated + configuration files). Using the 'external' link makes it especially easy to add a 'built-in' application an existing configuration. diff --git a/apps/examples/README.txt b/apps/examples/README.txt index 2e1454b3f..7e3b0d0f0 100644 --- a/apps/examples/README.txt +++ b/apps/examples/README.txt @@ -1,16 +1,14 @@ examples ^^^^^^^^ - appconfig and CONFIG_APPS - + Selecting examples: + The examples directory contains several sample applications that can be linked with NuttX. The specific example is selected in the - configs//appconfig file via the CONFIGURED_APPS setting. - This setting provides the path to the directory containing the - application Makefile (this path is a relative to the apps/ top- - level directory). For example, + configs//defconfig file via the CONFIG_EXAMPLES_xyz + setting where xyz is the name of the example. For example, - CONFIGURE_APPS += examples/ostest + CONFIG_EXAMPLES_OSTEST=y Selects the examples/ostest example. @@ -30,6 +28,25 @@ examples the specific example. See the following for examples that support this option). + NOTE: The use of CONFIG_EXAMPLES_XYZ_BUILTIN is being phased + out. For many example, the definition of CONFIG_NSH_BUILTIN_APPS + is sufficient built the example as an NSH built-in application. + + Older configurations. + + Older, deprecated configuration files might use a variable called + CONFIGURED_APPS to selected examples. Those CONFIGURED_APPS settings + where kept in files called appconfig. For example, in those older + configuration files, the OS test example would have been selected with + an entry like the following in the appconfig file: + + CONFIGURED_APPS += examples/ostest + + appconfig files are not longer used in the current NuttX configuration + system. And syntax like the above is being phased out (but is still + supported by the make system butonly until the last configuration is + converted to the newer style configuration files). + examples/adc ^^^^^^^^^^^^ @@ -44,7 +61,7 @@ examples/adc Default: Built as a standalone problem Specific configuration options for this example include: - + CONFIG_EXAMPLES_ADC_DEVPATH - The default path to the ADC device. Default: /dev/adc0 CONFIG_EXAMPLES_ADC_NSAMPLES - If CONFIG_NSH_BUILTIN_APPS is defined, then the number of samples is provided on the command line @@ -69,7 +86,7 @@ examples/buttons CONFIG_EXAMPLES_IRQBUTTONS_MAX - Highest interrupting button number (MAX=7) Name strings for buttons: - + CONFIG_EXAMPLES_BUTTONS_NAME0, CONFIG_EXAMPLES_BUTTONS_NAME1, CONFIG_EXAMPLES_BUTTONS_NAME2, CONFIG_EXAMPLES_BUTTONS_NAME3, CONFIG_EXAMPLES_BUTTONS_NAME4, CONFIG_EXAMPLES_BUTTONS_NAME5, @@ -99,9 +116,9 @@ examples/can mode for testing. The STM32 CAN driver does support loopback mode. CONFIG_NSH_BUILTIN_APPS - Build the CAN test as an NSH built-in function. Default: Built as a standalone problem - + Specific configuration options for this example include: - + CONFIG_EXAMPLES_CAN_DEVPATH - The path to the CAN device. Default: /dev/can0 CONFIG_EXAMPLES_CAN_NMSGS - If CONFIG_NSH_BUILTIN_APPS is defined, then the number of loops is provided on the command line @@ -223,7 +240,7 @@ examples/composite emulation) or "/dev/ttyACM0" (for the CDC/ACM serial device). CONFIG_EXAMPLES_COMPOSITE_BUFSIZE - The size of the serial I/O buffer in bytes. Default 256 bytes. - + If CONFIG_USBDEV_TRACE is enabled (or CONFIG_DEBUG and CONFIG_DEBUG_USB), then the example code will also manage the USB trace output. The amount of trace output can be controlled using: @@ -266,7 +283,7 @@ examples/dhcpd ^^^^^^^^^^^^^^ This examples builds a tiny DCHP server for the target system. - + NOTE: For test purposes, this example can be built as a host-based DHCPD server. This can be built as follows: @@ -274,7 +291,7 @@ examples/dhcpd make -f Makefile.host TOPDIR= NuttX configuration settings: - + CONFIG_NET=y - Of course CONFIG_NSOCKET_DESCRIPTORS - And, of course, you must allocate some socket descriptors. @@ -282,6 +299,7 @@ examples/dhcpd (as well as various other UDP-related configuration settings) CONFIG_NET_BROADCAST=y - UDP broadcast support is needed. + CONFIG_NETUTILS_UIPLIB=y - The UIP library is needed CONFIG_EXAMPLES_DHCPD_NOMAC - (May be defined to use software assigned MAC) CONFIG_EXAMPLES_DHCPD_IPADDR - Target IP address @@ -292,12 +310,6 @@ examples/dhcpd and used in netutils/dhcpd/dhcpd.c. These settings are required to described the behavior of the daemon. - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: - - CONFIGURED_APPS += uiplib - examples/discover ^^^^^^^^^^^^^^^^^ @@ -354,7 +366,7 @@ examples/elf LDELFFLAGS = -r -e main - If you use GCC to link, you make also need to include '-nostdlib' or + If you use GCC to link, you make also need to include '-nostdlib' or '-nostartfiles' and '-nodefaultlibs'. 3. This example also requires genromfs. genromfs can be build as part of the @@ -421,9 +433,9 @@ examples/ftpc optional port number. NOTE: By default, FTPC uses readline to get data from stdin. So your - appconfig file must have the following build path: + defconfig file must have the following build path: - CONFIGURED_APPS += system/readline + CONFIG_SYSTEM_READLINE=y NOTE: If you use the ftpc task over a telnet NSH connection, then you should set the following configuration item: @@ -437,7 +449,7 @@ examples/ftpc You may also want to define the following in your configuration file. Otherwise, you will have not feeback about what is going on: - + CONFIG_DEBUG=y CONFIG_DEBUG_VERBOSE=y CONFIG_DEBUG_FTPC=y @@ -449,6 +461,7 @@ examples/ftpd configurations specific to the FTPD example (the FTPD daemon itself may require other configuration options as well). + CONFIG_EXAMPLES_FTPD - Enable the FTPD example. CONFIG_EXAMPLES_FTPD_PRIO - Priority of the FTP daemon. Default: SCHED_PRIORITY_DEFAULT CONFIG_EXAMPLES_FTPD_STACKSIZE - Stack size allocated for the @@ -495,11 +508,11 @@ examples/ftpd CONFIG_FTPD_WORKERSTACKSIZE - The stacksize to allocate for each FTP daemon worker thread. Default: 2048 bytes. - The appconfig file (apps/.config) should include: + The following netutils libraries should be enabled in your defconfig + file: - CONFIGURED_APPS += examples/ftpd - CONFIGURED_APPS += netutils/uiplib - CONFIGURED_APPS += netutils/ftpd + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_TELNED=y examples/hello ^^^^^^^^^^^^^^ @@ -524,7 +537,7 @@ examples/helloxx CONFIG_HAVE_CXX -- Enable C++ Support Optional NuttX configuration settings: - + CONFIG_HAVE_CXXINITIALIZE -- Enable support for static constructors (may not be available on all platforms). @@ -589,12 +602,8 @@ examples/igmp Network mask * CONFIG_EXAMPLES_IGMP_GRPADDR Multicast group address - - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: - - CONFIGURED_APPS += uiplib + * CONFIG_EXAMPLES_UIPLIB + The UIP library is needed examples/json ^^^^^^^^^^^^^ @@ -635,7 +644,7 @@ examples/lcdrw LCD X resolution. Default: 240 * CONFIG_EXAMPLES_LDCRW_YRES LCD Y resolution. Default: 320 - + NOTE: This test exercises internal lcd driver interfaces. As such, it relies on internal OS interfaces that are not normally available to a user-space program. As a result, this example cannot be used if a @@ -721,14 +730,23 @@ examples/nettest This is a simple network test for verifying client- and server- functionality in a TCP/IP connection. - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: - - CONFIGURED_APPS += uiplib + CONFIG_EXAMPLES_NETTEST=y - Enables the nettest example + CONFIG_EXAMPLES_UIPLIB=y - The UIP livrary in needed. See also examples/tcpecho +examples/nrf24l01_term +^^^^^^^^^^^^^^^^^^^^^^ + + These is a simple test of NRF24L01-based wireless connectivity. Enabled\ + with: + + CONFIG_EXAMPLES_NRF24L01TERM + + Options: + + CONFIG_NSH_BUILTIN_APPS - Built as an NSH built-in applications. + examples/nsh ^^^^^^^^^^^^ @@ -737,37 +755,37 @@ examples/nsh application. NSH is described in its own README located at apps/nshlib/README.txt - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: + Applications using this example will need to provide an defconfig + file in the configuration directory with instruction to build + applicationslike: - CONFIGURED_APPS += nshlib + CONFIG_NSH_LIBRARY=y NOTE: If the NSH serial console is used, then following is also required to build the readline() library: - CONFIGURED_APPS += system/readline + CONFIG_SYSTEM_READLINE=y And if networking is included: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += dhcpc - CONFIGURED_APPS += resolv - CONFIGURED_APPS += tftp - CONFIGURED_APPS += webclient + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_DHCPC=y + CONFIG_NETUTILS_RESOLV=y + CONFIG_NETUTILS_TFTPC=y + CONFIG_NETUTILS_WEBCLIENT=y - If the Telnet console is enabled, then the appconfig file (apps/.config) - should also include: + If the Telnet console is enabled, then the defconfig file should + also include: - CONFIGURED_APPS += netutils/telnetd + CONFIG_NETUTILS_TELNETD=y Also if the Telnet console is enabled, make sure that you have the following set in the NuttX configuration file or else the performance will be very bad (because there will be only one character per TCP transfer): - - CONFIG_STDIO_BUFFER_SIZE - Some value >= 64 - CONFIG_STDIO_LINEBUFFER=y + + CONFIG_STDIO_BUFFER_SIZE - Some value >= 64 + CONFIG_STDIO_LINEBUFFER=y examples/nx ^^^^^^^^^^^ @@ -777,7 +795,7 @@ examples/nx can be selected: CONFIG_EXAMPLES_NX_BUILTIN -- Build the NX example as a "built-in" - that can be executed from the NSH command line + that can be executed from the NSH command line CONFIG_EXAMPLES_NX_VPLANE -- The plane to select from the frame- buffer driver for use in the test. Default: 0 CONFIG_EXAMPLES_NX_DEVNO - The LCD device to select from the LCD @@ -930,7 +948,7 @@ examplex/nxhello The following configuration options can be selected: CONFIG_EXAMPLES_NXHELLO_BUILTIN -- Build the NXHELLO example as a "built-in" - that can be executed from the NSH command line + that can be executed from the NSH command line CONFIG_EXAMPLES_NXHELLO_VPLANE -- The plane to select from the frame- buffer driver for use in the test. Default: 0 CONFIG_EXAMPLES_NXHELLO_DEVNO - The LCD device to select from the LCD @@ -963,7 +981,7 @@ examples/nximage and 8-bit greyscale for now. CONFIG_EXAMPLES_NXIMAGE_BUILTIN -- Build the NXIMAGE example as a "built-in" - that can be executed from the NSH command line + that can be executed from the NSH command line CONFIG_EXAMPLES_NXIMAGE_VPLANE -- The plane to select from the frame- buffer driver for use in the test. Default: 0 CONFIG_EXAMPLES_NXIMAGE_DEVNO - The LCD device to select from the LCD @@ -1066,11 +1084,11 @@ examples/nxtext garbage on the display or a failure at the point where the display should scroll, it is probably because you have an LCD driver that is write-only. - + The following configuration options can be selected: CONFIG_EXAMPLES_NXTEXT_BUILTIN -- Build the NXTEXT example as a "built-in" - that can be executed from the NSH command line + that can be executed from the NSH command line CONFIG_EXAMPLES_NXTEXT_VPLANE -- The plane to select from the frame- buffer driver for use in the test. Default: 0 CONFIG_EXAMPLES_NXTEXT_DEVNO - The LCD device to select from the LCD @@ -1243,10 +1261,10 @@ examples/poll the host. The host should then receive the echo'ed message. If networking is enabled, applications using this example will need to - provide an appconfig file in the configuration driver with instruction - to build applications like: + provide the following definition in the defconfig file to enable the + UIP library: - CONFIGURED_APPS += uiplib + CONFIG_NETUTILS_UIPLIB=y examples/posix_spawn ^^^^^^^^^^^^^^^^^^^^ @@ -1294,7 +1312,7 @@ examples/posix_spawn LDELFFLAGS = -r -e main - If you use GCC to link, you make also need to include '-nostdlib' or + If you use GCC to link, you make also need to include '-nostdlib' or '-nostartfiles' and '-nodefaultlibs'. 3. This example also requires genromfs. genromfs can be build as part of the @@ -1338,9 +1356,9 @@ examples/pwm CONFIG_NSH_BUILTIN_APPS - Build the PWM test as an NSH built-in function. Default: Not built! The example can only be used as an NSH built-in application - + Specific configuration options for this example include: - + CONFIG_EXAMPLES_PWM_DEVPATH - The path to the default PWM device. Default: /dev/pwm0 CONFIG_EXAMPLES_PWM_FREQUENCY - The initial PWM frequency. Default: 100 Hz CONFIG_EXAMPLES_PWM_DUTYPCT - The initial PWM duty as a percentage. Default: 50% @@ -1369,7 +1387,7 @@ examples/qencoder directory. Specific configuration options for this example include: - + CONFIG_EXAMPLES_QENCODER_DEVPATH - The path to the QE device. Default: /dev/qe0 CONFIG_EXAMPLES_QENCODER_NSAMPLES - If CONFIG_NSH_BUILTIN_APPS @@ -1396,7 +1414,7 @@ examples/relays examples/rgmp ^^^^^^^^^^^^^ - RGMP stands for RTOS and GPOS on Multi-Processor. RGMP is a project for + RGMP stands for RTOS and GPOS on Multi-Processor. RGMP is a project for running GPOS and RTOS simultaneously on multi-processor platforms. You can port your favorite RTOS to RGMP together with an unmodified Linux to form a hybrid operating system. This makes your application able to use both RTOS @@ -1446,18 +1464,17 @@ examples/sendmail NOTE: This test has not been verified on the NuttX target environment. As of this writing, unit-tested in the Cygwin/Linux host environment. - NOTE 2: This sendmail example only works for the simplest of + NOTE 2: This sendmail example only works for the simplest of environments. Virus protection software on your host may have to be disabled to allow you to send messages. Only very open, unprotected recipients can be used. Most will protect themselves from this test email because it looks like SPAM. - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: + Applications using this example will need to enble the following + netutils libraries in their defconfig file: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += smtp + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_SMTP=y examples/serloop ^^^^^^^^^^^^^^^^ @@ -1507,7 +1524,7 @@ examples/smart_test ^^^^^^^^^^^^^^^^^^^ Performs a file-based test on a SMART (or any) filesystem. Validates - seek, append and seek-with-write operations. + seek, append and seek-with-write operations. * CONFIG_EXAMPLES_SMART_TEST=y @@ -1542,6 +1559,9 @@ examples/telnetd the NuttX environment, the NuttShell (at apps/nshlib) supercedes this tiny shell and also supports telnetd. + CONFIG_EXAMPLES_TELNETD - Enable the Telnetd example + CONFIG_NETUTILS_UIPLIB, CONFIG_NETUTILS_TELNED - Enable netutils + libraries needed by the Telnetd example. CONFIG_EXAMPLES_TELNETD_DAEMONPRIO - Priority of the Telnet daemon. Default: SCHED_PRIORITY_DEFAULT CONFIG_EXAMPLES_TELNETD_DAEMONSTACKSIZE - Stack size allocated for the @@ -1556,17 +1576,11 @@ examples/telnetd CONFIG_EXAMPLES_TELNETD_DRIPADDR - The default router address. Default 10.0.0.1 CONFIG_EXAMPLES_TELNETD_NETMASK - The network mask. Default: 255.255.255.0 - - The appconfig file (apps/.config) should include: - - CONFIGURED_APPS += examples/telnetd - CONFIGURED_APPS += netutils/uiplib - CONFIGURED_APPS += netutils/telnetd Also, make sure that you have the following set in the NuttX configuration file or else the performance will be very bad (because there will be only one character per TCP transfer): - + CONFIG_STDIO_BUFFER_SIZE - Some value >= 64 CONFIG_STDIO_LINEBUFFER=y @@ -1581,12 +1595,11 @@ examples/thttpd CONFIG_EXAMPLES_THTTPD_DRIPADDR - Default router IP addess CONFIG_EXAMPLES_THTTPD_NETMASK - Network mask - Applications using this example will need to provide an appconfig - file in the configuration directory with instruction to build applications - like: + Applications using this example will need to enable the following + netutils libraries in the defconfig file: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += thttpd + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_THTTPD=y examples/tiff ^^^^^^^^^^^^^ @@ -1611,18 +1624,18 @@ examples/tiff The following must also be defined in your apps/ configuration file: - CONFIGURED_APPS += examples/tiff - CONFIGURED_APPS += graphics/tiff + CONFIG_EXAMPLES_TIFF=y + CONFIG_GRAPHICS_TIFF=y examples/touchscreen ^^^^^^^^^^^^^^^^^^^^ This configuration implements a simple touchscreen test at apps/examples/touchscreen. This test will create an empty X11 window - and will print the touchscreen output as it is received from the + and will print the touchscreen output as it is received from the simulated touchscreen driver. - CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN - Build the touchscreen test as + CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN - Build the touchscreen test as an NSH built-in function. Default: Built as a standalone problem CONFIG_EXAMPLES_TOUCHSCREEN_MINOR - The minor device number. Minor=N corresponds to touchscreen device /dev/inputN. Note this value must @@ -1638,13 +1651,13 @@ examples/touchscreen The following additional configurations must be set in the NuttX configuration file: - + CONFIG_INPUT=y (Plus any touchscreen-specific settings). The following must also be defined in your apps configuration file: - CONFIGURED_APPS += examples/touchscreen + CONFIG_EXAMPLES_TOUCHSREEN=y The board-specific logic must provide the following interfaces that will be called by the example in order to initialize and uninitialize the @@ -1659,11 +1672,10 @@ examples/udp This is a simple network test for verifying client- and server- functionality over UDP. - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: + Applications using this example will need to enabled the following + netutils libraries in the defconfig file: - CONFIGURED_APPS += uiplib + CONFIG_NETUTILS_UIPLIB=y examples/uip ^^^^^^^^^^^^ @@ -1699,14 +1711,13 @@ examples/uip CONFIG_NETUTILS_HTTPDFILESTATS CONFIG_NETUTILS_HTTPDNETSTATS - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: + Applications using this example will need to enable the following + netutils libraries in their defconfig file: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += dhcpc - CONFIGURED_APPS += resolv - CONFIGURED_APPS += webserver + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_DHCPC=y + CONFIG_NETUTILS_RESOLV=y + CONFIG_NETUTILS_WEBSERVER=y NOTE: This example does depend on the perl script at nuttx/tools/mkfsdata.pl. You must have perl installed on your @@ -1890,37 +1901,37 @@ examples/usbterm Configuration options: - CONFIG_EXAMPLES_USBTERM_BUILTIN - Build the usbterm example as an NSH - built-in command. NOTE: This is not fully functional as of this - writing.. It should work, but there is no mechanism in place yet - to exit the USB terminal program and return to NSH. - CONFIG_EXAMPLES_USBTERM_DEVINIT - If defined, then the example will - call a user provided function as part of its initialization: - int usbterm_devinit(void); - And another user provided function at termination: - void usbterm_devuninit(void); - CONFIG_EXAMPLES_USBTERM_BUFLEN - The size of the input and output - buffers used for receiving data. Default 256 bytes. + CONFIG_EXAMPLES_USBTERM_BUILTIN - Build the usbterm example as an NSH + built-in command. NOTE: This is not fully functional as of this + writing.. It should work, but there is no mechanism in place yet + to exit the USB terminal program and return to NSH. + CONFIG_EXAMPLES_USBTERM_DEVINIT - If defined, then the example will + call a user provided function as part of its initialization: + int usbterm_devinit(void); + And another user provided function at termination: + void usbterm_devuninit(void); + CONFIG_EXAMPLES_USBTERM_BUFLEN - The size of the input and output + buffers used for receiving data. Default 256 bytes. If CONFIG_USBDEV_TRACE is enabled (or CONFIG_DEBUG and CONFIG_DEBUG_USB, or CONFIG_USBDEV_TRACE), then the example code will also manage the USB trace output. The amount of trace output can be controlled using: - CONFIG_EXAMPLES_USBTERM_TRACEINIT - Show initialization events - CONFIG_EXAMPLES_USBTERM_TRACECLASS - Show class driver events - CONFIG_EXAMPLES_USBTERM_TRACETRANSFERS - Show data transfer events - CONFIG_EXAMPLES_USBTERM_TRACECONTROLLER - Show controller events - CONFIG_EXAMPLES_USBTERM_TRACEINTERRUPTS - Show interrupt-related events. + CONFIG_EXAMPLES_USBTERM_TRACEINIT + Show initialization events + CONFIG_EXAMPLES_USBTERM_TRACECLASS + Show class driver events + CONFIG_EXAMPLES_USBTERM_TRACETRANSFERS + Show data transfer events + CONFIG_EXAMPLES_USBTERM_TRACECONTROLLER + Show controller events + CONFIG_EXAMPLES_USBTERM_TRACEINTERRUPTS + Show interrupt-related events. NOTE: By default, USBterm uses readline to get data from stdin. So your - appconfig file must have the following build path: + defconfig file must have the following build path: - CONFIGURED_APPS += system/readline + CONFIG_SYSTEM_READLINE=y NOTE: If you use the USBterm task over a telnet NSH connection, then you should set the following configuration item: @@ -1953,9 +1964,9 @@ examples/watchdog CONFIG_NSH_BUILTIN_APPS - Build the watchdog time test as an NSH built-in function. Default: Not built! The example can only be used as an NSH built-in application - + Specific configuration options for this example include: - + CONFIG_EXAMPLES_WATCHDOG_DEVPATH - The path to the Watchdog device. Default: /dev/watchdog0 CONFIG_EXAMPLES_WATCHDOG_PINGTIME - Time in milliseconds that the example @@ -2000,13 +2011,12 @@ examples/wget cd examples/wget make -f Makefile.host - Applications using this example will need to provide an appconfig - file in the configuration driver with instruction to build applications - like: + Applications using this example will need to enable the following netutils + libraries in the defconfig file: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += resolv - CONFIGURED_APPS += webclient + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_RESOLV=y + CONFIG_NETUTILS_WEBCLIENT=y examples/wget ^^^^^^^^^^^^^ diff --git a/apps/examples/touchscreen/Makefile b/apps/examples/touchscreen/Makefile index 1a65c7282..6a3127f42 100644 --- a/apps/examples/touchscreen/Makefile +++ b/apps/examples/touchscreen/Makefile @@ -83,7 +83,7 @@ $(COBJS): %$(OBJEXT): %.c $(call ARCHIVE, $(BIN), $(OBJS)) @touch .built -ifeq ($(CONFIG_EXAMPLES_TOUCHSCREEN_BUILTIN),y) +ifeq ($(CONFIG_NSH_BUILTIN_APPS),y) $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME)_main.bdat: $(DEPCONFIG) Makefile $(call REGISTER,$(APPNAME),$(PRIORITY),$(STACKSIZE),$(APPNAME)_main) diff --git a/apps/interpreters/README.txt b/apps/interpreters/README.txt index 9fe39a69c..667268809 100644 --- a/apps/interpreters/README.txt +++ b/apps/interpreters/README.txt @@ -33,7 +33,7 @@ pcode sub-directory. Example: - + ./INSTALL.sh -16 $PWD/../../../apps/interpreters After installation, the NuttX apps/interpresters directory will contain @@ -52,11 +52,18 @@ pcode `-- model-specific source files pashello - + There is a simple Pascal example at apps/examples/pashello. This is the standard "Hello, World!" example written in Pascal and interpreted from Pascal P-Code at runtime. To use this example, place the following in - your appconfig file" + your defonfig file: + + CONFIG_EXAMPLES_PASHELLO=y + CONFIG_INTERPRETERS_PCODE=y + + Old Style (deprecated). In the older configuration files, you would have + used an appconfig file containing the following definitions in order to + accomplish the same thing: # Path to example in apps/examples containing the passhello_main entry point diff --git a/apps/interpreters/ficl/README.txt b/apps/interpreters/ficl/README.txt index bac9f3148..57e370338 100644 --- a/apps/interpreters/ficl/README.txt +++ b/apps/interpreters/ficl/README.txt @@ -29,12 +29,17 @@ information as "recommendations" -- not necessarily proven instructions. For example, './configure.sh ficl-4.1.0' will leave the Makefile fragment 'Make.srcs' in the ficl build directory. -5. Create your NuttX configuration. The appconfig file should include - (1) the path to your application code, and (2) the path to the Ficl - build directory. That latter would appear as the following line in - your appconfig file: +5. Create your NuttX configuration. Using the 'make menuconfig', you + should select: - CONFIGURED_APPS += interpreters/ficl + CONFIG_INTERPRETERS_FICL=y + + Deprecated: In the older style configuration, you would have used + an appconfig file to include (1) the path to your application code, + and (2) the path to the Ficl build directory. That latter would + have appeared as the following line in your appconfig file: + + CONFIGURED_APPS += interpreters/ficl 6. Configure and build NuttX. On successful completion, the Ficl objects will be available in apps/libapps.a and that NuttX binary will be diff --git a/apps/netutils/README.txt b/apps/netutils/README.txt index eaf508d48..52becf800 100644 --- a/apps/netutils/README.txt +++ b/apps/netutils/README.txt @@ -69,11 +69,13 @@ highly influenced by uIP) include: See http://acme.com/software/thttpd/ for general THTTPD information. See apps/include/netutils/thttpd.h for interface information. Applications using this thttpd - will need to provide an appconfig file in the configuration - directory with instruction to build applications like: + will need to provide the following definitions in the + defconfig file to select the appropriate netutils + libraries: + + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_THTTPD=y - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += thttpd xmlrpc - The Embeddable Lightweight XML-RPC Server discussed at http://www.drdobbs.com/web-development/an-embeddable-lightweight-xml-rpc-server/184405364 @@ -85,16 +87,16 @@ Telnetd in NuttX is to support the NuttShell (NSH) Telnet front end. See apps/include/netutils/telnetd.h for information about how to incorporate Telnetd into your custom applications. -To enable and link the Telnetd daemon, you need to include the following in -in your appconfig (apps/.config) file: +To enable and link the Telnetd daemon, you need to include the following in +in your defconfig file: - CONFIGURED_APPS += uiplib - CONFIGURED_APPS += netutils/telnetd + CONFIG_NETUTILS_UIPLIB=y + CONFIG_NETUTILS_TELNETD=y Also if the Telnet console is enabled, make sure that you have the following set in the NuttX configuration file or else the performance will be very bad (because there will be only one character per TCP transfer): - + CONFIG_STDIO_BUFFER_SIZE Some value >= 64 CONFIG_STDIO_LINEBUFFER=y Since Telnetd is line oriented, line buffering is optimal. diff --git a/apps/nshlib/README.txt b/apps/nshlib/README.txt index a03f4a8ee..bd2dd75f7 100644 --- a/apps/nshlib/README.txt +++ b/apps/nshlib/README.txt @@ -273,7 +273,7 @@ o date [-s "MMM DD HH:MM:SS YYYY"] 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. @@ -326,7 +326,7 @@ o df Size Blocks Used Available Mounted on 64 6 6 0 /etc 512 985 2 983 /tmp - nsh> + nsh> o echo [ [...]] @@ -757,7 +757,7 @@ o rmdir Recall that NuttX uses a pseudo filesystem 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 filesystem. + pseudo filesystem. Example: ^^^^^^^^ @@ -808,7 +808,7 @@ o unset nsh> o urldecode [-f] - + o urlencode [-f] o usleep @@ -844,7 +844,7 @@ 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 +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 @@ -948,7 +948,7 @@ NSH-Specific Configuration Settings 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 filesystem). Default is 1024. @@ -1099,7 +1099,7 @@ NSH-Specific Configuration Settings * CONFIG_NET=y Of course, networking must be enabled - + * CONFIG_NSOCKET_DESCRIPTORS And, of course, you must allocate some socket descriptors. @@ -1137,7 +1137,7 @@ NSH-Specific Configuration Settings * CONFIG_NET=y Of course, networking must be enabled - + * CONFIG_NSOCKET_DESCRIPTORS And, of course, you must allocate some socket descriptors. @@ -1147,7 +1147,7 @@ NSH-Specific Configuration Settings * CONFIG_NET_BROADCAST=y UDP broadcast support is needed. - + * CONFIG_NET_BUFSIZE=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). @@ -1166,7 +1166,7 @@ NSH-Specific Configuration Settings start with '/'. * CONFIG_NSH_ROMFSDEVNO - This is the minor number of the ROMFS block device. The default is + This is the minor number of the ROMFS block device. The default is '0' corresponding to /dev/ram0. * CONFIG_NSH_ROMFSSECTSIZE @@ -1180,7 +1180,7 @@ NSH-Specific Configuration Settings describe that FAT FS. * CONFIG_NSH_FATDEVNO - This is the minor number of the FAT FS block device. The default is + This is the minor number of the FAT FS block device. The default is '1' corresponding to /dev/ram1. * CONFIG_NSH_FATSECTSIZE @@ -1212,7 +1212,6 @@ Common Problems Problem: The function 'readline' is undefined. Usual Cause: - The following is missing from your appconfig file: - - CONFIGURED_APPS += system/readline + The following is missing from your defconfig file: + CONFIG_SYSTEM_READLINE=y diff --git a/apps/system/i2c/README.txt b/apps/system/i2c/README.txt index 7b432533b..1d6f22025 100644 --- a/apps/system/i2c/README.txt +++ b/apps/system/i2c/README.txt @@ -1,397 +1,400 @@ -README File for the I2C Tool -============================ - -The I2C tool provides a way to debug I2C related problems. This README file -will provide usage information for the I2C tools. - -CONTENTS -======== - - o System Requirements - - I2C Driver - - Configuration Options - o Help - o Common Line Form - o Common Command Options - - "Sticky" Options - - Environment variables - - Common Option Summary - o Command summary - - bus - - dev - - get - - set - - verf - o I2C Build Configuration - - NuttX Configuration Requirements - - I2C Tool Configuration Options - -System Requirements -=================== - -I2C Driver ----------- -In order to use the I2C driver, you system -- in particular, your I2C driver -- -must meet certain requirements: - -1. It support calling up_i2cinitialize() numerous times, resetting the I2C - hardware on each (initial) time. up_i2cuninitialize() will be called after - each call to up_i2cinitialize() to free any resources and disable the I2C. -2. up_i2cinitialize must accept any interface number without crashing. It - must simply return NULL if the device is not supported. -3. The I2C driver must support the transfer method (CONFIG_I2C_TRANSFER=y). - -The I2C tool is designed to be implemented as a NuttShell (NSH) add-on. Read -the apps/nshlib/README.txt file for information about add-ons. - -Configuration Options ---------------------- -CONFIG_I2CTOOL_BUILTIN - Build the tools as an NSH built-in command -CONFIG_I2CTOOL_MINBUS - Smallest bus index supported by the hardware (default 0). -CONFIG_I2CTOOL_MAXBUS - Largest bus index supported by the hardware (default 3) -CONFIG_I2CTOOL_MINADDR - Minium device address (default: 0x03) -CONFIG_I2CTOOL_MAXADDR - Largest device address (default: 0x77) -CONFIG_I2CTOOL_MAXREGADDR - Largest register address (default: 0xff) -CONFIG_I2CTOOL_DEFFREQ - Default frequency (default: 4000000) - -HELP -==== - -First of all, the I2C tools supports a pretty extensive help output. That -help output can be view by entering either: - - nsh> i2c help - -or - - nsh> i2c ? - -Here is an example of the help output. I shows the general form of the -command line, the various I2C commands supported with their unique command -line options, and a more detailed summary of the command I2C command -options. - - nsh> i2c help - Usage: i2c [arguments] - Where is one of: - - Show help : ? - List buses : bus - List devices : dev [OPTIONS] - Read register : get [OPTIONS] [] - Show help : help - Write register: set [OPTIONS] [] - Verify access : verf [OPTIONS] [] - - Where common "sticky" OPTIONS include: - [-a addr] is the I2C device address (hex). Default: 03 Current: 03 - [-b bus] is the I2C bus number (decimal). Default: 1 Current: 1 - [-r regaddr] is the I2C device register address (hex). Default: 00 Current: 00 - [-w width] is the data width (8 or 16 decimal). Default: 8 Current: 8 - [-s|n], send/don't send start between command and data. Default: -n Current: -n - [-i|j], Auto increment|don't increment regaddr on repititions. Default: NO Current: NO - [-f freq] I2C frequency. Default: 100000 Current: 100000 - - NOTES: - o An environment variable like $PATH may be used for any argument. - o Arguments are "sticky". For example, once the I2C address is - specified, that address will be re-used until it is changed. - - WARNING: - o The I2C dev command may have bad side effects on your I2C devices. - Use only at your own risk. - -COMMAND LINE FORM -================= - -The I2C is started from NSH by invoking the 'i2c' command from the NSH -command line. The general form of the 'i2c' command is: - - i2c [arguments] - -Where is a "sub-command" and identifies one I2C operations supported -by the tool. [arguments] represents the list of arguments needed to perform -the I2C operation. Those arguments vary from command to command as -described below. However, there is also a core set of common OPTIONS -supported by all commands. So perhaps a better representation of the -general I2C command would be: - - i2c [OPTIONS] [arguments] - -Where [OPTIONS] represents the common options and and arguments represent -the operation-specific arguments. - -COMMON COMMAND OPTIONS -====================== - -"Sticky" Options ----------------- -In order to interact with I2C devices, there are a number of I2C parameters -that must be set correctly. One way to do this would be to provide to set -the value of each separate command for each I2C parameter. The I2C tool -takes a different approach, instead: The I2C configuration can be specified -as a (potentially long) sequence of command line arguments. - -These arguments, however, are "sticky." They are sticky in the sense that -once you set the I2C parameter, that value will remain until it is reset -with a new value (or until you reset the board). - -Environment Variables ---------------------- -NOTE also that if environment variables are not disabled (by -CONFIG_DISABLE_ENVIRON=y), then these options may also be environment -variables. Environment variables must be preceded with the special -character $. For example, PWD is the variable that holds the current -working directory and so $PWD could be used as a command line argument. The -use of environment variables on the I2C tools command is really only useful -if you wish to write NSH scripts to execute a longer, more complex series of -I2C commands. - -Common Option Summary ---------------------- - -[-a addr] is the I2C device address (hex). Default: 03 Current: 03 - - The [-a addr] sets the I2C device address. The valid range is 0x03 - through 0x77 (this valid range is controlled by the configuration settings - CONFIG_I2CTOOL_MINADDR and CONFIG_I2CTOOL_MAXADDR). If you are working - with the same device, the address needs to be set only once. - - All I2C address are 7-bit, hexadecimal values. - - NOTE 1: Notice in the "help" output above it shows both default value of - the I2C address (03 hex) and the current address value (also 03 hex). - - NOTE 2: Sometimes I2C addresses are represented as 8-bit values (with - bit zero indicating a read or write operation). The I2C tool uses a - 7-bit representation of the address with bit 7 unused and no read/write - indication in bit 0. Essentially, the 7-bit address is like the 8-bit - address shifted right by 1. - - NOTE 3: Most I2C bus controllers will also support 10-bit addressing. - That capability has not been integrated into the I2C tool as of this - writing. - -[-b bus] is the I2C bus number (decimal). Default: 1 Current: 1 - - Most devices support multiple I2C devices and also have unique bus - numbering. This option identifies which bus you are working with now. - The valid range of bus numbers is controlled by the configuration settings - CONFIG_I2CTOOL_MINBUS and CONFIG_I2CTOOL_MAXBUS. - - The bus numbers are small, decimal numbers. - -[-r regaddr] is the I2C device register address (hex). Default: 00 Current: 00 - - The I2C set and get commands will access registers on the I2C device. This - option selects the device register address (sometimes called the sub-address). - This is an 8-bit hexadecimal value. The maximum value is determined by - the configuration setting CONFIG_I2CTOOL_MAXREGADDR. - -[-w width] is the data width (8 or 16 decimal). Default: 8 Current: 8 - - Device register data may be 8-bit or 16-bit. This options selects one of - those two data widths. - -[-s|n], send/don't send start between command and data. Default: -n Current: -n - - This determines whether or not there should be a new I2C START between - sending of the register address and sending/receiving of the register data. - -[-i|j], Auto increment|don't increment regaddr on repititions. Default: NO Current: NO - - On commands that take a optional number of repetitions, the option can be - used to temporarily increment the regaddr value by one on each repitition. - -[-f freq] I2C frequency. Default: 400000 Current: 400000 - - The [-f freq] sets the frequency of the I2C device. - -COMMAND SUMMARY -=============== - -We have already seen the I2C help (or ?) commands above. This section will -discuss the remaining commands. - -List buses: bus [OPTIONS] --------------------------- - -This command will simply list all of the configured I2C buses and indicate -which are supported by the driver and which are not: - - BUS EXISTS? - Bus 1: YES - Bus 2: NO - -The valid range of bus numbers is controlled by the configuration settings -CONFIG_I2CTOOL_MINBUS and CONFIG_I2CTOOL_MAXBUS. - -List devices: dev [OPTIONS] ------------------------------------------- - -The 'dev' command will attempt to identify all of the I2C devices on the -selected bus. The and arguments are 7-bit, hexadecimal -I2C addresses. This command will examine a range of addresses beginning -with and continuing through . It will request the value -of register zero from each device. - -If the device at an address responds, then this command will display the -address of the device. If the device does not respond, this command will -display "--". The resulting display is like: - -nsh> i2c dev 03 77 - 0 1 2 3 4 5 6 7 8 9 a b c d e f -00: -- -- -- -- -- -- -- -- -- -- -- -- -- -10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- -- -50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -70: -- -- -- -- -- -- -- -- - -WARNINGS: - o The I2C dev command may have bad side effects on certain I2C devices. - For example, if could cause data loss in an EEPROM device. - o The I2C dev command also depends upon the underlying behavior of the - I2C driver. How does the driver respond to addressing failures? - -Read register: get [OPTIONS] ----------------------------- - - This command will read the value of the I2C register using the selected - I2C parameters in the common options. No other arguments are required. - - This command with write the 8-bit address value then read an 8- or 16-bit - data value from the device. Optionally, it may re-start the transfer - before obtaining the data. - - An optional argument can be supplied to repeat the - read operation an arbitrary number of times (up to 2 billion). If - auto-increment is select (-i), then the register address will be - temporarily incremented on each repitions. The increment is temporary - in the since that it will not alter the "sticky" value of the - register address. - - On success, the output will look like the following (the data value - read will be shown as a 4-character hexadecimal number if the 16-bit - data width option is selected). - - READ Bus: 1 Addr: 49 Subaddr: 04 Value: 96 - - All values (except the bus numbers) are hexadecimal. - -Write register: set [OPTIONS] -------------------------------------- - - This command will write a value to an I2C register using the selected - I2C parameters in the common options. The value to write must be provided - as the final, hexadecimal value. This value may be an 8-bit value (in the - range 00-ff) or a 16-bit value (in the range 0000-ffff), depending upon - the selected data width. - - This command will write the 8-bit address value then write the 8- or 16-bit - data value to the device. Optionally, it may re-start the transfer - before writing the data. - - An optional argument can be supplied to repeat the - write operation an arbitrary number of times (up to 2 billion). If - auto-increment is select (-i), then the register address will be - temporarily incremented on each repitions. The increment is temporary - in the since that it will not alter the "sticky" value of the - register address. - - On success, the output will look like the following (the data value - written will be shown as a 4-character hexadecimal number if the 16-bit - data width option is selected). - - WROTE Bus: 1 Addr: 49 Subaddr: 04 Value: 96 - - All values (except the bus numbers) are hexadecimal. - -Verify access : verf [OPTIONS] [] ------------------------------------------------------- - - This command combines writing and reading from an I2C device register. - It will write a value to an will write a value to an I2C register using - the selected I2C parameters in the common options just as described for - tie 'set' command. Then this command will read the value back just - as described with the 'get' command. Finally, this command will compare - the value read and against the value written and emit an error message - if they do not match. - - If no value is provided, then this command will use the register address - itself as the data, providing for a address-in-address test. - - An optional argument can be supplied to repeat the - verify operation an arbitrary number of times (up to 2 billion). If - auto-increment is select (-i), then the register address will be - temporarily incremented on each repitions. The increment is temporary - in the since that it will not alter the "sticky" value of the - register address. - - On success, the output will look like the following (the data value - written will be shown as a 4-character hexadecimal number if the 16-bit - data width option is selected). - - VERIFY Bus: 1 Addr: 49 Subaddr: 04 Wrote: 96 Read: 92 FAILURE - - All values (except the bus numbers) are hexadecimal. - -I2C BUILD CONFIGURATION -======================= - -NuttX Configuration Requirements --------------------------------- -The I2C tools requires the following in your NuttX configuration: - -1. Device-specific I2C support must be enabled. The I2C tool will call the - platform-specific function up_i2cinitialize() to get instances of the - I2C interface and the platform-specific function up_i2cuninitialize() - to discard instances of the I2C interface. - - NOTE 1: The I2C interface is defined in include/nuttx/i2c.h. - - NOTE 2: This I2C tool uses direct I2C device interfaces. As such, it - relies on internal OS interfaces that are not normally available to a - user-space program. As a result, the I2C tool cannot be used if a - NuttX is built as a protected, supervisor kernel (CONFIG_NUTTX_KERNEL). - -2. I2C driver configuration - - The CONFIG_I2C_TRANSFER option must also be set in your NuttX - configuration. This configuration is the defconfig file in your - configuration directory that is copied to the NuttX top-level - directory as .config when NuttX is configured. - - CONFIG_I2C_TRANSFER=y - - NOTE: CONFIG_I2C_TRANSFER adds extra methods to the I2C interface. - Not all I2C interfaces support these extra methods. If your platform's - I2C driver does not support these extra methods, then you cannot use - the I2C tool unless you extend the support in your platform I2C - driver. - -3. Application configuration. - - The path to the I2C tool directory must also be set in your NuttX - application configuration. This application configuration is the - appconfig file in your configuration directory that is copied to the - NuttX application directory as .config when NuttX is configured. - - CONFIGURE_APPS += system/i2c - -I2C Tool Configuration Options ------------------------------- - -The default behavior of the I2C tool can be modified by the setting the -options in the NuttX configuration. This configuration is the defconfig -file in your configuration directory that is copied to the NuttX top-level -directory as .config when NuttX is configured. - - CONFIG_I2CTOOL_BUILTIN: Build the tools as an NSH built-in command - CONFIG_I2CTOOL_MINBUS: Smallest bus index supported by the hardware (default 0). - CONFIG_I2CTOOL_MAXBUS: Largest bus index supported by the hardware (default 3) - CONFIG_I2CTOOL_MINADDR: Minium device address (default: 0x03) - CONFIG_I2CTOOL_MAXADDR: Largest device address (default: 0x77) - CONFIG_I2CTOOL_MAXREGADDR: Largest register address (default: 0xff) - CONFIG_I2CTOOL_DEFFREQ: Default frequency (default: 4000000) +README File for the I2C Tool +============================ + +The I2C tool provides a way to debug I2C related problems. This README file +will provide usage information for the I2C tools. + +CONTENTS +======== + + o System Requirements + - I2C Driver + - Configuration Options + o Help + o Common Line Form + o Common Command Options + - "Sticky" Options + - Environment variables + - Common Option Summary + o Command summary + - bus + - dev + - get + - set + - verf + o I2C Build Configuration + - NuttX Configuration Requirements + - I2C Tool Configuration Options + +System Requirements +=================== + +I2C Driver +---------- +In order to use the I2C driver, you system -- in particular, your I2C driver -- +must meet certain requirements: + +1. It support calling up_i2cinitialize() numerous times, resetting the I2C + hardware on each (initial) time. up_i2cuninitialize() will be called after + each call to up_i2cinitialize() to free any resources and disable the I2C. +2. up_i2cinitialize must accept any interface number without crashing. It + must simply return NULL if the device is not supported. +3. The I2C driver must support the transfer method (CONFIG_I2C_TRANSFER=y). + +The I2C tool is designed to be implemented as a NuttShell (NSH) add-on. Read +the apps/nshlib/README.txt file for information about add-ons. + +Configuration Options +--------------------- +CONFIG_I2CTOOL_BUILTIN - Build the tools as an NSH built-in command +CONFIG_I2CTOOL_MINBUS - Smallest bus index supported by the hardware (default 0). +CONFIG_I2CTOOL_MAXBUS - Largest bus index supported by the hardware (default 3) +CONFIG_I2CTOOL_MINADDR - Minium device address (default: 0x03) +CONFIG_I2CTOOL_MAXADDR - Largest device address (default: 0x77) +CONFIG_I2CTOOL_MAXREGADDR - Largest register address (default: 0xff) +CONFIG_I2CTOOL_DEFFREQ - Default frequency (default: 4000000) + +HELP +==== + +First of all, the I2C tools supports a pretty extensive help output. That +help output can be view by entering either: + + nsh> i2c help + +or + + nsh> i2c ? + +Here is an example of the help output. I shows the general form of the +command line, the various I2C commands supported with their unique command +line options, and a more detailed summary of the command I2C command +options. + + nsh> i2c help + Usage: i2c [arguments] + Where is one of: + + Show help : ? + List buses : bus + List devices : dev [OPTIONS] + Read register : get [OPTIONS] [] + Show help : help + Write register: set [OPTIONS] [] + Verify access : verf [OPTIONS] [] + + Where common "sticky" OPTIONS include: + [-a addr] is the I2C device address (hex). Default: 03 Current: 03 + [-b bus] is the I2C bus number (decimal). Default: 1 Current: 1 + [-r regaddr] is the I2C device register address (hex). Default: 00 Current: 00 + [-w width] is the data width (8 or 16 decimal). Default: 8 Current: 8 + [-s|n], send/don't send start between command and data. Default: -n Current: -n + [-i|j], Auto increment|don't increment regaddr on repititions. Default: NO Current: NO + [-f freq] I2C frequency. Default: 100000 Current: 100000 + + NOTES: + o An environment variable like $PATH may be used for any argument. + o Arguments are "sticky". For example, once the I2C address is + specified, that address will be re-used until it is changed. + + WARNING: + o The I2C dev command may have bad side effects on your I2C devices. + Use only at your own risk. + +COMMAND LINE FORM +================= + +The I2C is started from NSH by invoking the 'i2c' command from the NSH +command line. The general form of the 'i2c' command is: + + i2c [arguments] + +Where is a "sub-command" and identifies one I2C operations supported +by the tool. [arguments] represents the list of arguments needed to perform +the I2C operation. Those arguments vary from command to command as +described below. However, there is also a core set of common OPTIONS +supported by all commands. So perhaps a better representation of the +general I2C command would be: + + i2c [OPTIONS] [arguments] + +Where [OPTIONS] represents the common options and and arguments represent +the operation-specific arguments. + +COMMON COMMAND OPTIONS +====================== + +"Sticky" Options +---------------- +In order to interact with I2C devices, there are a number of I2C parameters +that must be set correctly. One way to do this would be to provide to set +the value of each separate command for each I2C parameter. The I2C tool +takes a different approach, instead: The I2C configuration can be specified +as a (potentially long) sequence of command line arguments. + +These arguments, however, are "sticky." They are sticky in the sense that +once you set the I2C parameter, that value will remain until it is reset +with a new value (or until you reset the board). + +Environment Variables +--------------------- +NOTE also that if environment variables are not disabled (by +CONFIG_DISABLE_ENVIRON=y), then these options may also be environment +variables. Environment variables must be preceded with the special +character $. For example, PWD is the variable that holds the current +working directory and so $PWD could be used as a command line argument. The +use of environment variables on the I2C tools command is really only useful +if you wish to write NSH scripts to execute a longer, more complex series of +I2C commands. + +Common Option Summary +--------------------- + +[-a addr] is the I2C device address (hex). Default: 03 Current: 03 + + The [-a addr] sets the I2C device address. The valid range is 0x03 + through 0x77 (this valid range is controlled by the configuration settings + CONFIG_I2CTOOL_MINADDR and CONFIG_I2CTOOL_MAXADDR). If you are working + with the same device, the address needs to be set only once. + + All I2C address are 7-bit, hexadecimal values. + + NOTE 1: Notice in the "help" output above it shows both default value of + the I2C address (03 hex) and the current address value (also 03 hex). + + NOTE 2: Sometimes I2C addresses are represented as 8-bit values (with + bit zero indicating a read or write operation). The I2C tool uses a + 7-bit representation of the address with bit 7 unused and no read/write + indication in bit 0. Essentially, the 7-bit address is like the 8-bit + address shifted right by 1. + + NOTE 3: Most I2C bus controllers will also support 10-bit addressing. + That capability has not been integrated into the I2C tool as of this + writing. + +[-b bus] is the I2C bus number (decimal). Default: 1 Current: 1 + + Most devices support multiple I2C devices and also have unique bus + numbering. This option identifies which bus you are working with now. + The valid range of bus numbers is controlled by the configuration settings + CONFIG_I2CTOOL_MINBUS and CONFIG_I2CTOOL_MAXBUS. + + The bus numbers are small, decimal numbers. + +[-r regaddr] is the I2C device register address (hex). Default: 00 Current: 00 + + The I2C set and get commands will access registers on the I2C device. This + option selects the device register address (sometimes called the sub-address). + This is an 8-bit hexadecimal value. The maximum value is determined by + the configuration setting CONFIG_I2CTOOL_MAXREGADDR. + +[-w width] is the data width (8 or 16 decimal). Default: 8 Current: 8 + + Device register data may be 8-bit or 16-bit. This options selects one of + those two data widths. + +[-s|n], send/don't send start between command and data. Default: -n Current: -n + + This determines whether or not there should be a new I2C START between + sending of the register address and sending/receiving of the register data. + +[-i|j], Auto increment|don't increment regaddr on repititions. Default: NO Current: NO + + On commands that take a optional number of repetitions, the option can be + used to temporarily increment the regaddr value by one on each repitition. + +[-f freq] I2C frequency. Default: 400000 Current: 400000 + + The [-f freq] sets the frequency of the I2C device. + +COMMAND SUMMARY +=============== + +We have already seen the I2C help (or ?) commands above. This section will +discuss the remaining commands. + +List buses: bus [OPTIONS] +-------------------------- + +This command will simply list all of the configured I2C buses and indicate +which are supported by the driver and which are not: + + BUS EXISTS? + Bus 1: YES + Bus 2: NO + +The valid range of bus numbers is controlled by the configuration settings +CONFIG_I2CTOOL_MINBUS and CONFIG_I2CTOOL_MAXBUS. + +List devices: dev [OPTIONS] +------------------------------------------ + +The 'dev' command will attempt to identify all of the I2C devices on the +selected bus. The and arguments are 7-bit, hexadecimal +I2C addresses. This command will examine a range of addresses beginning +with and continuing through . It will request the value +of register zero from each device. + +If the device at an address responds, then this command will display the +address of the device. If the device does not respond, this command will +display "--". The resulting display is like: + +nsh> i2c dev 03 77 + 0 1 2 3 4 5 6 7 8 9 a b c d e f +00: -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- + +WARNINGS: + o The I2C dev command may have bad side effects on certain I2C devices. + For example, if could cause data loss in an EEPROM device. + o The I2C dev command also depends upon the underlying behavior of the + I2C driver. How does the driver respond to addressing failures? + +Read register: get [OPTIONS] +---------------------------- + + This command will read the value of the I2C register using the selected + I2C parameters in the common options. No other arguments are required. + + This command with write the 8-bit address value then read an 8- or 16-bit + data value from the device. Optionally, it may re-start the transfer + before obtaining the data. + + An optional argument can be supplied to repeat the + read operation an arbitrary number of times (up to 2 billion). If + auto-increment is select (-i), then the register address will be + temporarily incremented on each repitions. The increment is temporary + in the since that it will not alter the "sticky" value of the + register address. + + On success, the output will look like the following (the data value + read will be shown as a 4-character hexadecimal number if the 16-bit + data width option is selected). + + READ Bus: 1 Addr: 49 Subaddr: 04 Value: 96 + + All values (except the bus numbers) are hexadecimal. + +Write register: set [OPTIONS] +------------------------------------- + + This command will write a value to an I2C register using the selected + I2C parameters in the common options. The value to write must be provided + as the final, hexadecimal value. This value may be an 8-bit value (in the + range 00-ff) or a 16-bit value (in the range 0000-ffff), depending upon + the selected data width. + + This command will write the 8-bit address value then write the 8- or 16-bit + data value to the device. Optionally, it may re-start the transfer + before writing the data. + + An optional argument can be supplied to repeat the + write operation an arbitrary number of times (up to 2 billion). If + auto-increment is select (-i), then the register address will be + temporarily incremented on each repitions. The increment is temporary + in the since that it will not alter the "sticky" value of the + register address. + + On success, the output will look like the following (the data value + written will be shown as a 4-character hexadecimal number if the 16-bit + data width option is selected). + + WROTE Bus: 1 Addr: 49 Subaddr: 04 Value: 96 + + All values (except the bus numbers) are hexadecimal. + +Verify access : verf [OPTIONS] [] +------------------------------------------------------ + + This command combines writing and reading from an I2C device register. + It will write a value to an will write a value to an I2C register using + the selected I2C parameters in the common options just as described for + tie 'set' command. Then this command will read the value back just + as described with the 'get' command. Finally, this command will compare + the value read and against the value written and emit an error message + if they do not match. + + If no value is provided, then this command will use the register address + itself as the data, providing for a address-in-address test. + + An optional argument can be supplied to repeat the + verify operation an arbitrary number of times (up to 2 billion). If + auto-increment is select (-i), then the register address will be + temporarily incremented on each repitions. The increment is temporary + in the since that it will not alter the "sticky" value of the + register address. + + On success, the output will look like the following (the data value + written will be shown as a 4-character hexadecimal number if the 16-bit + data width option is selected). + + VERIFY Bus: 1 Addr: 49 Subaddr: 04 Wrote: 96 Read: 92 FAILURE + + All values (except the bus numbers) are hexadecimal. + +I2C BUILD CONFIGURATION +======================= + +NuttX Configuration Requirements +-------------------------------- +The I2C tools requires the following in your NuttX configuration: + +1. Application configuration. + + Using 'make menuconfig', select the i2c tool. The following + definition should appear in your .config file: + + CONFIG_SYSTEM_I2C=y + + Deprecated. In the older style configuration, there would have been + an appconfig file containing the path to the I2C tool directory like: + + CONFIGURE_APPS += system/i2c + +2. Device-specific I2C support must be enabled. The I2C tool will call the + platform-specific function up_i2cinitialize() to get instances of the + I2C interface and the platform-specific function up_i2cuninitialize() + to discard instances of the I2C interface. + + NOTE 1: The I2C interface is defined in include/nuttx/i2c.h. + + NOTE 2: This I2C tool uses direct I2C device interfaces. As such, it + relies on internal OS interfaces that are not normally available to a + user-space program. As a result, the I2C tool cannot be used if a + NuttX is built as a protected, supervisor kernel (CONFIG_NUTTX_KERNEL). + +3. I2C driver configuration + + The CONFIG_I2C_TRANSFER option must also be set in your NuttX + configuration. This configuration is the defconfig file in your + configuration directory that is copied to the NuttX top-level + directory as .config when NuttX is configured. + + CONFIG_I2C_TRANSFER=y + + NOTE: CONFIG_I2C_TRANSFER adds extra methods to the I2C interface. + Not all I2C interfaces support these extra methods. If your platform's + I2C driver does not support these extra methods, then you cannot use + the I2C tool unless you extend the support in your platform I2C + driver. + +I2C Tool Configuration Options +------------------------------ + +The default behavior of the I2C tool can be modified by the setting the +options in the NuttX configuration. This configuration is the defconfig +file in your configuration directory that is copied to the NuttX top-level +directory as .config when NuttX is configured. + + CONFIG_I2CTOOL_BUILTIN: Build the tools as an NSH built-in command + CONFIG_I2CTOOL_MINBUS: Smallest bus index supported by the hardware (default 0). + CONFIG_I2CTOOL_MAXBUS: Largest bus index supported by the hardware (default 3) + CONFIG_I2CTOOL_MINADDR: Minium device address (default: 0x03) + CONFIG_I2CTOOL_MAXADDR: Largest device address (default: 0x77) + CONFIG_I2CTOOL_MAXREGADDR: Largest register address (default: 0xff) + CONFIG_I2CTOOL_DEFFREQ: Default frequency (default: 4000000) -- cgit v1.2.3