PIC32MX7MMB: Repartition files to match newer configurations. Add support for PROCFS file system. Default is now Pinguino toolchain. Verifty networking.
This commit is contained in:
parent
e71472b508
commit
90680e28d4
@ -149,17 +149,19 @@ PIN CONFIGURATIONS SIGNAL NAME ON-BOARD CONNE
|
|||||||
Toolchains
|
Toolchains
|
||||||
==========
|
==========
|
||||||
|
|
||||||
MPLAB/C32
|
Pinguino mips-elf Toolchain
|
||||||
---------
|
---------------------------
|
||||||
|
|
||||||
I am using the free, "Lite" version of the PIC32MX toolchain available
|
These configurations currently assume the mips-elf toolchain used with the
|
||||||
for download from the microchip.com web site. I am using the Windows
|
Pinguino project. This is a relatively current mips-elf GCC and should
|
||||||
version. The MicroChip toolchain is the only toolchain currently
|
provide free C++ support as well. This toolchain can be downloded from the
|
||||||
supported in these configurations, but it should be a simple matter to
|
Pinguino website: http://wiki.pinguino.cc/index.php/Main_Page#Download .
|
||||||
adapt to other toolchains by modifying the Make.defs file include in
|
There is some general information about using the Pinguino mips-elf
|
||||||
each configuration.
|
toolchain in this thread:
|
||||||
|
https://groups.yahoo.com/neo/groups/nuttx/conversations/messages/1821
|
||||||
|
|
||||||
C32 Toolchain Options:
|
It should be a simple matter to adapt to other toolchains by modifying the
|
||||||
|
Make.defs file include ineach configuration.
|
||||||
|
|
||||||
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW - MicroChip full toolchain for Windows
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW - MicroChip full toolchain for Windows
|
||||||
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL - MicroChip full toolchain for Linux
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL - MicroChip full toolchain for Linux
|
||||||
@ -170,6 +172,14 @@ Toolchains
|
|||||||
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPOPENL - Microchip open toolchain for Linux
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPOPENL - Microchip open toolchain for Linux
|
||||||
CONFIG_MIPS32_TOOLCHAIN_GNU_ELF - General mips-elf toolchain for Linux
|
CONFIG_MIPS32_TOOLCHAIN_GNU_ELF - General mips-elf toolchain for Linux
|
||||||
|
|
||||||
|
MPLAB/C32
|
||||||
|
---------
|
||||||
|
|
||||||
|
Previously, I did use the old, obsoleted "Lite" version of the PIC32MX C32
|
||||||
|
toolchain that was available for download from the microchip.com web site.
|
||||||
|
That MicroChip toolchain is the only Microchip toolchain currently supported
|
||||||
|
in these configurations.
|
||||||
|
|
||||||
NOTE: The "Lite" versions of the toolchain does not support C++. Also
|
NOTE: The "Lite" versions of the toolchain does not support C++. Also
|
||||||
certain optimization levels are not supported by the "Lite" toolchain.
|
certain optimization levels are not supported by the "Lite" toolchain.
|
||||||
|
|
||||||
@ -200,26 +210,12 @@ Toolchains
|
|||||||
Note that the tools will have the prefix, mypic32- so, for example, the
|
Note that the tools will have the prefix, mypic32- so, for example, the
|
||||||
compiler will be called mypic32-gcc.
|
compiler will be called mypic32-gcc.
|
||||||
|
|
||||||
Pinguino mips-elf Toolchain
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Another option is the mips-elf toolchain used with the Pinguino project. This
|
|
||||||
is a relatively current mips-elf GCC and should provide free C++ support as
|
|
||||||
well. This toolchain can be downloded from the Pinguino website:
|
|
||||||
http://wiki.pinguino.cc/index.php/Main_Page#Download . There is some general
|
|
||||||
information about using the Pinguino mips-elf toolchain in this thread:
|
|
||||||
https://groups.yahoo.com/neo/groups/nuttx/conversations/messages/1821
|
|
||||||
|
|
||||||
See also configs/mirtoo/README.txt. There is an experimental (untested)
|
|
||||||
configuration for the Mirtoo platform in that directory.
|
|
||||||
|
|
||||||
MPLAB/C32 vs MPLABX/X32
|
MPLAB/C32 vs MPLABX/X32
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
It appears that Microchip is phasing out the MPLAB/C32 toolchain and replacing
|
Microchip has phased out the MPLAB/C32 toolchain and replacingit with MPLABX and
|
||||||
it with MPLABX and XC32. At present, the XC32 toolchain is *not* compatible
|
XC32. At present, the XC32 toolchain is *not* supported for this configuration.
|
||||||
with the NuttX build scripts. Here are some of the issues that I see when trying
|
Here are some of the issues that I see when trying to build with XC32:
|
||||||
to build with XC32:
|
|
||||||
|
|
||||||
1) Make.def changes: You have to change the tool prefix:
|
1) Make.def changes: You have to change the tool prefix:
|
||||||
|
|
||||||
@ -238,6 +234,15 @@ Toolchains
|
|||||||
information. You will have to solve at least this undefined symbol problem if
|
information. You will have to solve at least this undefined symbol problem if
|
||||||
you want to used the XC32 toolchain.
|
you want to used the XC32 toolchain.
|
||||||
|
|
||||||
|
Update: There have since been several successful uses of XC32 toolchains with
|
||||||
|
NuttX. XC32 is still not supported for this board, but you can see the README.txt
|
||||||
|
file and usage in other PIC32 configurations:
|
||||||
|
|
||||||
|
$ find . -name xc32-*
|
||||||
|
./mirtoo/scripts/xc32-debug.ld
|
||||||
|
./mirtoo/scripts/xc32-release.ld
|
||||||
|
./pic32mz-starterkit/scripts/xc32-debug.ld
|
||||||
|
|
||||||
Windows Native Toolchains
|
Windows Native Toolchains
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ CONFIG_INTELHEX_BINARY=y
|
|||||||
# CONFIG_MOTOROLA_SREC is not set
|
# CONFIG_MOTOROLA_SREC is not set
|
||||||
# CONFIG_RAW_BINARY is not set
|
# CONFIG_RAW_BINARY is not set
|
||||||
# CONFIG_UBOOT_UIMAGE is not set
|
# CONFIG_UBOOT_UIMAGE is not set
|
||||||
|
# CONFIG_DFU_BINARY is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Customize Header Files
|
# Customize Header Files
|
||||||
@ -96,8 +97,8 @@ CONFIG_ARCH_MIPS_24KC=y
|
|||||||
# CONFIG_MIPS32_TOOLCHAIN_GNU_ELF is not set
|
# CONFIG_MIPS32_TOOLCHAIN_GNU_ELF is not set
|
||||||
# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_XC32 is not set
|
# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_XC32 is not set
|
||||||
# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW is not set
|
# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW is not set
|
||||||
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE=y
|
# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE is not set
|
||||||
# CONFIG_MIPS32_TOOLCHAIN_PINGUINOW is not set
|
CONFIG_MIPS32_TOOLCHAIN_PINGUINOW=y
|
||||||
# CONFIG_MIPS32_FRAMEPOINTER is not set
|
# CONFIG_MIPS32_FRAMEPOINTER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -279,6 +280,8 @@ CONFIG_PIC32MX_VBUSIO=0
|
|||||||
# CONFIG_PIC32MX_WDENABLE is not set
|
# CONFIG_PIC32MX_WDENABLE is not set
|
||||||
CONFIG_PIC32MX_FETHIO=0
|
CONFIG_PIC32MX_FETHIO=0
|
||||||
CONFIG_PIC32MX_FMIIEN=0
|
CONFIG_PIC32MX_FMIIEN=0
|
||||||
|
# CONFIG_ARCH_TOOLCHAIN_IAR is not set
|
||||||
|
CONFIG_ARCH_TOOLCHAIN_GNU=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Architecture Options
|
# Architecture Options
|
||||||
@ -299,6 +302,7 @@ CONFIG_ARCH_HAVE_VFORK=y
|
|||||||
# CONFIG_ARCH_HAVE_EXTCLK is not set
|
# CONFIG_ARCH_HAVE_EXTCLK is not set
|
||||||
# CONFIG_ARCH_HAVE_POWEROFF is not set
|
# CONFIG_ARCH_HAVE_POWEROFF is not set
|
||||||
# CONFIG_ARCH_HAVE_RESET is not set
|
# CONFIG_ARCH_HAVE_RESET is not set
|
||||||
|
# CONFIG_ARCH_HAVE_RTC_SUBSECONDS is not set
|
||||||
# CONFIG_ARCH_IRQPRIO is not set
|
# CONFIG_ARCH_IRQPRIO is not set
|
||||||
CONFIG_ARCH_STACKDUMP=y
|
CONFIG_ARCH_STACKDUMP=y
|
||||||
# CONFIG_ENDIAN_BIG is not set
|
# CONFIG_ENDIAN_BIG is not set
|
||||||
@ -488,14 +492,6 @@ CONFIG_DEV_NULL=y
|
|||||||
#
|
#
|
||||||
# Buffering
|
# Buffering
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# Common I/O Buffer Support
|
|
||||||
#
|
|
||||||
CONFIG_MM_IOB=y
|
|
||||||
CONFIG_IOB_NBUFFERS=24
|
|
||||||
CONFIG_IOB_BUFSIZE=196
|
|
||||||
CONFIG_IOB_NCHAINS=8
|
|
||||||
# CONFIG_DRVR_WRITEBUFFER is not set
|
# CONFIG_DRVR_WRITEBUFFER is not set
|
||||||
# CONFIG_DRVR_READAHEAD is not set
|
# CONFIG_DRVR_READAHEAD is not set
|
||||||
# CONFIG_RAMDISK is not set
|
# CONFIG_RAMDISK is not set
|
||||||
@ -736,7 +732,9 @@ CONFIG_USBMSC_SCSI_STACKSIZE=2048
|
|||||||
# System Logging
|
# System Logging
|
||||||
#
|
#
|
||||||
# CONFIG_ARCH_SYSLOG is not set
|
# CONFIG_ARCH_SYSLOG is not set
|
||||||
|
CONFIG_SYSLOG_WRITE=y
|
||||||
# CONFIG_RAMLOG is not set
|
# CONFIG_RAMLOG is not set
|
||||||
|
# CONFIG_SYSLOG_BUFFER is not set
|
||||||
# CONFIG_SYSLOG_INTBUFFER is not set
|
# CONFIG_SYSLOG_INTBUFFER is not set
|
||||||
# CONFIG_SYSLOG_TIMESTAMP is not set
|
# CONFIG_SYSLOG_TIMESTAMP is not set
|
||||||
CONFIG_SYSLOG_SERIAL_CONSOLE=y
|
CONFIG_SYSLOG_SERIAL_CONSOLE=y
|
||||||
@ -894,7 +892,17 @@ CONFIG_FAT_MAXFNAME=32
|
|||||||
# CONFIG_FS_TMPFS is not set
|
# CONFIG_FS_TMPFS is not set
|
||||||
# CONFIG_FS_SMARTFS is not set
|
# CONFIG_FS_SMARTFS is not set
|
||||||
# CONFIG_FS_BINFS is not set
|
# CONFIG_FS_BINFS is not set
|
||||||
# CONFIG_FS_PROCFS is not set
|
CONFIG_FS_PROCFS=y
|
||||||
|
# CONFIG_FS_PROCFS_REGISTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Exclude individual procfs entries
|
||||||
|
#
|
||||||
|
# CONFIG_FS_PROCFS_EXCLUDE_PROCESS is not set
|
||||||
|
# CONFIG_FS_PROCFS_EXCLUDE_UPTIME is not set
|
||||||
|
# CONFIG_FS_PROCFS_EXCLUDE_MOUNTS is not set
|
||||||
|
# CONFIG_FS_PROCFS_EXCLUDE_NET is not set
|
||||||
|
# CONFIG_FS_PROCFS_EXCLUDE_MTD is not set
|
||||||
# CONFIG_FS_UNIONFS is not set
|
# CONFIG_FS_UNIONFS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -910,6 +918,15 @@ CONFIG_MM_REGIONS=1
|
|||||||
# CONFIG_ARCH_HAVE_HEAP2 is not set
|
# CONFIG_ARCH_HAVE_HEAP2 is not set
|
||||||
# CONFIG_GRAN is not set
|
# CONFIG_GRAN is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Common I/O Buffer Support
|
||||||
|
#
|
||||||
|
CONFIG_MM_IOB=y
|
||||||
|
CONFIG_IOB_NBUFFERS=24
|
||||||
|
CONFIG_IOB_BUFSIZE=196
|
||||||
|
CONFIG_IOB_NCHAINS=8
|
||||||
|
CONFIG_IOB_THROTTLE=0
|
||||||
|
|
||||||
#
|
#
|
||||||
# Audio Support
|
# Audio Support
|
||||||
#
|
#
|
||||||
@ -918,6 +935,7 @@ CONFIG_MM_REGIONS=1
|
|||||||
#
|
#
|
||||||
# Wireless Support
|
# Wireless Support
|
||||||
#
|
#
|
||||||
|
# CONFIG_WIRELESS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Binary Loader
|
# Binary Loader
|
||||||
@ -1255,6 +1273,7 @@ CONFIG_NSH_CMDOPT_DF_H=y
|
|||||||
# CONFIG_NSH_CMDOPT_DD_STATS is not set
|
# CONFIG_NSH_CMDOPT_DD_STATS is not set
|
||||||
CONFIG_NSH_CODECS_BUFSIZE=128
|
CONFIG_NSH_CODECS_BUFSIZE=128
|
||||||
CONFIG_NSH_CMDOPT_HEXDUMP=y
|
CONFIG_NSH_CMDOPT_HEXDUMP=y
|
||||||
|
CONFIG_NSH_PROC_MOUNTPOINT="/proc"
|
||||||
CONFIG_NSH_FILEIOSIZE=512
|
CONFIG_NSH_FILEIOSIZE=512
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1274,6 +1293,7 @@ CONFIG_NSH_ARCHINIT=y
|
|||||||
# Networking Configuration
|
# Networking Configuration
|
||||||
#
|
#
|
||||||
CONFIG_NSH_NETINIT=y
|
CONFIG_NSH_NETINIT=y
|
||||||
|
# CONFIG_NSH_NETLOCAL is not set
|
||||||
# CONFIG_NSH_NETINIT_THREAD is not set
|
# CONFIG_NSH_NETINIT_THREAD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1318,12 +1338,14 @@ CONFIG_NSH_IOBUFFER_SIZE=512
|
|||||||
#
|
#
|
||||||
# CONFIG_SYSTEM_CLE is not set
|
# CONFIG_SYSTEM_CLE is not set
|
||||||
# CONFIG_SYSTEM_CUTERM is not set
|
# CONFIG_SYSTEM_CUTERM is not set
|
||||||
|
# CONFIG_SYSTEM_DHCPC is not set
|
||||||
# CONFIG_SYSTEM_FLASH_ERASEALL is not set
|
# CONFIG_SYSTEM_FLASH_ERASEALL is not set
|
||||||
# CONFIG_SYSTEM_FREE is not set
|
# CONFIG_SYSTEM_FREE is not set
|
||||||
# CONFIG_SYSTEM_HEX2BIN is not set
|
# CONFIG_SYSTEM_HEX2BIN is not set
|
||||||
# CONFIG_SYSTEM_HEXED is not set
|
# CONFIG_SYSTEM_HEXED is not set
|
||||||
# CONFIG_SYSTEM_INSTALL is not set
|
# CONFIG_SYSTEM_INSTALL is not set
|
||||||
# CONFIG_SYSTEM_NETDB is not set
|
# CONFIG_SYSTEM_NETDB is not set
|
||||||
|
# CONFIG_SYSTEM_NTPC is not set
|
||||||
# CONFIG_SYSTEM_RAMTEST is not set
|
# CONFIG_SYSTEM_RAMTEST is not set
|
||||||
CONFIG_READLINE_HAVE_EXTMATCH=y
|
CONFIG_READLINE_HAVE_EXTMATCH=y
|
||||||
CONFIG_SYSTEM_READLINE=y
|
CONFIG_SYSTEM_READLINE=y
|
||||||
@ -1351,3 +1373,10 @@ CONFIG_SYSTEM_USBMSC_CMD_PRIORITY=100
|
|||||||
#
|
#
|
||||||
# Wireless Libraries and NSH Add-Ons
|
# Wireless Libraries and NSH Add-Ons
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IEEE 802.15.4 applications
|
||||||
|
#
|
||||||
|
# CONFIG_IEEE802154_LIBMAC is not set
|
||||||
|
# CONFIG_IEEE802154_LIBUTILS is not set
|
||||||
|
# CONFIG_IEEE802154_I8SAK is not set
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
-include $(TOPDIR)/Make.defs
|
-include $(TOPDIR)/Make.defs
|
||||||
|
|
||||||
ASRCS =
|
ASRCS =
|
||||||
CSRCS = pic32_boot.c pic32_leds.c pic32_spi.c pic32_mio283qt2.c
|
CSRCS = pic32_boot.c pic32_bringup.c pic32_leds.c pic32_spi.c pic32_mio283qt2.c
|
||||||
|
|
||||||
ifeq ($(CONFIG_PIC32MX_USBDEV),y)
|
ifeq ($(CONFIG_PIC32MX_USBDEV),y)
|
||||||
CSRCS += pic32_usbdev.c
|
CSRCS += pic32_usbdev.c
|
||||||
|
@ -39,319 +39,14 @@
|
|||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <stdint.h>
|
||||||
#include <syslog.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include <nuttx/board.h>
|
#include <nuttx/board.h>
|
||||||
#include <nuttx/spi/spi.h>
|
|
||||||
#include <nuttx/mmcsd.h>
|
|
||||||
#include <nuttx/usb/usbhost.h>
|
|
||||||
|
|
||||||
#include "pic32mx.h"
|
|
||||||
#include "pic32mx7mmb.h"
|
#include "pic32mx7mmb.h"
|
||||||
|
|
||||||
/****************************************************************************
|
#ifdef CONFIG_LIB_BOARDCTL
|
||||||
* Pre-processor Definitions
|
|
||||||
****************************************************************************/
|
|
||||||
/* Configuration ************************************************************/
|
|
||||||
/* Assume that we have MMC/SD, USB host (and USB device) */
|
|
||||||
|
|
||||||
#define NSH_HAVEMMCSD 1
|
|
||||||
#define NSH_HAVEUSBHOST 1
|
|
||||||
|
|
||||||
/* The Mikroelektronika PIC32MX7 MMB has one SD slot on board, connected to SPI 1. */
|
|
||||||
|
|
||||||
#ifndef CONFIG_PIC32MX_MMCSDSPIPORTNO
|
|
||||||
# define CONFIG_PIC32MX_MMCSDSPIPORTNO 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Make sure that the configuration will support the SD card */
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEMMCSD
|
|
||||||
|
|
||||||
/* Make sure that the NSH configuration uses the correct SPI */
|
|
||||||
|
|
||||||
# if !defined(CONFIG_NSH_MMCSDSPIPORTNO)
|
|
||||||
# define CONFIG_NSH_MMCSDSPIPORTNO CONFIG_PIC32MX_MMCSDSPIPORTNO
|
|
||||||
# elif CONFIG_NSH_MMCSDSPIPORTNO != CONFIG_PIC32MX_MMCSDSPIPORTNO
|
|
||||||
# warning "CONFIG_PIC32MX_MMCSDSPIPORTNO does not match CONFIG_NSH_MMCSDSPIPORTNO"
|
|
||||||
# undef CONFIG_NSH_MMCSDSPIPORTNO
|
|
||||||
# define CONFIG_NSH_MMCSDSPIPORTNO CONFIG_PIC32MX_MMCSDSPIPORTNO
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Make sure that the NSH configuration uses slot 0 (there is only one
|
|
||||||
* SD slot on the Mikroelektronica PIC32MX7 MMB).
|
|
||||||
*/
|
|
||||||
|
|
||||||
# if !defined(CONFIG_NSH_MMCSDSLOTNO)
|
|
||||||
# define CONFIG_NSH_MMCSDSLOTNO 0
|
|
||||||
# elif CONFIG_NSH_MMCSDSLOTNO != 0
|
|
||||||
# warning "The Mikroelektronika PIC32MX7 MMB has only one slot (0)"
|
|
||||||
# undef CONFIG_NSH_MMCSDSLOTNO
|
|
||||||
# define CONFIG_NSH_MMCSDSLOTNO 0
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Make sure that the correct SPI is enabled in the configuration */
|
|
||||||
|
|
||||||
# if CONFIG_PIC32MX_MMCSDSPIPORTNO == 1 && !defined(CONFIG_PIC32MX_SPI1)
|
|
||||||
# warning "CONFIG_PIC32MX_SPI1 is not enabled"
|
|
||||||
# undef NSH_HAVEMMCSD
|
|
||||||
# elif CONFIG_PIC32MX_MMCSDSPIPORTNO == 2 && !defined(CONFIG_PIC32MX_SPI2)
|
|
||||||
# warning "CONFIG_PIC32MX_SPI2 is not enabled"
|
|
||||||
# undef NSH_HAVEMMCSD
|
|
||||||
# elif CONFIG_PIC32MX_MMCSDSPIPORTNO == 3 && !defined(CONFIG_PIC32MX_SPI3)
|
|
||||||
# warning "CONFIG_PIC32MX_SPI3 is not enabled"
|
|
||||||
# undef NSH_HAVEMMCSD
|
|
||||||
# elif CONFIG_PIC32MX_MMCSDSPIPORTNO == 4 && !defined(CONFIG_PIC32MX_SPI4)
|
|
||||||
# warning "CONFIG_PIC32MX_SPI4 is not enabled"
|
|
||||||
# undef NSH_HAVEMMCSD
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Can't support MMC/SD features if mountpoints are disabled */
|
|
||||||
|
|
||||||
#if defined(CONFIG_DISABLE_MOUNTPOINT)
|
|
||||||
# undef NSH_HAVEMMCSD
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Select /dev/mmcsd0 if no other minor number is provided */
|
|
||||||
|
|
||||||
#ifndef CONFIG_NSH_MMCSDMINOR
|
|
||||||
# define CONFIG_NSH_MMCSDMINOR 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* USB Host */
|
|
||||||
|
|
||||||
#ifdef CONFIG_USBHOST
|
|
||||||
# ifndef CONFIG_PIC32MX_USBHOST
|
|
||||||
# error "CONFIG_PIC32MX_USBHOST is not selected"
|
|
||||||
# undef NSH_HAVEUSBHOST
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_PIC32MX_USBHOST
|
|
||||||
# ifndef CONFIG_USBHOST
|
|
||||||
# warning "CONFIG_USBHOST is not selected"
|
|
||||||
# undef NSH_HAVEUSBHOST
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(CONFIG_USBHOST) || !defined(CONFIG_PIC32MX_USBHOST)
|
|
||||||
# undef NSH_HAVEUSBHOST
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEUSBHOST
|
|
||||||
# ifndef CONFIG_USBHOST_DEFPRIO
|
|
||||||
# define CONFIG_USBHOST_DEFPRIO 50
|
|
||||||
# endif
|
|
||||||
# ifndef CONFIG_USBHOST_STACKSIZE
|
|
||||||
# ifdef CONFIG_USBHOST_HUB
|
|
||||||
# define CONFIG_USBHOST_STACKSIZE 1536
|
|
||||||
# else
|
|
||||||
# define CONFIG_USBHOST_STACKSIZE 1024
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Data
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEUSBHOST
|
|
||||||
static struct usbhost_connection_s *g_usbconn;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Private Functions
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nsh_waiter
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Wait for USB devices to be connected.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEUSBHOST
|
|
||||||
static int nsh_waiter(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
struct usbhost_hubport_s *hport;
|
|
||||||
|
|
||||||
syslog(LOG_INFO, "nsh_waiter: Running\n");
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
/* Wait for the device to change state */
|
|
||||||
|
|
||||||
DEBUGVERIFY(CONN_WAIT(g_usbconn, &hport));
|
|
||||||
syslog(LOG_INFO, "nsh_waiter: %s\n", hport->connected ? "connected" : "disconnected");
|
|
||||||
|
|
||||||
/* Did we just become connected? */
|
|
||||||
|
|
||||||
if (hport->connected)
|
|
||||||
{
|
|
||||||
/* Yes.. enumerate the newly connected device */
|
|
||||||
|
|
||||||
(void)CONN_ENUMERATE(g_usbconn, hport);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Keep the compiler from complaining */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nsh_sdinitialize
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initialize SPI-based microSD.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEMMCSD
|
|
||||||
static int nsh_sdinitialize(void)
|
|
||||||
{
|
|
||||||
FAR struct spi_dev_s *spi;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Get the SPI port */
|
|
||||||
|
|
||||||
spi = pic32mx_spibus_initialize(CONFIG_NSH_MMCSDSPIPORTNO);
|
|
||||||
if (!spi)
|
|
||||||
{
|
|
||||||
syslog(LOG_ERR, "ERROR: Failed to initialize SPI port %d\n",
|
|
||||||
CONFIG_NSH_MMCSDSPIPORTNO);
|
|
||||||
ret = -ENODEV;
|
|
||||||
goto errout;
|
|
||||||
}
|
|
||||||
|
|
||||||
syslog(LOG_INFO, "Successfully initialized SPI port %d\n",
|
|
||||||
CONFIG_NSH_MMCSDSPIPORTNO);
|
|
||||||
|
|
||||||
/* The SPI should be in 8-bit (default) and mode2: CKP=1, CKE=0.
|
|
||||||
* The MMC/SD driver will control the SPI frequency. WARNING:
|
|
||||||
* this is not the right way to do this... this should be done
|
|
||||||
* the MMC/SD driver: Other device on SPI1 may need other mode
|
|
||||||
* settings.
|
|
||||||
*/
|
|
||||||
|
|
||||||
SPI_SETMODE(spi, SPIDEV_MODE2);
|
|
||||||
|
|
||||||
/* Bind the SPI port to the slot */
|
|
||||||
|
|
||||||
ret = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR,
|
|
||||||
CONFIG_NSH_MMCSDSLOTNO, spi);
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
|
||||||
syslog(LOG_ERR,
|
|
||||||
"ERROR: Failed to bind SPI port %d to MMC/SD slot %d: %d\n",
|
|
||||||
CONFIG_NSH_MMCSDSPIPORTNO,
|
|
||||||
CONFIG_NSH_MMCSDSLOTNO, ret);
|
|
||||||
goto errout;
|
|
||||||
}
|
|
||||||
|
|
||||||
syslog(LOG_INFO,
|
|
||||||
"Successfully bound SPI port %d to MMC/SD slot %d\n",
|
|
||||||
CONFIG_NSH_MMCSDSPIPORTNO,
|
|
||||||
CONFIG_NSH_MMCSDSLOTNO);
|
|
||||||
|
|
||||||
return OK;
|
|
||||||
|
|
||||||
errout:
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
# define nsh_sdinitialize() (OK)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nsh_usbhostinitialize
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initialize SPI-based microSD.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef NSH_HAVEUSBHOST
|
|
||||||
static int nsh_usbhostinitialize(void)
|
|
||||||
{
|
|
||||||
int pid;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* First, register all of the class drivers needed to support the drivers
|
|
||||||
* that we care about:
|
|
||||||
*/
|
|
||||||
|
|
||||||
syslog(LOG_INFO, "Register class drivers\n");
|
|
||||||
|
|
||||||
#ifdef CONFIG_USBHOST_MSC
|
|
||||||
/* Register the USB host Mass Storage Class */
|
|
||||||
|
|
||||||
ret = usbhost_msc_initialize();
|
|
||||||
if (ret != OK)
|
|
||||||
{
|
|
||||||
syslog(LOG_ERR, "ERROR: Failed to register the mass storage class: %d\n", ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_USBHOST_CDCACM
|
|
||||||
/* Register the CDC/ACM serial class */
|
|
||||||
|
|
||||||
ret = usbhost_cdcacm_initialize();
|
|
||||||
if (ret != OK)
|
|
||||||
{
|
|
||||||
syslog(LOG_ERR, "ERROR: Failed to register the CDC/ACM serial class: %d\n", ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Then get an instance of the USB host interface */
|
|
||||||
|
|
||||||
syslog(LOG_INFO, "Initialize USB host\n");
|
|
||||||
g_usbconn = pic32_usbhost_initialize(0);
|
|
||||||
if (g_usbconn)
|
|
||||||
{
|
|
||||||
/* Start a thread to handle device connection. */
|
|
||||||
|
|
||||||
syslog(LOG_INFO, "Start nsh_waiter\n");
|
|
||||||
|
|
||||||
pid = task_create("usbhost", CONFIG_USBHOST_DEFPRIO,
|
|
||||||
CONFIG_USBHOST_STACKSIZE,
|
|
||||||
(main_t)nsh_waiter, (FAR char * const *)NULL);
|
|
||||||
return pid < 0 ? -ENOEXEC : OK;
|
|
||||||
}
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
# define nsh_usbhostinitialize() (OK)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nsh_usbdevinitialize
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initialize SPI-based microSD.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifdef CONFIG_USBDEV
|
|
||||||
static int nsh_usbdevinitialize(void)
|
|
||||||
{
|
|
||||||
/* The Mikroelektronika PIC32MX7 MMB has no way to know when the USB is
|
|
||||||
* connected. So we will fake it and tell the USB driver that the USB is
|
|
||||||
* connected now.
|
|
||||||
*/
|
|
||||||
|
|
||||||
pic32mx_usbattach();
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
# define nsh_usbdevinitialize() (OK)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
@ -365,6 +60,13 @@ static int nsh_usbdevinitialize(void)
|
|||||||
* called directly from application code, but only indirectly via the
|
* called directly from application code, but only indirectly via the
|
||||||
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
||||||
*
|
*
|
||||||
|
* CONFIG_LIB_BOARDCTL=y :
|
||||||
|
* Called from the NSH library
|
||||||
|
*
|
||||||
|
* CONFIG_BOARD_INITIALIZE=y, CONFIG_NSH_LIBRARY=y, &&
|
||||||
|
* CONFIG_LIB_BOARDCTL=n :
|
||||||
|
* Called from board_initialize().
|
||||||
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
* arg - The boardctl() argument is passed to the board_app_initialize()
|
* arg - The boardctl() argument is passed to the board_app_initialize()
|
||||||
* implementation without modification. The argument has no
|
* implementation without modification. The argument has no
|
||||||
@ -384,24 +86,13 @@ static int nsh_usbdevinitialize(void)
|
|||||||
|
|
||||||
int board_app_initialize(uintptr_t arg)
|
int board_app_initialize(uintptr_t arg)
|
||||||
{
|
{
|
||||||
int ret;
|
/* Did we already initialize via board_initialize()? */
|
||||||
|
|
||||||
/* Initialize SPI-based microSD */
|
#ifndef CONFIG_BOARD_INITIALIZE
|
||||||
|
return pic32mx_bringup();
|
||||||
ret = nsh_sdinitialize();
|
#else
|
||||||
if (ret == OK)
|
return OK;
|
||||||
{
|
#endif
|
||||||
/* Initialize USB host */
|
|
||||||
|
|
||||||
ret = nsh_usbhostinitialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == OK)
|
|
||||||
{
|
|
||||||
/* Initialize USB device */
|
|
||||||
|
|
||||||
ret = nsh_usbdevinitialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_LIB_BOARDCTL */
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* configs/pic32mx7mmb/src/pic32_boot.c
|
* configs/pic32mx7mmb/src/pic32_boot.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2012, 2017 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -98,3 +98,26 @@ void pic32mx_boardinitialize(void)
|
|||||||
pic32mx_led_initialize();
|
pic32mx_led_initialize();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: board_initialize
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* If CONFIG_BOARD_INITIALIZE is selected, then an additional
|
||||||
|
* initialization call will be performed in the boot-up sequence to a
|
||||||
|
* function called board_initialize(). board_initialize() will be
|
||||||
|
* called immediately after up_initialize() is called and just before the
|
||||||
|
* initial application is started. This additional initialization phase
|
||||||
|
* may be used, for example, to initialize board-specific device drivers.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_INITIALIZE
|
||||||
|
void board_initialize(void)
|
||||||
|
{
|
||||||
|
/* Perform board-specific initialization here if so configured */
|
||||||
|
|
||||||
|
(void)pic32mx_bringup();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* configs/pic32mx7mmb/src/pic32mx7mmb.h
|
* configs/pic32mx7mmb/src/pic32mx7mmb.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2012, 2017 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -145,6 +145,22 @@ void weak_function pic32mx_spidev_initialize(void);
|
|||||||
void pic32mx_led_initialize(void);
|
void pic32mx_led_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Name: pic32mx_bringup
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform architecture-specific initialization
|
||||||
|
*
|
||||||
|
* CONFIG_BOARD_INITIALIZE=y :
|
||||||
|
* Called from board_initialize().
|
||||||
|
*
|
||||||
|
* CONFIG_BOARD_INITIALIZE=y && CONFIG_LIB_BOARDCTL=y :
|
||||||
|
* Called from the NSH library
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
int pic32mx_bringup(void);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: pic32mx_lcdinitialize
|
* Name: pic32mx_lcdinitialize
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user