mirror of
https://github.com/apache/nuttx.git
synced 2026-05-24 16:11:56 +08:00
docs/pic32mz-starterkit: Migrate README.txt to RST
Migrate legacy README.txt to RST format. Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
This commit is contained in:
@@ -1,422 +0,0 @@
|
||||
boards/pic32mz-starterkit README
|
||||
===============================
|
||||
|
||||
This README file discusses the port of NuttX to the Microchip PIC32MZ
|
||||
Embedded Connectivity (EC) Starter Kit.
|
||||
|
||||
Contents
|
||||
========
|
||||
|
||||
Port Status
|
||||
Board Overview
|
||||
On Board Debug Support
|
||||
Creating Compatible NuttX HEX files
|
||||
Tool Issues
|
||||
Serial Console
|
||||
LEDs
|
||||
Configurations
|
||||
|
||||
Port Status
|
||||
===========
|
||||
|
||||
As of this writing (2015-03-01), the basic port is complete including
|
||||
minimal support for the NuttShell (NSH) over UART1. No testing has yet
|
||||
been performed due to seemingly insurmountable debug problems:
|
||||
|
||||
Thusfar, no one has been successful using NuttX with MPLABX. All
|
||||
debug is being performed using a J-Link debugger via some custom
|
||||
interconnect boards.
|
||||
|
||||
Patches were provided by Kristopher Tate on 2015-03-21 that support the
|
||||
serial console with the NuttShell, completing the basic bring-up.
|
||||
|
||||
Board Overview
|
||||
==============
|
||||
|
||||
There are two configurations of the Microchip PIC32MZ Embedded Connectivity
|
||||
(EC) Starter Kit:
|
||||
|
||||
1) The PIC32MZ Embedded Connectivity Starter Kit based on the
|
||||
PIC32MZ2048ECH144-I/PH chip (DM320006), and
|
||||
2) The PIC32MZ Embedded Connectivity Starter Kit based on the
|
||||
PIC32MZ2048ECM144-I/PH w/Crypto Engine (DM320006-C)
|
||||
|
||||
See www.microchip.com for further information.
|
||||
|
||||
Key features of the PIC32MZ Starter Kit include;
|
||||
|
||||
* On-board crystal or oscillator for precision microcontroller clocking
|
||||
(24 MHz).
|
||||
* 32 kHz oscillator for RTCC and Timer1 (optional).
|
||||
* Three push button switches for user-defined inputs.
|
||||
* Three user-defined indicator LEDs.
|
||||
* USB Type A receptacle connectivity for PIC32 host-based applications.
|
||||
* USB Type micro-AB receptacle for OTG and USB device connectivity for
|
||||
PIC32 OTG/device-based applications.
|
||||
* Daughter board connectors for flexible Ethernet PHY options.
|
||||
* 50 MHz Ethernet PHY oscillator.
|
||||
* External 4 GB SQI memory for expanded memory applications.
|
||||
* PIC24FJ256GB106 USB microcontroller for on-board debugging.
|
||||
* USB connectivity for on-board debugger communications.
|
||||
* Regulated +3.3V power supply for powering the starter kit through USB or
|
||||
expansion board.
|
||||
* Connector for various expansion boards.
|
||||
|
||||
The PIC32MZ starter kit comes complete with a LAN8740 PHY daughter board.
|
||||
|
||||
Testing was performed with the following additional hardware:
|
||||
|
||||
- Microchip PIC32MZ Embedded Connectivity (EC) Adapter Board (AC320006)
|
||||
that allows connection of the PIC32MZEC Starter Kit to the Microchip
|
||||
Multimedia Expansion Board (MEB, DM320005) or PIC32 I/O Expansion Board
|
||||
(DM320002). These were previously used with the PIC32MX bringup.
|
||||
- Microchip Multimedia Expansion Board II (MEB II, DM320005-2).
|
||||
|
||||
On Board Debug Support
|
||||
======================
|
||||
|
||||
The starter kit includes a PIC24FJ256GB106 USB microcontroller that
|
||||
provides debugger connectivity over USB. The PIC24FJ256GB106 is hard-wired
|
||||
to the PIC32 device to provide protocol translation through the I/O pins
|
||||
of the PIC24FJ256GB106 to the ICSP™ pins of the PIC32 device.
|
||||
|
||||
If MPLAB® REAL ICE™ or MPLAB ICD 3 is used with the starter kit,
|
||||
disconnect the onboard debugger from the PIC32 device by removing the
|
||||
jumper JP2. When the on-board debugger is required, replace the jumper
|
||||
JP2. When the jumper JP2 is installed, pin 1 must be connected to pin 3
|
||||
and pin 2 must be connected to pin 4.
|
||||
|
||||
Creating Compatible NuttX HEX files
|
||||
===================================
|
||||
|
||||
Intel Hex Format Files:
|
||||
-----------------------
|
||||
|
||||
When NuttX is built it will produce two files in the top-level NuttX
|
||||
directory:
|
||||
|
||||
1) nuttx - This is an ELF file, and
|
||||
2) nuttx.hex - This is an Intel Hex format file. This is controlled by
|
||||
the setting CONFIG_INTELHEX_BINARY in the .config file.
|
||||
|
||||
The PICkit tool wants an Intel Hex format file to burn into FLASH. However,
|
||||
there is a problem with the generated nutt.hex: The tool expects the nuttx.hex
|
||||
file to contain physical addresses. But the nuttx.hex file generated from the
|
||||
top-level make will have address in the KSEG0 and KSEG1 regions.
|
||||
|
||||
tools/pic32/mkpichex:
|
||||
----------------------
|
||||
|
||||
There is a simple tool in the NuttX tools/pic32 directory that can be
|
||||
used to solve both issues with the nuttx.hex file. But, first, you must
|
||||
build the tool:
|
||||
|
||||
cd tools/pic32
|
||||
make -f Makefile.host
|
||||
|
||||
Now you will have an executable file called mkpichex (or mkpichex.exe on
|
||||
Cygwin). This program will take the nutt.hex file as an input, it will
|
||||
convert all of the KSEG0 and KSEG1 addresses to physical address, and
|
||||
it will write the modified file, replacing the original nuttx.hex.
|
||||
|
||||
To use this file, you need to do the following things:
|
||||
|
||||
export PATH=??? # Add the NuttX tools/pic32 directory to your
|
||||
# PATH variable
|
||||
make # Build nuttx and nuttx.hex
|
||||
mkpichex $PWD # Convert addresses in nuttx.hex. $PWD is the path
|
||||
# to the top-level build directory. It is the only
|
||||
# required input to mkpichex.
|
||||
|
||||
This procedure is automatically performed at the end of a build.
|
||||
|
||||
Tool Issues
|
||||
===========
|
||||
|
||||
Pinquino Toolchain
|
||||
------------------
|
||||
If you use the Pinguino toolchain, you will probably see this error:
|
||||
|
||||
C:\pinguino-11\compilers\p32\bin\p32-ld.exe: target elf32-tradlittlemips not found
|
||||
|
||||
This is due to linker differences in the toolchains. The linker script
|
||||
at boards/pic32mz-starterkit has:
|
||||
|
||||
OUTPUT_FORMAT("elf32-tradlittlemips")
|
||||
|
||||
This error can be eliminated with the Pinguino toolchain by changing this to:
|
||||
|
||||
OUTPUT_FORMAT("elf32-littlemips")
|
||||
|
||||
Mentor Toolchain
|
||||
----------------
|
||||
|
||||
https://sourcery.mentor.com/GNUToolchain/release2934 tools.
|
||||
|
||||
If you use this toolchain, you will need to add CROSSDEV=mips-sde-elf- to
|
||||
your Make.defs file.
|
||||
|
||||
ICD3
|
||||
----
|
||||
The onboard debugger is Slow and one is better off using an ICD3. By removing
|
||||
jumper JP2, I can disable the on-board OpenHCD debugger an enable the RJ11
|
||||
debug connector. My ICD 3 does seems to work properly using this configuration,
|
||||
at least in the sense that it is recognized by both MPLABX IDE and IPE.
|
||||
|
||||
Segger J-Link
|
||||
-------------
|
||||
If using a Jlink that only these versions work with PIC32:
|
||||
|
||||
J-Link BASE / EDU V9 or later
|
||||
J-Link ULTRA+ / PRO V4 or later
|
||||
|
||||
Oddly, you must use the G version in the command:
|
||||
|
||||
JLinkGDBServer -device PIC32MZ2048ECG144 -if 2-wire-JTAG-PIC32 -speed 12000
|
||||
|
||||
Even though we have PIC32MZ2048ECM144 parts on our board. (JLinkGDBServer
|
||||
will except anything and just mess up your weekend)
|
||||
|
||||
Serial Console
|
||||
==============
|
||||
|
||||
MEB-II
|
||||
------
|
||||
By default, the UART1 is configured for the pins used by the MEB-II
|
||||
board. The UART1 signals are available at the MEB-II PICTail
|
||||
connector:
|
||||
|
||||
--------------- --------- -------------- ------------
|
||||
PIC32MZ PIN CONNECTOR MEB-II PIN PICTAIL PIN
|
||||
FUNCTION J1 NAME J2
|
||||
--------------- --------- -------------- ------------
|
||||
RPA14/SCL1/RA14 124 SCL1/TOUCH_SCL 4
|
||||
RPA15/SDA1/RA15 126 SDA1/TOUCH_SDA 6
|
||||
+3.3V 1,26
|
||||
GND 28
|
||||
--------------- --------- -------------- ------------
|
||||
|
||||
This pin selection is controlled by these definitions in
|
||||
pic32mz-starterkit/include/board.h:
|
||||
|
||||
#define BOARD_U1RX_PPS U1RXR_RPA14
|
||||
#define BOARD_U1TX_PPS U1TX_RPA15R
|
||||
|
||||
PIC32MX I/O Expansion Board with Adapter Board
|
||||
------------------------------------------
|
||||
If the MEB-II UART configuration when used with the I/O Expansion board
|
||||
(with the adapter), then UART will be on J11 with Pin 35 being U1RX (into
|
||||
MZ) and Pin 37 being TU1X (out of MZ).
|
||||
|
||||
Directly from the Adapter Board
|
||||
-------------------------------
|
||||
But you can get serial port directly from the PIC32MZ Embedded
|
||||
Connectivity (EC) Adapter Board (AC320006). The Microchip
|
||||
adapter board brings out UART signals as follows:
|
||||
|
||||
JP7 redirects J1 U3_TX to either J2 SOSCO/RC14 or U1_TX:
|
||||
|
||||
Adapter
|
||||
-----------------------------------------------------------------------
|
||||
JP7, Pin 1: J2 Pin 32, SOSCO/RC14
|
||||
Pin 2: J1 Pin 17, U3_TX
|
||||
Pin 3: J2 Pin 90, U1_TX
|
||||
|
||||
PIC32MZ Starter Kit
|
||||
-----------------------------------------------------------------------
|
||||
J1 Pin 17, SOSCO/RC14 PIC32MZ SOSCO/RPC14/T1CK/RC14
|
||||
|
||||
RPC14 supports U1RX, U4RX, and U3TX
|
||||
|
||||
JP8 redirects J1 RB3/AN3/SDO4/WIFI_SDI to either J2 AN3/SDO4/WIFI_SDI or U3_RX:
|
||||
|
||||
Adapter PIC32MZ Starter Kit
|
||||
---------------------------------------------- -------------------------
|
||||
JP8, Pin 1: J2, Pin 66, AN3/SDO4/WIFI_SDI
|
||||
Pin 2: J1, Pin 105, RB3/AN3/SDO4/WIFI_SDI
|
||||
Pin 3: J2, Pin 88, U3_RX
|
||||
|
||||
PIC32MZ Starter Kit
|
||||
-----------------------------------------------------------------------
|
||||
J1, Pin 105, AN3/C2INA/RPB3/RB3
|
||||
|
||||
RPB3 supports U3RX, U1TX, and U5TX
|
||||
|
||||
Thus UART1 or UART3 could be used as a serial console if only the
|
||||
PIC32MZEC Adapter Board is connected.
|
||||
|
||||
The default serial configuration here in these configurations is UART1
|
||||
using RPC14 and RPB3. That UART selection can be change by running 'make
|
||||
menuconfig'. The UART pin selections would need to be changed by editing
|
||||
boards/pc32mz-starterkit/include/board.h.
|
||||
|
||||
If using a AC320006 by itself, JP7 pin 2 and JP8 pin 2 is where you would
|
||||
connect a 3.3 Volt TTL serial interface.
|
||||
|
||||
For a configuration using UART1 connect:
|
||||
TX to AC320006-JP7 pin 2 which is PIC32MZ pin 106 (RPC14) used as U1RX
|
||||
RX to AC320006-JP8 pin 2 which is PIC32MZ pin 31 (RPB3)) used as U1TX
|
||||
|
||||
For a configuration using For UART3 connect:
|
||||
TX to AC320006-JP8 pin 2 which is PIC32MZ pin 31 (RPB3)) used as U3RX
|
||||
RX to AC320006-JP7 pin 2 which is PIC32MZ pin 106 (RPC14) used as U3TX
|
||||
|
||||
If using a AC320006 plugged into a DM320002 then regardless of which UART,
|
||||
UART1 or UART3 is configured in software, the jumpers on the AC320006 are
|
||||
the same, just the signal directions and UART changes.
|
||||
|
||||
UART1 UART3
|
||||
AC320006-JP7 connect pin 2 to pin 3. U1RX U3TX
|
||||
AC320006-JP8 connect pin 2 to pin 3. U1TX U3RX
|
||||
|
||||
For the default configuration using UART1 the PIC32MZ pin 106 (RPC14)
|
||||
will be configured as U1RX and is tied to the AC320006's JP7 Pin 2.
|
||||
With the jumpers as listed above, once the AC320006 is plugged into
|
||||
the DM320002, the PIC32MZ U1RX will be connected to the DM320002's
|
||||
J11 pin 43. The DM320002's J11 pin 43 should then be connected to
|
||||
the TX of a 3.3 volt TTL serial converter such as a FTDI TTL232RG.
|
||||
For the FTDI TTL232RG TX is the orange wire.
|
||||
|
||||
Likewise the PIC32MZ pin 31 (RPB3) will be configured as U1TX and
|
||||
is tied to the AC320006's JP8 Pin 2. With the jumpers as listed above,
|
||||
once the AC320006 is plugged into the DM320002, the PIC32MZ' U1TX will
|
||||
be connected to the DM320002's J11 pin 41. The DM320002's J11 pin 41
|
||||
should then be connected to the RX signal of a 3.3 volt TTL serial
|
||||
converter. For the FTDI TTL232RG RX is the yellow wire.
|
||||
|
||||
For the alternate configuration using UART3 the PIC32MZ pin 106 (RPC14)
|
||||
will be configured as U3TX and is tied to the AC320006's JP7 Pin 2.
|
||||
With the jumpers as listed above, once the AC320006 is plugged into
|
||||
the DM320002, the PIC32MZ U3TX will be connected to the DM320002's
|
||||
J11 pin 43. The DM320002's J11 pin 43 should then be connected to
|
||||
the RX of a 3.3 volt TTL serial converter such as a FTDI TTL232RG.
|
||||
For the FTDI TTL232RG TX is the yellow wire.
|
||||
|
||||
Likewise the PIC32MZ pin 31 (RPB3) will be configured as U3RX and
|
||||
is tied to the AC320006's JP8 Pin 2. With the jumpers as listed above,
|
||||
once the AC320006 is plugged into the DM320002, the PIC32MZ' U3RX will
|
||||
be connected to the DM320002's J11 pin 41. The DM320002's J11 pin 41
|
||||
should then be connected to the TX signal of a 3.3 volt TTL serial
|
||||
converter. For the FTDI TTL232RG RX is the orange wire.
|
||||
|
||||
board.h Header File Changes
|
||||
---------------------------
|
||||
The board configuration is currently set up to use the Serial console
|
||||
on the MEB-II board. If you want to use the adapter board directly,
|
||||
you willneed to change pic32mz-starterkit/include/board.h as follows:
|
||||
|
||||
-#define BOARD_U1RX_PPS U1RXR_RPA14
|
||||
-#define BOARD_U1TX_PPS U1TX_RPA15R
|
||||
+#define BOARD_U1RX_PPS U1RXR_RPC14
|
||||
+#define BOARD_U1TX_PPS U1TX_RPB3R
|
||||
|
||||
LEDs and Buttons
|
||||
================
|
||||
|
||||
LEDs
|
||||
----
|
||||
The PIC32MZ Ethernet Starter kit has 3 user LEDs labelled LED1-3 on the
|
||||
board:
|
||||
|
||||
PIN LED Notes
|
||||
--- ----- -------------------------
|
||||
RH0 LED1 High illuminates (RED)
|
||||
RH1 LED3 High illuminates (YELLOW)
|
||||
RH2 LED2 High illuminates (GREEN)
|
||||
|
||||
If CONFIG_ARCH_LEDS is defined, then NuttX will control these LEDs as
|
||||
follows:
|
||||
|
||||
ON OFF
|
||||
------------------------- ---- ---- ---- ---- ---- ----
|
||||
LED1 LED2 LED3 LED1 LED2 LED3
|
||||
------------------------- ---- ---- ---- ---- ---- ----
|
||||
LED_STARTED 0 OFF OFF OFF --- --- ---
|
||||
LED_HEAPALLOCATE 1 ON OFF N/C --- --- ---
|
||||
LED_IRQSENABLED 2 OFF ON N/C --- --- ---
|
||||
LED_STACKCREATED 3 ON ON N/C --- --- ---
|
||||
LED_INIRQ 4 N/C N/C ON N/C N/C OFF
|
||||
LED_SIGNAL 4 N/C N/C ON N/C N/C OFF
|
||||
LED_ASSERTION 4 N/C N/C ON N/C N/C OFF
|
||||
LED_PANIC 5 ON N/C N/C OFF N/C N/C
|
||||
|
||||
Buttons
|
||||
-------
|
||||
|
||||
The PIC32MZ Ethernet Starter kit has 3 user push buttons labelled SW1-3 on
|
||||
the board:
|
||||
|
||||
PIN LED Notes
|
||||
---- ---- -------------------------
|
||||
RB12 SW1 Active-low
|
||||
RB13 SW2 Active-low
|
||||
RB14 SW3 Active-low
|
||||
|
||||
The switches do not have any debounce circuitry and require internal pull-
|
||||
up resistors. When Idle, the switches are pulled high (+3.3V), and they
|
||||
are grounded when pressed.
|
||||
|
||||
Configurations
|
||||
==============
|
||||
|
||||
Information Common to All Configurations
|
||||
----------------------------------------
|
||||
|
||||
Each PIC32MZ configuration is maintained in a sub-directory and can be
|
||||
selected as follow:
|
||||
|
||||
tools/configure.sh [OPTIONS] pic32mz-starterkit:<subdir>
|
||||
|
||||
Where typical options are -l to configure to build on Linux or -c to
|
||||
configure for Cygwin under Linux. 'tools/configure.sh -h' will show
|
||||
you all of the options.
|
||||
|
||||
Before building, make sure the PATH environment variable includes the
|
||||
correct path to the directory than holds your toolchain binaries.
|
||||
|
||||
And then build NuttX by simply typing the following. At the conclusion of
|
||||
the make, the nuttx binary will reside in an ELF file called, simply,
|
||||
nuttx.
|
||||
|
||||
make
|
||||
|
||||
The <subdir> that is provided above as an argument to the tools/configure.sh
|
||||
must be is one of the following.
|
||||
|
||||
Configuration Directories
|
||||
-------------------------
|
||||
|
||||
nsh:
|
||||
|
||||
This is the NuttShell (NSH) using the NSH startup logic at
|
||||
apps/examples/nsh.
|
||||
|
||||
NOTES:
|
||||
|
||||
1. This configuration uses the mconf-based configuration tool. To
|
||||
change this configurations using that tool, you should:
|
||||
|
||||
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||
see additional README.txt files in the NuttX tools repository.
|
||||
|
||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||
reconfiguration process.
|
||||
|
||||
2. Serial Output
|
||||
|
||||
The OS test produces all of its test output on the serial console.
|
||||
This configuration has UART1 enabled as a serial console. This
|
||||
can easily be changed by reconfiguring with 'make menuconfig'.
|
||||
|
||||
3. Toolchain
|
||||
|
||||
By default, the Pinguino MIPs tool chain is used. This toolchain
|
||||
selection can easily be changed with 'make menuconfig'.
|
||||
|
||||
4. Default configuration: These are other things that you may want to
|
||||
change in the configuration:
|
||||
|
||||
CONFIG_ARCH_CHIP_PIC32MZ2048ECM=y : Assumes part with Crypto Engine
|
||||
CONFIG_PIC32MZ_DEBUGGER_ENABLE=n : Debugger is disabled
|
||||
CONFIG_PIC32MZ_TRACE_ENABLE=n : Trace is disabled
|
||||
CONFIG_PIC32MZ_JTAG_ENABLE=n : JTAG is disabled
|
||||
@@ -1,8 +1,412 @@
|
||||
==================
|
||||
pic32mz-starterkit
|
||||
==================
|
||||
===================
|
||||
PIC32MZ Starter Kit
|
||||
===================
|
||||
|
||||
.. include:: README.txt
|
||||
:literal:
|
||||
.. tags:: arch:mips, chip:pic32mz
|
||||
|
||||
Documentation for the NuttX port to the Microchip PIC32MZ Embedded Connectivity
|
||||
(EC) Starter Kit.
|
||||
|
||||
There are two configurations of the Microchip PIC32MZ Embedded Connectivity
|
||||
(EC) Starter Kit:
|
||||
|
||||
1. The PIC32MZ Embedded Connectivity Starter Kit based on the
|
||||
PIC32MZ2048ECH144-I/PH chip (DM320006), and
|
||||
2. The PIC32MZ Embedded Connectivity Starter Kit based on the
|
||||
PIC32MZ2048ECM144-I/PH w/Crypto Engine (DM320006-C)
|
||||
|
||||
See www.microchip.com for further information.
|
||||
|
||||
.. note::
|
||||
|
||||
As of this writing (2015-03-01), the basic port is complete including
|
||||
minimal support for the NuttShell (NSH) over UART1. No testing has yet
|
||||
been performed due to seemingly insurmountable debug problems:
|
||||
|
||||
Thusfar, no one has been successful using NuttX with MPLABX. All
|
||||
debug is being performed using a J-Link debugger via some custom
|
||||
interconnect boards.
|
||||
|
||||
Patches were provided by Kristopher Tate on 2015-03-21 that support the
|
||||
serial console with the NuttShell, completing the basic bring-up.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
* On-board crystal or oscillator for precision microcontroller clocking (24
|
||||
MHz).
|
||||
* 32 kHz oscillator for RTCC and Timer1 (optional).
|
||||
* Three push button switches for user-defined inputs.
|
||||
* Three user-defined indicator LEDs.
|
||||
* USB Type A receptacle connectivity for PIC32 host-based applications.
|
||||
* USB Type micro-AB receptacle for OTG and USB device connectivity for PIC32
|
||||
OTG/device-based applications.
|
||||
* Daughter board connectors for flexible Ethernet PHY options.
|
||||
* 50 MHz Ethernet PHY oscillator.
|
||||
* External 4 GB SQI memory for expanded memory applications.
|
||||
* PIC24FJ256GB106 USB microcontroller for on-board debugging.
|
||||
* USB connectivity for on-board debugger communications.
|
||||
* Regulated +3.3V power supply for powering the starter kit through USB or
|
||||
expansion board.
|
||||
* Connector for various expansion boards.
|
||||
|
||||
The PIC32MZ starter kit comes complete with a LAN8740 PHY daughter board.
|
||||
|
||||
Testing was performed with the following additional hardware:
|
||||
|
||||
* Microchip PIC32MZ Embedded Connectivity (EC) Adapter Board (AC320006)
|
||||
that allows connection of the PIC32MZEC Starter Kit to the Microchip
|
||||
Multimedia Expansion Board (MEB, DM320005) or PIC32 I/O Expansion Board
|
||||
(DM320002). These were previously used with the PIC32MX bringup.
|
||||
|
||||
* Microchip Multimedia Expansion Board II (MEB II, DM320005-2).
|
||||
|
||||
Buttons and LEDs
|
||||
================
|
||||
|
||||
The PIC32MZ Ethernet Starter kit has 3 user LEDs labelled LED1-3 on the
|
||||
board:
|
||||
|
||||
=== ===== =========================
|
||||
PIN LED Notes
|
||||
=== ===== =========================
|
||||
RH0 LED1 High illuminates (RED)
|
||||
RH1 LED3 High illuminates (YELLOW)
|
||||
RH2 LED2 High illuminates (GREEN)
|
||||
=== ===== =========================
|
||||
|
||||
If ``CONFIG_ARCH_LEDS`` is defined, then NuttX will control these LEDs as
|
||||
follows:
|
||||
|
||||
========================= ==== ==== ==== ==== ==== ====
|
||||
Status LED1 LED2 LED3 LED1 LED2 LED3
|
||||
========================= ==== ==== ==== ==== ==== ====
|
||||
LED_STARTED 0 OFF OFF OFF --- --- ---
|
||||
LED_HEAPALLOCATE 1 ON OFF N/C --- --- ---
|
||||
LED_IRQSENABLED 2 OFF ON N/C --- --- ---
|
||||
LED_STACKCREATED 3 ON ON N/C --- --- ---
|
||||
LED_INIRQ 4 N/C N/C ON N/C N/C OFF
|
||||
LED_SIGNAL 4 N/C N/C ON N/C N/C OFF
|
||||
LED_ASSERTION 4 N/C N/C ON N/C N/C OFF
|
||||
LED_PANIC 5 ON N/C N/C OFF N/C N/C
|
||||
========================= ==== ==== ==== ==== ==== ====
|
||||
|
||||
The PIC32MZ Ethernet Starter kit has 3 user push buttons labelled SW1-3 on the
|
||||
board:
|
||||
|
||||
==== ==== =========================
|
||||
PIN LED Notes
|
||||
==== ==== =========================
|
||||
RB12 SW1 Active-low
|
||||
RB13 SW2 Active-low
|
||||
RB14 SW3 Active-low
|
||||
==== ==== =========================
|
||||
|
||||
The switches do not have any debounce circuitry and require internal pull-up
|
||||
resistors. When idle, the switches are pulled high (+3.3V), and they are
|
||||
grounded when pressed.
|
||||
|
||||
Serial Console
|
||||
==============
|
||||
|
||||
MEB-II
|
||||
------
|
||||
|
||||
By default, the UART1 is configured for the pins used by the MEB-II board. The
|
||||
UART1 signals are available at the MEB-II PICTail connector:
|
||||
|
||||
=============== ========= ============== ============
|
||||
PIC32MZ PIN CONNECTOR MEB-II PIN PICTAIL PIN
|
||||
FUNCTION J1 NAME J2
|
||||
=============== ========= ============== ============
|
||||
RPA14/SCL1/RA14 124 SCL1/TOUCH_SCL 4
|
||||
RPA15/SDA1/RA15 126 SDA1/TOUCH_SDA 6
|
||||
+3.3V 1,26
|
||||
GND 28
|
||||
=============== ========= ============== ============
|
||||
|
||||
This pin selection is controlled by these definitions in
|
||||
``pic32mz-starterkit/include/board.h``:
|
||||
|
||||
.. code:: c
|
||||
|
||||
#define BOARD_U1RX_PPS U1RXR_RPA14
|
||||
#define BOARD_U1TX_PPS U1TX_RPA15R
|
||||
|
||||
PIC32MX I/O Expansion Board with Adapter Board
|
||||
----------------------------------------------
|
||||
|
||||
If the MEB-II UART configuration when used with the I/O Expansion board
|
||||
(with the adapter), then UART will be on J11 with Pin 35 being U1RX (into
|
||||
MZ) and Pin 37 being TU1X (out of MZ).
|
||||
|
||||
Directly from the Adapter Board
|
||||
-------------------------------
|
||||
|
||||
But you can get serial port directly from the PIC32MZ Embedded Connectivity (EC)
|
||||
Adapter Board (AC320006). The Microchip adapter board brings out UART signals as
|
||||
follows:
|
||||
|
||||
JP7 redirects J1 U3_TX to either J2 SOSCO/RC14 or U1_TX:
|
||||
|
||||
**Adapter**
|
||||
|
||||
JP7:
|
||||
|
||||
* Pin 1: J2 Pin 32, SOSCO/RC14
|
||||
* Pin 2: J1 Pin 17, U3_TX
|
||||
* Pin 3: J2 Pin 90, U1_TX
|
||||
|
||||
**PIC32MZ Starter Kit**
|
||||
|
||||
J1 Pin 17, SOSCO/RC14 PIC32MZ SOSCO/RPC14/T1CK/RC14
|
||||
|
||||
RPC14 supports U1RX, U4RX, and U3TX
|
||||
|
||||
JP8 redirects J1 RB3/AN3/SDO4/WIFI_SDI to either J2 AN3/SDO4/WIFI_SDI or U3_RX:
|
||||
|
||||
**Adapter**
|
||||
|
||||
JP8:
|
||||
|
||||
* Pin 1: J2, Pin 66
|
||||
* Pin 2: J1, Pin 105
|
||||
* Pin 3: J2, Pin 88
|
||||
|
||||
**PIC32MZ Starter Kit**
|
||||
|
||||
* AN3/SDO4/WIFI_SDI
|
||||
* RB3/AN3/SDO4/WIFI_SDI
|
||||
* U3_RX
|
||||
|
||||
**PIC32MZ Starter Kit**
|
||||
|
||||
J1, Pin 105, AN3/C2INA/RPB3/RB3
|
||||
|
||||
RPB3 supports U3RX, U1TX, and U5TX
|
||||
|
||||
Thus UART1 or UART3 could be used as a serial console if only the
|
||||
PIC32MZEC Adapter Board is connected.
|
||||
|
||||
The default serial configuration here in these configurations is UART1
|
||||
using RPC14 and RPB3. That UART selection can be change by running 'make
|
||||
menuconfig'. The UART pin selections would need to be changed by editing
|
||||
boards/pc32mz-starterkit/include/board.h.
|
||||
|
||||
If using a AC320006 by itself, JP7 pin 2 and JP8 pin 2 is where you would
|
||||
connect a 3.3 Volt TTL serial interface.
|
||||
|
||||
For a configuration using UART1 connect:
|
||||
|
||||
* TX to AC320006-JP7 pin 2 which is PIC32MZ pin 106 (RPC14) used as U1RX
|
||||
* RX to AC320006-JP8 pin 2 which is PIC32MZ pin 31 (RPB3)) used as U1TX
|
||||
|
||||
For a configuration using For UART3 connect:
|
||||
|
||||
* TX to AC320006-JP8 pin 2 which is PIC32MZ pin 31 (RPB3)) used as U3RX
|
||||
* RX to AC320006-JP7 pin 2 which is PIC32MZ pin 106 (RPC14) used as U3TX
|
||||
|
||||
If using a AC320006 plugged into a DM320002 then regardless of which UART,
|
||||
UART1 or UART3 is configured in software, the jumpers on the AC320006 are
|
||||
the same, just the signal directions and UART changes.
|
||||
|
||||
* AC320006-JP7 connect pin 2 to pin 3. U1RX U3TX
|
||||
* AC320006-JP8 connect pin 2 to pin 3. U1TX U3RX
|
||||
|
||||
For the default configuration using UART1 the PIC32MZ pin 106 (RPC14)
|
||||
will be configured as U1RX and is tied to the AC320006's JP7 Pin 2.
|
||||
With the jumpers as listed above, once the AC320006 is plugged into
|
||||
the DM320002, the PIC32MZ U1RX will be connected to the DM320002's
|
||||
J11 pin 43. The DM320002's J11 pin 43 should then be connected to
|
||||
the TX of a 3.3 volt TTL serial converter such as a FTDI TTL232RG.
|
||||
For the FTDI TTL232RG TX is the orange wire.
|
||||
|
||||
Likewise the PIC32MZ pin 31 (RPB3) will be configured as U1TX and
|
||||
is tied to the AC320006's JP8 Pin 2. With the jumpers as listed above,
|
||||
once the AC320006 is plugged into the DM320002, the PIC32MZ' U1TX will
|
||||
be connected to the DM320002's J11 pin 41. The DM320002's J11 pin 41
|
||||
should then be connected to the RX signal of a 3.3 volt TTL serial
|
||||
converter. For the FTDI TTL232RG RX is the yellow wire.
|
||||
|
||||
For the alternate configuration using UART3 the PIC32MZ pin 106 (RPC14)
|
||||
will be configured as U3TX and is tied to the AC320006's JP7 Pin 2.
|
||||
With the jumpers as listed above, once the AC320006 is plugged into
|
||||
the DM320002, the PIC32MZ U3TX will be connected to the DM320002's
|
||||
J11 pin 43. The DM320002's J11 pin 43 should then be connected to
|
||||
the RX of a 3.3 volt TTL serial converter such as a FTDI TTL232RG.
|
||||
For the FTDI TTL232RG TX is the yellow wire.
|
||||
|
||||
Likewise the PIC32MZ pin 31 (RPB3) will be configured as U3RX and
|
||||
is tied to the AC320006's JP8 Pin 2. With the jumpers as listed above,
|
||||
once the AC320006 is plugged into the DM320002, the PIC32MZ' U3RX will
|
||||
be connected to the DM320002's J11 pin 41. The DM320002's J11 pin 41
|
||||
should then be connected to the TX signal of a 3.3 volt TTL serial
|
||||
converter. For the FTDI TTL232RG RX is the orange wire.
|
||||
|
||||
board.h Header File Changes
|
||||
---------------------------
|
||||
|
||||
The board configuration is currently set up to use the serial console on the
|
||||
MEB-II board. If you want to use the adapter board directly, you will need to
|
||||
change ``pic32mz-starterkit/include/board.h`` as follows:
|
||||
|
||||
.. code:: diff
|
||||
|
||||
-#define BOARD_U1RX_PPS U1RXR_RPA14
|
||||
-#define BOARD_U1TX_PPS U1TX_RPA15R
|
||||
+#define BOARD_U1RX_PPS U1RXR_RPC14
|
||||
+#define BOARD_U1TX_PPS U1TX_RPB3R
|
||||
|
||||
On Board Debug Support
|
||||
======================
|
||||
|
||||
The starter kit includes a PIC24FJ256GB106 USB microcontroller that provides
|
||||
debugger connectivity over USB. The PIC24FJ256GB106 is hard-wired to the PIC32
|
||||
device to provide protocol translation through the I/O pins of the
|
||||
PIC24FJ256GB106 to the ICSP™ pins of the PIC32 device.
|
||||
|
||||
If MPLAB® REAL ICE™ or MPLAB ICD 3 is used with the starter kit, disconnect the
|
||||
onboard debugger from the PIC32 device by removing the jumper JP2. When the
|
||||
on-board debugger is required, replace the jumper JP2. When the jumper JP2 is
|
||||
installed, pin 1 must be connected to pin 3 and pin 2 must be connected to pin
|
||||
4.
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
Creating Compatible NuttX HEX files
|
||||
-----------------------------------
|
||||
|
||||
Intel Hex Format Files
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
When NuttX is built it will produce two files in the top-level NuttX
|
||||
directory:
|
||||
|
||||
1. ``nuttx``: This is an ELF file
|
||||
|
||||
2. ``nuttx.hex``: This is an Intel Hex format file. This is controlled by the
|
||||
setting ``CONFIG_INTELHEX_BINARY`` in the ``.config`` file.
|
||||
|
||||
The PICkit tool wants an Intel Hex format file to burn into FLASH. However,
|
||||
there is a problem with the generated ``nuttx.hex``: The tool expects the
|
||||
``nuttx.hex`` file to contain physical addresses. But the ``nuttx.hex`` file
|
||||
generated from the top-level make will have address in the ``KSEG0`` and
|
||||
``KSEG1`` regions.
|
||||
|
||||
tools/pic32/mkpichex
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
There is a simple tool in the NuttX tools/pic32 directory that can be
|
||||
used to solve both issues with the nuttx.hex file. But, first, you must
|
||||
build the tool:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ cd tools/pic32
|
||||
$ make -f Makefile.host
|
||||
|
||||
Now you will have an executable file called ``mkpichex`` (or ``mkpichex.exe`` on
|
||||
Cygwin). This program will take the ``nuttx.hex`` file as an input, it will
|
||||
convert all of the ``KSEG0`` and ``KSEG1`` addresses to physical address, and it
|
||||
will write the modified file, replacing the original ``nuttx.hex``.
|
||||
|
||||
To use this file, you need to do the following things:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ export PATH=??? # Add the NuttX tools/pic32 directory to your
|
||||
# PATH variable
|
||||
$ make # Build nuttx and nuttx.hex
|
||||
$ mkpichex $PWD # Convert addresses in nuttx.hex. $PWD is the path
|
||||
# to the top-level build directory. It is the only
|
||||
# required input to mkpichex.
|
||||
|
||||
This procedure is automatically performed at the end of a build.
|
||||
|
||||
Tool Issues
|
||||
-----------
|
||||
|
||||
Pinquino Toolchain
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you use the Pinguino toolchain, you will probably see this error:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ C:\pinguino-11\compilers\p32\bin\p32-ld.exe: target elf32-tradlittlemips not found
|
||||
|
||||
This is due to linker differences in the toolchains. The linker script at
|
||||
``boards/pic32mz-starterkit`` has:
|
||||
|
||||
.. code:: c
|
||||
|
||||
OUTPUT_FORMAT("elf32-tradlittlemips")
|
||||
|
||||
This error can be eliminated with the Pinguino toolchain by changing this to:
|
||||
|
||||
.. code:: c
|
||||
|
||||
OUTPUT_FORMAT("elf32-littlemips")
|
||||
|
||||
Mentor Toolchain
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
https://sourcery.mentor.com/GNUToolchain/release2934 tools.
|
||||
|
||||
If you use this toolchain, you will need to add ``CROSSDEV=mips-sde-elf-`` to
|
||||
your ``Make.defs`` file.
|
||||
|
||||
ICD3
|
||||
^^^^
|
||||
|
||||
The onboard debugger is Slow and one is better off using an ICD3. By removing
|
||||
jumper JP2, I can disable the on-board OpenHCD debugger an enable the RJ11
|
||||
debug connector. My ICD 3 does seems to work properly using this configuration,
|
||||
at least in the sense that it is recognized by both MPLABX IDE and IPE.
|
||||
|
||||
Segger J-Link
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
If using a Jlink that only these versions work with PIC32:
|
||||
|
||||
* J-Link BASE / EDU V9 or later
|
||||
* J-Link ULTRA+ / PRO V4 or later
|
||||
|
||||
Oddly, you must use the G version in the command:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ JLinkGDBServer -device PIC32MZ2048ECG144 -if 2-wire-JTAG-PIC32 -speed 12000
|
||||
|
||||
Even though we have PIC32MZ2048ECM144 parts on our board. (JLinkGDBServer will
|
||||
except anything and just mess up your weekend)
|
||||
|
||||
Configurations
|
||||
==============
|
||||
|
||||
You can use the following command to configure the NuttX build, where
|
||||
``<config>`` is one of the configurations listed below:
|
||||
|
||||
.. code:: console
|
||||
|
||||
$ tools/configure.sh pic32mz-starterkit:<config>
|
||||
|
||||
By default, the Pinguino MIPs tool chain is used. This toolchain selection can
|
||||
easily be changed with ``make menuconfig``.
|
||||
|
||||
nsh
|
||||
---
|
||||
|
||||
This is the NuttShell (NSH) using the NSH startup logic at
|
||||
``apps/examples/nsh``.
|
||||
|
||||
This configuration has UART1 enabled as a serial console. This can easily be
|
||||
changed by reconfiguring with ``make menuconfig``.
|
||||
|
||||
These are other things that you may want to change in the configuration:
|
||||
|
||||
* ``CONFIG_ARCH_CHIP_PIC32MZ2048ECM=y``: Assumes part with Crypto Engine
|
||||
* ``CONFIG_PIC32MZ_DEBUGGER_ENABLE=n``: Debugger is disabled
|
||||
* ``CONFIG_PIC32MZ_TRACE_ENABLE=n``: Trace is disabled
|
||||
* ``CONFIG_PIC32MZ_JTAG_ENABLE=n``: JTAG is disabled
|
||||
|
||||
Reference in New Issue
Block a user