993 lines
50 KiB
Plaintext
993 lines
50 KiB
Plaintext
configs/mirtoo README
|
|
=====================
|
|
|
|
This README file discusses the port of NuttX to the DTX1-4000L "Mirtoo" module.
|
|
This module uses MicroChip PIC32MX250F128D and the Dimitech DTX1-4000L EV-kit1
|
|
V2. See http://www.dimitech.com/ for further information.
|
|
|
|
Contents
|
|
========
|
|
|
|
PIC32MX250F128D Pin Out
|
|
Toolchains
|
|
Loading NuttX with ICD3
|
|
LED Usage
|
|
UART Usage
|
|
Analog Input
|
|
PIC32MX Configuration Options
|
|
Configurations
|
|
|
|
PIC32MX250F128D Pin Out
|
|
=======================
|
|
|
|
PIC32MX250F128D 44 pin package.
|
|
|
|
PIN PIC32 SIGNAL(s) BOARD SIGNAL/USAGE EV-Kit1 CONNECTION
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
1 RPB9/SDA1/CTED4/PMD3/RB9 FUNC3 FUNC3, to X3, pin3
|
|
RPB9 Peripheral pin selection RB9
|
|
SDA1 I2C1 data
|
|
CTED4 CTMU External Edge Input 4
|
|
PMD3 Parallel Master Port data bit 3
|
|
RB9 PORTB, Pin 9
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
2 RPC6/PMA1/RC6 FUNC5 FUNC5, to X3, pin5
|
|
RPC6 Peripheral pin selection RC6
|
|
PMA1 Parallel Master Port Address bit 1
|
|
RC6 PORTC, Pin 6
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
3 RPC7/PMA0/RC7 PEN, PGA117 ENA pin Not available off module
|
|
RPC7 Peripheral pin selection RC7 Not available
|
|
PMA0 Parallel Master Port Address bit 0 Not available
|
|
RC7 PORTC, Pin 7 Used for PGA117 ENA output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
4 RPC8/PMA5/RC8 LED0 Not available off module
|
|
RPC8 Peripheral Selection, PORTC, Pin 8 Not available
|
|
PMA5 Parallel Master Port Address bit 5 Not available
|
|
RC8 PORTC, Pin 8 Used to drive LED0
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
5 RPC9/CTED7/PMA6/RC9 LED1 Not available off module
|
|
RPC9 Peripheral Selection, PORTC, Pin 9 Not available
|
|
CTED7 CTMU External Edge Input 7 Not available
|
|
PMA6 Parallel Master Port Address bit 6 Not available
|
|
RC9 PORTC, Pin 9 Used to drive LED1
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
6 VSS VSS Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
7 VCAP VCAP Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
8 PGED2/RPB10/D+/CTED11/RB10 FUNC0 FUNC0, to FT230XS RXD and debug port
|
|
PGED2 Debug Channel 2 data Used at boot time for ICD3
|
|
RPB10 Peripheral Selection, PORTB, Pin 10 Used for UART RXD
|
|
D+ USB D+ Not available
|
|
CTED11 CTMU External Edge Input 11 Not available
|
|
RB10 PORTB, Pin 10 Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
9 PGEC2/RPB11/D-/RB11 FUNC1 FUNC1, to FT230XS TXD
|
|
PGEC2 Debug Channel 2 clock Used at boot time for ICD3
|
|
RPB11 Peripheral Selection, PORTB, Pin 11 Used for UART TXD
|
|
D- USB D- Not available
|
|
RB11 PORTB, Pin 11 Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
10 VUSB3V3 3.3V (via VBAT, Pin 1)
|
|
VUSB3V3 USB internal transceiver supply 3.3V
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
11 AN11/RPB13/CTPLS/PMRD/RB13 ~CSM SST25VF3032B Chip Select Not available off-module
|
|
AN11 Analog input channel 11 Not available
|
|
RPB13 Peripheral Selection, PORTB, Pin 12 Not available
|
|
CTPLS CTMU Pulse Output Not available
|
|
PMRD Parallel Master Port read strobe Not available
|
|
RB13 PORTB, Pin 12 Used for SST25VF3032B Chip Select
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
12 PGED/TMS/PMA10/RA10 DIN5 PORT5, to X7, pin 2
|
|
PGED4 Debug Channel 4 data (?) (also X13, pin6)
|
|
TMS JTAG Test mode select pin (?)
|
|
PMA10 Parallel Master Port Address bit 10 Not available
|
|
RA10 PORTA, Pin 10 May be used as GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
13 PGEC/TCK/CTED8/PMA7/RA7 DIN2 PORT2, to X4, pin 2
|
|
PGEC4 Debug Channel 4 clock Not available (also X13, pin5)
|
|
TCK JTAG test clock input pin May be used as JTAG clock input
|
|
CTED8 CTMU External Edge Input 8 May be used as CTMU input
|
|
PMA7 Parallel Master Port Address bit 7 Not available
|
|
RA7 PORTA, Pin 7 May be used as GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
14 CVREF/AN10/C3INB/RPB14/VBUSON/SCK1/CTED5/RB14 FUNC5 (through resistor) FUNC5, to X3, pin5
|
|
CVREFOUT Comparator Voltage Reference output
|
|
AN10 Analog input channel 10
|
|
C3INB Comparator 3 Input B
|
|
RPB14 Peripheral Selection, PORTB, Pin 14
|
|
VBUSON USB Host and OTG bus power control
|
|
SCK1 SPI1 clock
|
|
CTED5 CTMU External Edge Input 5
|
|
RB14 PORTB, Pin 14
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
15 AN9/C3INA/RPB15/SCK2/CTED6/PMCS1/RB15 SCK Not available off module
|
|
AN9 Analog input channel 9 Not available
|
|
C3INA Comparator 3 Input A Not available
|
|
RPB15 Peripheral Selection, PORTB, Pin 15 Not available
|
|
SCK2 SPI2 clock Used for SPI2 clock
|
|
CTED6 CTMU External Edge Input 6 Not available
|
|
PMCS1 Parallel Master Port Chip Select 1 Not available
|
|
RB15 PORTB, Pin 15 Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
16 AVSS AVSS Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
17 AVDD AVDD Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
18 ~MCLR ~MCLR, TC2030-NL, pin 1 Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
19 PGED3/VREF+/CVREF+/AN0/C3INC/RPA0/CTED1/PMD7/RA0 AIN PGA117 Vout
|
|
AN0 Analog input channel 0 AIN
|
|
RA0 PORTA, Pin 0 Not available
|
|
CVREF+ Comparator Voltage Reference (high) (?)
|
|
C3INC Comparator 3 Input C (?)
|
|
PMD7 Parallel Master Port data bit 7 Not available
|
|
CTED1 CTMU External Edge Input 1 Not available
|
|
PGED3 Debug Channel 3 data Not available
|
|
VREF+ Analog voltage reference (high) Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
20 PGEC3/VREF-/CVREF-/AN1/RPA1/CTED2/PMD6/RA1 SI Not available off module
|
|
PGEC3 Debug Channel 3 clock Not available
|
|
VREF- Analog voltage reference (low) Not available
|
|
CVREF- Comparator Voltage Reference (low) Not available
|
|
AN1 Analog input channel 1 Not available
|
|
RPA1 Peripheral Selection PORTA, Pin 1 Used for SI
|
|
CTED2 CTMU External Edge Input 2 Not available
|
|
PMD6 Parallel Master Port data bit 6 Not available
|
|
RA1 PORTA, Pin 1 Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
21 PGED1/AN2/C1IND/C2INB/C3IND/RPB0/PMD0/RB0 DIN6 PORT6, to X9, pin 2
|
|
PGED1 Debug Channel 1 data Not available (also X13, pin4)
|
|
AN2 Analog input channel 2 Not available (digital input only)
|
|
C1IND Comparator 1 Input D Not available (digital input only)
|
|
C2INB Comparator 2 Input B Not available (digital input only)
|
|
C3IND Comparator 3 Input D Not available (digital input only)
|
|
RPB0 Peripheral Selection PORTB, Pin 0 May be used for peripheral input
|
|
PMD0 Parallel Master Port data bit 0 Not available
|
|
RB0 PORTB, Pin 0 May be used for GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
22 PGEC1/AN3/C1INC/C2INA/RPB1/CTED12/PMD1/RB1 DIN7 PORT7, to X10, pin 2
|
|
PGEC1 Debug Channel 1 clock (?) (also X13, pin2)
|
|
AN3 Analog input channel 3 Not available (digital input only)
|
|
C1INC Comparator 1 Input C Not available (digital input only)
|
|
C2INA Comparator 2 Input A Not available (digital input only)
|
|
RPB1 Peripheral Selection, PORTB, Pin 1 May be used for peripheral input
|
|
PMD1 Parallel Master Port data bit 1 Not available
|
|
CTED12 CTMU External Edge Input 12 May be used as CTMU input
|
|
RB1 PORTB, Pin 1 May be used as GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
23 AN4/C1INB/C2IND/RPB2/SDA2/CTED13/PMD2/CNB2/RB2 DOUT0 PORT0, to X1, pin 2
|
|
AN4 Analog input channel 4 Not available (digital output only) (also X13, pin1)
|
|
C1INB Comparator 1 Input B Not available (digital output only)
|
|
C2IND Comparator 2 Input D Not available (digital output only)
|
|
RPB2 Peripheral Selection PORTB, Pin 2 May be used for peripheral output
|
|
SDA2 I2C2 data Not available(?)
|
|
CTED13 CTMU External Edge Input 13 Not available
|
|
PMD2 Parallel Master Port data bit 2 Not available
|
|
CNB2 PORTB, Pin 2 Change Notification Not available
|
|
RB2 PORTB, Pin 2 May be for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
24 AN5/C1INA/C2INC/RTCC/RPB3/SCL2/PMWR/CNB3/RB3 DOUT1 PORT1, to X2, pin 2
|
|
AN5 Analog input channel 5 Not available (digital output only) (also X13, pin3)
|
|
C1INA Comparator 1 Input A Not available (digital output only)
|
|
C2INC Comparator 2 Input C Not available (digital output only)
|
|
RTCC Real-Time Clock alarm output May be used for RTCC output
|
|
RPB3 Peripheral Selection, PORTB, Pin 3 May be used for peripheral output
|
|
SCL2 I2C2 clock (?)
|
|
PMWR Parallel Master Port write strobe Not available
|
|
CNB3 PORTB, Pin 3 Change Notification Not available
|
|
RB3 PORTB, Pin 3 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
25 AN6/RPC0/RC0 DOUT3 PORT3, to X5, pin 2
|
|
AN6 Analog input channel 6 Not available (digital output only) (also X13, pin7)
|
|
RPC0 Peripheral Selection, PORTC, Pin 0 May be used for peripheral output
|
|
RC0 PORTC, Pin 0 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
26 AN7/RPC1/RC1 DOUT4 PORT4, to X6, pin 2
|
|
AN7 Analog input channel 7 Not available (digital output only) (also X13, pin8)
|
|
RPC1 Peripheral Selection, PORTC, Pin 1 May be used for peripheral output
|
|
RC1 PORTC, Pin 1 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
27 AN8/RPC2/PMA2/RC2 DOUT5 PORT5, to X7, pin 2
|
|
AN8 Analog input channel 8 Not available (digital output only) (also X13, pin6)
|
|
RPC2 Peripheral Selection, PORTC, Pin 2 May be used for peripheral output
|
|
PMA2 Parallel Master Port Address bit 2 Not available
|
|
RC2 PORTC, Pin 2 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
28 VDD VDD Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
29 VSS VSS Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
30 OSC1/CLKI/RPA2/RA2 SO (R1) DIN0 (R2) Not available off module
|
|
OSC1 Oscillator crystal input Not available
|
|
CLKI External clock source input Not available
|
|
RPRA2 Peripheral Selection PORTA, Pin 2 Used for SO
|
|
RA2 PORTA, Pin 2 Not available
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
31 OSC2/CLKO/RPA3/RA3 DIN0 (R1) DIN3 (R2) PORT0, to X1, pin 2
|
|
OSC2 Oscillator crystal output Not available (also X13, pin1)
|
|
CLKO Oscillator crystal output Not available
|
|
RPA3 Peripheral Selection for PORTA, Pin 3 May be used for peripheral input
|
|
RA3 PORTA, Pin 3 May be used for GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
32 TDO/RPA8/PMA8/RA8 DIN3 (R1) S0 (R2) PORT3, to X5, pin 2
|
|
TDO JTAG test data output pin Not available (also X13, pin7)
|
|
RPA8 PORTA, Pin 8 May be used for peripheral input
|
|
PMA8 Parallel Master Port Address bit 8 Not available
|
|
RA8 PORTA, Pin 8 May be used for GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
33 SOSCI/RPB4/RB4 DOUT2 PORT2, to X4, pin 2
|
|
SOSCI 32.768 kHz crystal input Not available (also X13, pin5)
|
|
RPB4 Peripheral Seclection, PORTB, Pin 4 May be used for peripheral output
|
|
RB4 PORTB, Pin 4 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
34 SOSCO/RPA4/T1CK/CTED9/RA4 DIN1 PORT1, to X2, pin 2
|
|
SOSCO 32.768 kHz crystal output Not available (also X13, pin3)
|
|
RPA4 Peripheral Selection PORTA, Pin 4 May be used for peripheral input
|
|
T1CK Timer1 external clock input May be used for timer 1 input
|
|
CTED9 CTMU External Edge Input 9 May be used for CTMU input
|
|
RA4 PORTA, Pin 4 May be used as GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
35 TDI/RPA9/PMA9/RA9 DIN4 PORT4, to X6, pin 2
|
|
TDI JTAG test data input pin May be used for JTAG input (also X13, pin8)
|
|
RPA9 Peripheral Selection for PORTA, Pin 9 May be used for peripheral input
|
|
PMA9 Parallel Master Port Address bit 9 Not available
|
|
RA9 PORTA, Pin 9 May be used for GPIO input
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
36 AN12/RPC3/RC3 DOUT6 PORT6, to X9, pin 2
|
|
AN12 Analog input channel 12 Not available (digtial output only) (also X13, pin4)
|
|
RPC3 Peripheral Selection, PORTC, Pin 3 May be used for peripheral output
|
|
RC3 PORTC, Pin 3 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
37 RPC4/PMA4/RC4 DOUT7 PORT7, to X10, pin 2
|
|
RPC4 Peripheral Selection, PORTC, Pin 4 May be used for peripheral output (also X13, pin2)
|
|
PMA4 Parallel Master Port Address bit 4 Not available
|
|
RC4 PORTC, Pin 4 May be used for GPIO output
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
38 RPC5/PMA3/RC5 FUNC4 FUNC4, to X3, pin4
|
|
RPC5 Peripheral Selection, PORTC, Pin 5
|
|
PMA3 Parallel Master Port Address bit 3
|
|
RC5 PORTC, Pin 5
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
39 VSS VSS Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
40 VDD VDD Not available off module
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
41 RPB5/USBID/RB5 FUNC3 FUNC3, to X3, pin3
|
|
RPB5 Peripheral Selection, PORTB, Pin 5
|
|
USBID 41 USB OTG ID detect
|
|
RB5 41 PORTB, Pin 5
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
42 VBUS FUNC2 FUNC2, to X3, pin2
|
|
VBUS Analog USB bus power monitor
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
43 RPB7/CTED3/PMD5/INT0/RB7 PGA117 ~CSAI Not available off module
|
|
RPB7 Peripheral Selection, PORTB, Pin 7
|
|
CTED3 CTMU External Edge Input 3
|
|
PMD5 Parallel Master Port data bit 5
|
|
INT0 External Interrupt 0
|
|
RB7 PORTB, Pin 7
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
44 RPB8/SCL1/CTED10/PMD4/RB8 FUNC2 FUNC2
|
|
RPB8 PORTB, Pin 8
|
|
SCL1 I2C1 clock
|
|
CTED10 CTMU External Edge Input 10
|
|
PMD4 Parallel Master Port data bit 4
|
|
RB8 PORTB, Pin 8
|
|
--- ------------------------------------------------ ---------------------------------- ----------------------------------
|
|
|
|
Additional signals available via Peripheral Pin Selections (PPS)
|
|
----------------------------------------------------------------
|
|
|
|
REFCLKI Reference Input Clock
|
|
REFCLKO Reference Output Clock
|
|
IC1 Capture Inputs 1
|
|
IC2 Capture Inputs 2
|
|
IC3 Capture Inputs 3
|
|
IC4 Capture Inputs 4
|
|
IC5 Capture Inputs 5
|
|
OC1 Output Compare Output 1
|
|
OC2 Output Compare Output 2
|
|
OC3 Output Compare Output 3
|
|
OC4 Output Compare Output 4
|
|
OC5 Output Compare Output 5
|
|
OCFA Output Compare Fault A Input
|
|
OCFB Output Compare Fault B Input
|
|
INT1 External Interrupt 1
|
|
INT2 External Interrupt 2
|
|
INT3 External Interrupt 3
|
|
INT4 External Interrupt 4
|
|
T2CK Timer2 external clock input
|
|
T3CK Timer3 external clock input
|
|
T4CK Timer4 external clock input
|
|
T5CK Timer5 external clock input
|
|
U1CTS UART1 clear to send
|
|
U1RTS UART1 ready to send
|
|
U1RX UART1 receive
|
|
U1TX UART1 transmit
|
|
U2CTS UART2 clear to send
|
|
U2RTS UART2 ready to send
|
|
U2RX UART2 receive
|
|
U2TX UART2 transmit
|
|
SDI1 SPI1 data in
|
|
SDO1 SPI1 data out
|
|
SS1 SPI1 slave synchronization or frame pulse I/O
|
|
SDI2 SPI2 data in
|
|
SDO2 SPI2 data out
|
|
SS2 SPI2 slave synchronization or frame pulse I/O
|
|
C1OUT Comparator 1 Output
|
|
C2OUT Comparator 2 Output
|
|
C3OUT Comparator 3 Output
|
|
|
|
Toolchains
|
|
==========
|
|
|
|
Note that in addition to the configuration options listed below, the
|
|
toolchain can be configured using the kconfig-mconf utility ('make menuconfig')
|
|
or by passing CONFIG_MIPS32_TOOLCHAIN=<toolchain> to make, where
|
|
<toolchain> is one of GNU_ELF, MICROCHIPL, MICROCHIPW, MICROCHIPL_LITE,
|
|
MICROCHIPW_LITE, MICROCHIPOPENL or PINGUINOW as described below.
|
|
|
|
MPLAB/C32
|
|
---------
|
|
|
|
I am using the free, "Lite" version of the PIC32MX toolchain available
|
|
for download from the microchip.com web site. I am using the Windows
|
|
version. The MicroChip toolchain is the only toolchain currently
|
|
supported in these configurations, but it should be a simple matter to
|
|
adapt to other toolchains by modifying the Make.defs file include in
|
|
each configuration.
|
|
|
|
Toolchain Options:
|
|
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW - MicroChip full toolchain for Windows (C32)
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL - MicroChip full toolchain for Linux (C32)
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE - MicroChip LITE toolchain for Windows (C32)
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPL_LITE - MicroChip LITE toolchain for Linux (C32)
|
|
|
|
NOTE: The "Lite" versions of the toolchain does not support C++. Also
|
|
certain optimization levels are not supported by the Lite toolchain.
|
|
|
|
MicrochipOpen
|
|
-------------
|
|
|
|
An alternative, build-it-yourself toolchain is available here:
|
|
http://sourceforge.net/projects/microchipopen/ . These tools were
|
|
last updated circa 2010. NOTE: C++ support still not available
|
|
in this toolchain. Use this configuration option to select the microchipopen
|
|
toolchain:
|
|
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPOPENL - microchipOpen toolchain for Linux
|
|
|
|
And set the path appropriately in the PATH environment variable.
|
|
|
|
Building MicrochipOpen (on Linux)
|
|
---------------------------------
|
|
|
|
1) Get the build script from this location:
|
|
|
|
http://microchipopen.svn.sourceforge.net/viewvc/microchipopen/ccompiler4pic32/buildscripts/trunk/
|
|
|
|
2) Build the code using the build script, for example:
|
|
|
|
./build.sh -b v105_freeze
|
|
|
|
This will check out the selected branch and build the tools.
|
|
|
|
3) Binaries will then be available in a subdirectory with a name something like
|
|
pic32-v105-freeze-20120622/install-image/bin (depending on the current data
|
|
and the branch that you selected.
|
|
|
|
Note that the tools will have the prefix, mypic32- so, for example, the
|
|
compiler will be called mypic32-gcc.
|
|
|
|
Pinguino mips-elf / Generic 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
|
|
|
|
Support for the Pinguino mips-elf toolchain has been included in the Mirtoo
|
|
configurations. Use one of these configuration options to select the Pinguino
|
|
mips-elf toolchain:
|
|
|
|
CONFIG_MIPS32_TOOLCHAIN_PINGUINOW - Pinguino mips-elf toolchain for Windows
|
|
CONFIG_MIPS32_TOOLCHAIN_GNU_ELF - mips-elf toolchain for Linux or OS X
|
|
|
|
And set the path appropriately in the PATH environment variable. These tool
|
|
configurations are untested -- expect some additional integration issues.
|
|
Good luck!
|
|
|
|
This configuration will also work with any generic mips-elf GCC past version
|
|
4.6 or so.
|
|
|
|
MPLAB/C32 vs MPLABX/X32
|
|
-----------------------
|
|
|
|
It appears that Microchip is phasing out the MPLAB/C32 toolchain and replacing
|
|
it with MPLABX and XC32. At present, the XC32 toolchain is *not* compatible
|
|
with the NuttX build scripts. Here are some of the issues that I see when trying
|
|
to build with XC32:
|
|
|
|
1) Make.def changes: You have to change the tool prefix:
|
|
|
|
CROSSDEV=xc32-
|
|
|
|
2) debug.ld/release.ld: The linker expects some things that are not present in
|
|
the current linker scripts (or are expected with different names). Here
|
|
are some partial fixes:
|
|
|
|
Rename: kseg0_progmem to kseg0_program_mem
|
|
Rename: kseg1_datamem to kseg1_data_mem
|
|
|
|
Even then, there are more warnings from the linker and some undefined symbols
|
|
for non-NuttX code that resides in the unused Microchip libraries. See this
|
|
email thread at https://groups.yahoo.com/neo/groups/nuttx/conversations/messages/1458 for more
|
|
information. You will have to solve at least this undefined symbol problem if
|
|
you want to used the XC32 toolchain.
|
|
|
|
Windows Native Toolchains
|
|
-------------------------
|
|
|
|
NOTE: There are several limitations to using a Windows based toolchain in a
|
|
Cygwin environment. The three biggest are:
|
|
|
|
1. The Windows toolchain cannot follow Cygwin paths. Path conversions are
|
|
performed automatically in the Cygwin makefiles using the 'cygpath' utility
|
|
but you might easily find some new path problems. If so, check out 'cygpath -w'
|
|
|
|
2. Windows toolchains cannot follow Cygwin symbolic links. Many symbolic links
|
|
are used in Nuttx (e.g., include/arch). The make system works around these
|
|
problems for the Windows tools by copying directories instead of linking them.
|
|
But this can also cause some confusion for you: For example, you may edit
|
|
a file in a "linked" directory and find that your changes had no effect.
|
|
That is because you are building the copy of the file in the "fake" symbolic
|
|
directory. If you use a Windows toolchain, you should get in the habit of
|
|
making like this:
|
|
|
|
make clean_context all
|
|
|
|
An alias in your .bashrc file might make that less painful.
|
|
|
|
Loading NuttX with ICD3
|
|
========================
|
|
|
|
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/pic32mx/mkpichex:
|
|
----------------------
|
|
|
|
There is a simple tool in the NuttX tools/pic32mx directory that can be
|
|
used to solve both issues with the nuttx.hex file. But, first, you must
|
|
build the tool:
|
|
|
|
cd tools/pic32mx
|
|
make
|
|
|
|
Now you will have an excecutable file call 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/pic32mx 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.
|
|
|
|
LED Usage
|
|
=========
|
|
|
|
The Mirtoo module has 2 user LEDs labeled LED0 and LED1 in the schematics:
|
|
|
|
--- ----- --------------------------------------------------------------
|
|
PIN Board Notes
|
|
--- ----- --------------------------------------------------------------
|
|
RC8 LED0 Grounded, high value illuminates
|
|
RC9 LED1 Grounded, high value illuminates
|
|
|
|
The Dimitech DTX1-4000L EV-kit1 supports 3 more LEDs, but there are not
|
|
controllable from software.
|
|
|
|
If CONFIG_ARCH_LEDS is defined, then NuttX will control these LEDs as
|
|
follows:
|
|
ON OFF
|
|
------------------------- ---- ---- ---- ----
|
|
LED0 LED1 LED0 LED1
|
|
------------------------- ---- ---- ---- ----
|
|
LED_STARTED 0 OFF OFF --- ---
|
|
LED_HEAPALLOCATE 1 ON OFF --- ---
|
|
LED_IRQSENABLED 2 OFF ON --- ---
|
|
LED_STACKCREATED 3 ON ON --- ---
|
|
LED_INIRQ 4 ON N/C OFF N/C
|
|
LED_SIGNAL 4 ON N/C OFF N/C
|
|
LED_ASSERTION 4 ON N/C OFF N/C
|
|
LED_PANIC 4 ON N/C OFF N/C
|
|
|
|
UART Usage
|
|
==========
|
|
|
|
When mounted on the DTX1-4000L EV-kit1 board, serial output is avaiable through
|
|
an FT230X device via the FUNC0 and FUNC1 module outputs. If CONFIG_PIC32MX_UART2
|
|
is enabled, the src/pic32_boot will configure the UART2 pins as follows:
|
|
|
|
---------- ------ ----- ------ -------------------------
|
|
BOARD MODULE PIN SIGNAL NOTES
|
|
---------- ------ ----- ------ -------------------------
|
|
FT230X RXD FUNC0 RPB11 U2RX UART2 RX (Also PGEC2)
|
|
FT230X TXD FUNC1 RPB10 U2TX UART2 TX (Also PGED2)
|
|
|
|
However, since the FUNC0/1 pins are shared with the PGEC/D2, they cannot be used
|
|
for UART2 if you are also debugging with the ICD3. In that case, you may need
|
|
to switch to UART1.
|
|
|
|
If CONFIG_PIC32MX_UART1 is enabled, the src/pic32_boot will configure the UART
|
|
pins as follows. This will support communictions (via an external RS-232
|
|
driver) through X3 pins 4 and 5:
|
|
|
|
---------- ------ ----- ------ -------------------------
|
|
BOARD MODULE PIN SIGNAL NOTES
|
|
---------- ------ ----- ------ -------------------------
|
|
X3, pin 4 FUNC4 RPBC5 U1TX UART1 TX
|
|
X3, pin 5 FUNC5 RPBC6 U1RX UART1 RX
|
|
|
|
If you are not using MPLAB to debug, you may also want to change Make.defs
|
|
to use the release.ld linker script instead of the debug.ld link script. This
|
|
change will give you a little more memory by re-using the boot FLASH and SRAM
|
|
that would otherwise be reserved for MPLAB.
|
|
|
|
Analog Input
|
|
============
|
|
|
|
The Mirtoo features a PGA117 amplifier/multipexer that can be configured to
|
|
bring any analog signal from PORT0,.. PORT7 to pin 19 of the PIC32MX:
|
|
|
|
--- ------------------------------------------------ ----------------------------
|
|
PIN PIC32 SIGNAL(s) BOARD SIGNAL/USAGE
|
|
--- ------------------------------------------------ ----------------------------
|
|
19 PGED3/VREF+/CVREF+/AN0/C3INC/RPA0/CTED1/PMD7/RA0 AIN PGA117 Vout
|
|
--- ------------------------------------------------ ----------------------------
|
|
|
|
The PGA117 driver can be enabled by setting the following the nsh
|
|
configuration:
|
|
|
|
CONFIG_ADC=y : Enable support for analog input devices
|
|
CONFIG_PIC32MX_ADC=y : Enable support the PIC32 ADC driver
|
|
CONFIG_ADC_PGA11X=y : Enable support for the PGA117
|
|
|
|
When CONFIG_PIC32MX_ADC=y is defined, the Mirtoo boot up logic will
|
|
automatically configure pin 18 (AN0) as an analog input (see configs/mirtoo/src/up_adc.c).
|
|
To initializee and use the PGA117, you to add logic something like the
|
|
following in your application code:
|
|
|
|
#include <nuttx/spi/spi.h>
|
|
#include <nuttx/analog/pga11x.h>
|
|
|
|
FAR struct spi_dev_s *spi;
|
|
PGA11X_HANDLE handle;
|
|
|
|
/* Get the SPI port */
|
|
|
|
spi = pic32mx_spibus_initialize(2);
|
|
if (!spi)
|
|
{
|
|
_err("ERROR: Failed to initialize SPI port 2\n");
|
|
return -ENODEV;
|
|
}
|
|
|
|
/* Now bind the SPI interface to the PGA117 driver */
|
|
|
|
handle = pga11x_initialize(spi);
|
|
if (!handle)
|
|
{
|
|
_err("ERROR: Failed to bind SPI port 2 to the PGA117 driver\n");
|
|
return -ENODEV;
|
|
}
|
|
|
|
After that initialization is set, then one of PORT0-7 can be select as
|
|
an analog input to AN0 like:
|
|
|
|
struct pga11x_settings_s settings;
|
|
int ret;
|
|
|
|
settings.channel = PGA11X_CHAN_CH2;
|
|
settings.gain = PGA11X_GAIN_2;
|
|
|
|
ret = pga11x_select(handle, &settings);
|
|
if (ret < 0)
|
|
{
|
|
_err("ERROR: Failed to select channel 2, gain 2\n");
|
|
return -EIO;
|
|
}
|
|
|
|
The above logic may belong in configs/mirtoo/src/up_adc.c?
|
|
|
|
There is still one missing piece to complete the analog support on the
|
|
Mirtoo. This is the ADC driver that collects analog data and provides
|
|
and ADC driver that can be used with standard open, close, read, and write
|
|
interfaces. To complete this driver, the following is needed:
|
|
|
|
(1) arch/mips/src/pic32mx/pic32mx-adc.c. The ADC driver that implements
|
|
the ADC interfaces defined in include/nuttx/analog/adc.h and must
|
|
be built when CONFIG_PIC32MX_ADC is defined.
|
|
|
|
(2) configs/mirtoo/up_adc.c. Add Mirtoo logic that initializes and
|
|
registers the ADC driver.
|
|
|
|
A complete ADC driver will be a considerable amount of work to support
|
|
all of the ADC features (such as timer driven sampling). If all you want
|
|
to do is a simple analog conversion, then in lieu of a real ADC driver,
|
|
you can use simple in-line logic such as you can see in the PIC32MX7 MMB
|
|
touchscreen driver at configs/pic32mx7mmb/src/up_touchscreen.c
|
|
|
|
PIC32MX Configuration Options
|
|
=============================
|
|
|
|
General Architecture Settings:
|
|
|
|
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
|
be set to:
|
|
|
|
CONFIG_ARCH=mips
|
|
|
|
CONFIG_ARCH_family - For use in C code:
|
|
|
|
CONFIG_ARCH_MIPS=y
|
|
|
|
CONFIG_ARCH_architecture - For use in C code:
|
|
|
|
CONFIG_ARCH_MIPS32=y
|
|
|
|
CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory
|
|
|
|
CONFIG_ARCH_CHIP=pic32mx
|
|
|
|
CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
|
|
chip:
|
|
|
|
CONFIG_ARCH_CHIP_PIC32MX250F128D=y
|
|
|
|
CONFIG_ARCH_BOARD - Identifies the configs subdirectory and
|
|
hence, the board that supports the particular chip or SoC.
|
|
|
|
CONFIG_ARCH_BOARD=mirtoo
|
|
|
|
CONFIG_ARCH_BOARD_name - For use in C code
|
|
|
|
CONFIG_ARCH_BOARD_MIRTOO=y
|
|
|
|
CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
|
|
of delay loops
|
|
|
|
CONFIG_ENDIAN_BIG - define if big endian (default is little
|
|
endian)
|
|
|
|
CONFIG_RAM_SIZE - Describes the installed DRAM (CPU SRAM in this case):
|
|
|
|
CONFIG_RAM_SIZE=(32*1024) (32Kb)
|
|
|
|
There is an additional 32Kb of SRAM in AHB SRAM banks 0 and 1.
|
|
|
|
CONFIG_RAM_START - The start address of installed DRAM
|
|
|
|
CONFIG_RAM_START=0xa0000000
|
|
|
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
|
have LEDs
|
|
|
|
CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
|
|
stack. If defined, this symbol is the size of the interrupt
|
|
stack in bytes. If not defined, the user task stacks will be
|
|
used during interrupt handling.
|
|
|
|
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
|
|
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to board architecture.
|
|
|
|
CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
|
|
cause a 100 second delay during boot-up. This 100 second delay
|
|
serves no purpose other than it allows you to calibratre
|
|
CONFIG_ARCH_LOOPSPERMSEC. You simply use a stop watch to measure
|
|
the 100 second delay then adjust CONFIG_ARCH_LOOPSPERMSEC until
|
|
the delay actually is 100 seconds.
|
|
|
|
PIC32MX Configuration
|
|
|
|
CONFIG_PIC32MX_MVEC - Select muli- vs. single-vectored interrupts
|
|
|
|
Individual subsystems can be enabled:
|
|
|
|
CONFIG_PIC32MX_WDT - Watchdog timer
|
|
CONFIG_PIC32MX_T2 - Timer 2 (Timer 1 is the system time and always enabled)
|
|
CONFIG_PIC32MX_T3 - Timer 3
|
|
CONFIG_PIC32MX_T4 - Timer 4
|
|
CONFIG_PIC32MX_T5 - Timer 5
|
|
CONFIG_PIC32MX_IC1 - Input Capture 1
|
|
CONFIG_PIC32MX_IC2 - Input Capture 2
|
|
CONFIG_PIC32MX_IC3 - Input Capture 3
|
|
CONFIG_PIC32MX_IC4 - Input Capture 4
|
|
CONFIG_PIC32MX_IC5 - Input Capture 5
|
|
CONFIG_PIC32MX_OC1 - Output Compare 1
|
|
CONFIG_PIC32MX_OC2 - Output Compare 2
|
|
CONFIG_PIC32MX_OC3 - Output Compare 3
|
|
CONFIG_PIC32MX_OC4 - Output Compare 4
|
|
CONFIG_PIC32MX_OC5 - Output Compare 5
|
|
CONFIG_PIC32MX_I2C1 - I2C 1
|
|
CONFIG_PIC32MX_I2C2 - I2C 2
|
|
CONFIG_PIC32MX_SPI1 - SPI 1
|
|
CONFIG_PIC32MX_SPI2 - SPI 2
|
|
CONFIG_PIC32MX_UART1 - UART 1
|
|
CONFIG_PIC32MX_UART2 - UART 2
|
|
CONFIG_PIC32MX_ADC - ADC 1
|
|
CONFIG_PIC32MX_PMP - Parallel Master Port
|
|
CONFIG_PIC32MX_CM1 - Comparator 1
|
|
CONFIG_PIC32MX_CM2 - Comparator 2
|
|
CONFIG_PIC32MX_CM3 - Comparator 3
|
|
CONFIG_PIC32MX_RTCC - Real-Time Clock and Calendar
|
|
CONFIG_PIC32MX_DMA - DMA
|
|
CONFIG_PIC32MX_FLASH - FLASH
|
|
CONFIG_PIC32MX_USBDEV - USB device
|
|
CONFIG_PIC32MX_USBHOST - USB host
|
|
CONFIG_PIC32MX_CTMU - CTMU
|
|
|
|
PIC32MX Configuration Settings
|
|
DEVCFG0:
|
|
CONFIG_PIC32MX_DEBUGGER - Background Debugger Enable. Default 3 (disabled). The
|
|
value 2 enables.
|
|
CONFIG_PIC32MX_ICESEL - In-Circuit Emulator/Debugger Communication Channel Select
|
|
Default 1 (PG2)
|
|
CONFIG_PIC32MX_PROGFLASHWP - Program FLASH write protect. Default 0xff (disabled)
|
|
CONFIG_PIC32MX_BOOTFLASHWP - Default 1 (disabled)
|
|
CONFIG_PIC32MX_CODEWP - Default 1 (disabled)
|
|
DEVCFG1: (All settings determined by selections in board.h)
|
|
DEVCFG2: (All settings determined by selections in board.h)
|
|
DEVCFG3:
|
|
CONFIG_PIC32MX_USBIDO - USB USBID Selection. Default 1 if USB enabled
|
|
(USBID pin is controlled by the USB module), but 0 (GPIO) otherwise.
|
|
CONFIG_PIC32MX_VBUSIO - USB VBUSON Selection (Default 1 if USB enabled
|
|
(VBUSON pin is controlled by the USB module, but 0 (GPIO) otherwise.
|
|
CONFIG_PIC32MX_WDENABLE - Enabled watchdog on power up. Default 0 (watchdog
|
|
can be enabled later by software).
|
|
|
|
The priority of interrupts may be specified. The value ranage of
|
|
priority is 4-31. The default (16) will be used if these any of these
|
|
are undefined.
|
|
|
|
CONFIG_PIC32MX_CTPRIO - Core Timer Interrupt
|
|
CONFIG_PIC32MX_CS0PRIO - Core Software Interrupt 0
|
|
CONFIG_PIC32MX_CS1PRIO - Core Software Interrupt 1
|
|
CONFIG_PIC32MX_INT0PRIO - External Interrupt 0
|
|
CONFIG_PIC32MX_INT1PRIO - External Interrupt 1
|
|
CONFIG_PIC32MX_INT2PRIO - External Interrupt 2
|
|
CONFIG_PIC32MX_INT3PRIO - External Interrupt 3
|
|
CONFIG_PIC32MX_INT4PRIO - External Interrupt 4
|
|
CONFIG_PIC32MX_FSCMPRIO - Fail-Safe Clock Monitor
|
|
CONFIG_PIC32MX_T1PRIO - Timer 1 (System timer) priority
|
|
CONFIG_PIC32MX_T2PRIO - Timer 2 priority
|
|
CONFIG_PIC32MX_T3PRIO - Timer 3 priority
|
|
CONFIG_PIC32MX_T4PRIO - Timer 4 priority
|
|
CONFIG_PIC32MX_T5PRIO - Timer 5 priority
|
|
CONFIG_PIC32MX_IC1PRIO - Input Capture 1
|
|
CONFIG_PIC32MX_IC2PRIO - Input Capture 2
|
|
CONFIG_PIC32MX_IC3PRIO - Input Capture 3
|
|
CONFIG_PIC32MX_IC4PRIO - Input Capture 4
|
|
CONFIG_PIC32MX_IC5PRIO - Input Capture 5
|
|
CONFIG_PIC32MX_OC1PRIO - Output Compare 1
|
|
CONFIG_PIC32MX_OC2PRIO - Output Compare 2
|
|
CONFIG_PIC32MX_OC3PRIO - Output Compare 3
|
|
CONFIG_PIC32MX_OC4PRIO - Output Compare 4
|
|
CONFIG_PIC32MX_OC5PRIO - Output Compare 5
|
|
CONFIG_PIC32MX_I2C1PRIO - I2C 1
|
|
CONFIG_PIC32MX_I2C2PRIO - I2C 2
|
|
CONFIG_PIC32MX_SPI1PRIO - SPI 1
|
|
CONFIG_PIC32MX_SPI2PRIO - SPI 2
|
|
CONFIG_PIC32MX_UART1PRIO - UART 1
|
|
CONFIG_PIC32MX_UART2PRIO - UART 2
|
|
CONFIG_PIC32MX_CN - Input Change Interrupt
|
|
CONFIG_PIC32MX_ADCPRIO - ADC1 Convert Done
|
|
CONFIG_PIC32MX_PMPPRIO - Parallel Master Port
|
|
CONFIG_PIC32MX_CM1PRIO - Comparator 1
|
|
CONFIG_PIC32MX_CM2PRIO - Comparator 2
|
|
CONFIG_PIC32MX_FSCMPRIO - Fail-Safe Clock Monitor
|
|
CONFIG_PIC32MX_RTCCPRIO - Real-Time Clock and Calendar
|
|
CONFIG_PIC32MX_DMA0PRIO - DMA Channel 0
|
|
CONFIG_PIC32MX_DMA1PRIO - DMA Channel 1
|
|
CONFIG_PIC32MX_DMA2PRIO - DMA Channel 2
|
|
CONFIG_PIC32MX_DMA3PRIO - DMA Channel 3
|
|
CONFIG_PIC32MX_FCEPRIO - Flash Control Event
|
|
CONFIG_PIC32MX_USBPRIO - USB
|
|
|
|
PIC32MXx specific device driver settings
|
|
|
|
CONFIG_UARTn_SERIAL_CONSOLE - selects the UARTn for the
|
|
console and ttys0 (default is the UART0).
|
|
CONFIG_UARTn_RXBUFSIZE - Characters are buffered as received.
|
|
This specific the size of the receive buffer
|
|
CONFIG_UARTn_TXBUFSIZE - Characters are buffered before
|
|
being sent. This specific the size of the transmit buffer
|
|
CONFIG_UARTn_BAUD - The configure BAUD of the UART. Must be
|
|
CONFIG_UARTn_BITS - The number of bits. Must be either 7 or 8.
|
|
CONFIG_UARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
|
|
CONFIG_UARTn_2STOP - Two stop bits
|
|
|
|
PIC32MXx USB Device Configuration
|
|
|
|
PIC32MXx USB Host Configuration (the PIC32MX does not support USB Host)
|
|
|
|
Configurations
|
|
==============
|
|
|
|
Each PIC32MX configuration is maintained in a sub-directory and can be
|
|
selected as follow:
|
|
|
|
cd tools
|
|
./configure.sh mirtoo/<subdir>
|
|
cd -
|
|
|
|
Where <subdir> is one of the following:
|
|
|
|
nsh
|
|
|
|
This configuration directory holds configuration files tht can
|
|
be used to support the NuttShell (NSH). This configuration use
|
|
UART1 which is available on FUNC 4 and 5 on connector X3:
|
|
|
|
CONFIG_PIC32MX_UART1=y : UART1 for serial console
|
|
CONFIG_UART1_SERIAL_CONSOLE=n
|
|
|
|
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. UART2
|
|
|
|
If you are not using MPLAB to debug, you may switch to UART2
|
|
by modifying the NuttX configuration to disable UART1 and to
|
|
select UART2. You should also change Make.defs to use the
|
|
release.ld linker script instead of the debug.ld link script.
|
|
|
|
3. This configuration also uses the Microchip C32 toolchain under
|
|
windows by default:
|
|
|
|
CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE=y : Lite version of windows toolchain
|
|
|
|
To switch to the Linux C32 toolchain you will have to change (1) the
|
|
toolchain selection in .config (after configuration) and (2) the
|
|
path to the toolchain in the PATH environment variable. See notes above
|
|
with regard to the XC32 toolchain.
|
|
|
|
4. PGA117 Support
|
|
|
|
The Mirtoo's PGA117 amplifier/multiplexer is not used by this configuration
|
|
but can be enabled by setting:
|
|
|
|
CONFIG_ADC=y : Enable support for analog input devices
|
|
CONFIG_ADC_PGA11X=y : Enable support for the PGA117
|
|
|
|
nxffs
|
|
|
|
This is a configuration very similar to the nsh configuration. This
|
|
configure also provides the NuttShell (NSH). And this configuration use
|
|
UART1 which is available on FUNC 4 and 5 on connector X3 (as described
|
|
for the nsh configuration). This configuration differs from the nsh
|
|
configuration in the following ways:
|
|
|
|
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. It uses the Pinguino toolchain be default (this is easily changed,
|
|
see above).
|
|
|
|
CONFIG_MIPS32_TOOLCHAIN_PINGUINOW=y
|
|
|
|
3. SPI2 is enabled and support is included for the NXFFS file system
|
|
on the 32Mbit SST25 device on the Mirtoo board. NXFFS is the NuttX
|
|
wear-leveling file system.
|
|
|
|
CONFIG_PIC32MX_SPI2=y
|
|
CONFIG_MTD_SST25=y
|
|
CONFIG_SST25_SECTOR512=y
|
|
CONFIG_DISABLE_MOUNTPOINT=n
|
|
CONFIG_FS_NXFFS=y
|
|
CONFIG_NSH_ARCHINIT=y
|
|
|
|
4. Many operating system features are suppressed to produce a smaller
|
|
footprint.
|
|
|
|
CONFIG_SCHED_WAITPID=n
|
|
CONFIG_DISABLE_POSIX_TIMERS=y
|
|
CONFIG_DISABLE_PTHREAD=y
|
|
CONFIG_DISABLE_MQUEUE=y
|
|
CONFIG_DISABLE_MQUEUE=y
|
|
|
|
5. Many NSH commands are suppressed, also for a smaller FLASH footprint
|
|
|
|
CONFIG_NSH_DISABLESCRIPT=y
|
|
CONFIG_NSH_DISABLEBG=y
|
|
|
|
CONFIG_NSH_DISABLE_DD=y
|
|
CONFIG_NSH_DISABLE_EXEC=y
|
|
CONFIG_NSH_DISABLE_EXIT=y
|
|
CONFIG_NSH_DISABLE_GET=y
|
|
CONFIG_NSH_DISABLE_IFCONFIG=y
|
|
CONFIG_NSH_DISABLE_KILL=y
|
|
CONFIG_NSH_DISABLE_MKFIFO=y
|
|
CONFIG_NSH_DISABLE_MKRD=y
|
|
CONFIG_NSH_DISABLE_PUT=y
|
|
CONFIG_NSH_DISABLE_SH=y
|
|
CONFIG_NSH_DISABLE_TEST=y
|
|
CONFIG_NSH_DISABLE_WGET=y
|
|
|
|
When the system boots, you should have the NXFFS file system mounted
|
|
at /mnt/sst25.
|
|
|
|
NOTES:
|
|
|
|
a) It takes many seconds to boot the sytem using the NXFFS
|
|
file system because the entire FLASH must be verified on power up
|
|
(and longer the first time that NXFFS comes up and has to format the
|
|
entire FLASH).
|
|
b) FAT does not have these delays and this configuration can be modified
|
|
to use the (larger) FAT file system as described below. But you will,
|
|
or course, lose the wear-leveling feature if FAT is used.
|
|
|
|
6. FAT
|
|
|
|
There is no FAT configuration, but the nxffx configuration can be used
|
|
to support the FAT FS if the following changes are made to the NuttX
|
|
configuration file:
|
|
|
|
CONFIG_FS_NXFFS=n
|
|
CONFIG_FS_FAT=y
|
|
CONFIG_NSH_DISABLE_MKFATFS=n
|
|
|
|
In this configuration, the FAT file system will not be automatically
|
|
mounted. When NuttX boots to the NSH prompt, you will find the
|
|
SST5 block driver at /dev/mtdblock0. This can be formatted with a
|
|
FAT file system and mounted with these commands:
|
|
|
|
nsh> mkfatfs /dev/mtdblock0
|
|
nsh> mount -t vfat /dev/mtdblock0 /mnt/sst25
|
|
|
|
7. PGA117 Support
|
|
|
|
The Mirtoo's PGA117 amplifier/multipexer is not used by this
|
|
configuration but can be enabled by setting:
|
|
|
|
CONFIG_ADC=y : Enable support for anlog input devices
|
|
CONFIG_ADC_PGA11X=y : Enable support for the PGA117
|