This is an automated email from the ASF dual-hosted git repository. simbit18 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 56112efbd3f5027dda1cf8498c94f8e3b311e80a Author: Matteo Golin <[email protected]> AuthorDate: Sat Feb 14 14:41:53 2026 -0500 docs/pic32mz-starterkit: Migrate README.txt to RST Migrate legacy README.txt to RST format. Signed-off-by: Matteo Golin <[email protected]> --- .../pic32mz/boards/pic32mz-starterkit/README.txt | 422 --------------------- .../pic32mz/boards/pic32mz-starterkit/index.rst | 414 +++++++++++++++++++- 2 files changed, 409 insertions(+), 427 deletions(-) diff --git a/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/README.txt b/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/README.txt deleted file mode 100644 index f8fb5e487f6..00000000000 --- a/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/README.txt +++ /dev/null @@ -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 diff --git a/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/index.rst b/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/index.rst index a702117e0b2..04f88587a22 100644 --- a/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/index.rst +++ b/Documentation/platforms/mips/pic32mz/boards/pic32mz-starterkit/index.rst @@ -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
