MCUXpresso Community Articles

cancel
Showing results for 
Search instead for 
Did you mean: 

MCUXpresso Community Articles

NXP Employee
NXP Employee

We are pleased to announce that MCUXpresso Config Tools v8 are now available.

 

MCUXpresso Configuration Tools is a product with set of tools that help users of all levels with a Cortex-M-based MCU solution.

Features

  • Available as Web, Desktop application and MCUXpresso IDE plug-ins
  • MCUXpresso SDK v2 support
  • Multicore support
  • GUI localized for English and Simplified Chinese
  • On-Demand device data download for latest features and support
  • Integrated directly within MCUXpresso IDE, standalone version supports other compilers and IDEs
  • Currently there are the following tools available

    MCUXConfigTools_BD.jpg
  • Downloads

     

     

    Revision History

    8.0

    • Pins tool:

      • Added Expansion headers support.

      • Added muxing alt function details in HTML report.

    • TEE tool:

      • Added MPU (Memory Protection Unit) support.

      • Validations of peripherals security configuration vs interrupts security configuration.

      • Validations of linker map file vs TEE configuration

      • Added ability to generate ROM preset data instead of C code

    • Peripherals tool:

      • Register initialization introduced

      • Quick fix button added next to the problematic part of component when fix is available

    • Device Configuration tool:

      • Added support for Cut, Copy and Paste of DCD commands

      • Improved editing with 'Write - clear and set bits' dialog

    • Memory Validation Tool

      • (MCUXpresso IDE only): Added FCB Validation tool, with RT support (untested support for RT600)

    • Project Cloner in New Configuration Wizard

      • Added support for CodeWarrior examples from DSC SDK

  • Community

    MCUXpresso Config Tools

     

    MCUXpresso Config Tools Data

    The Data for MCUXpresso Config Tools v8 was successfully deployed on the production system.

     

    What’s new in data

    • 338 Kinetis, LPC, QN and i.MX processors and 229 boards supported in total
    • Updated code generated by Pins, Clocks and Peripherals tool to support SDK v2.8 API
    • Pins tool
      • Support for expansion headers (e.g. Arduino) for selected boards
    • Peripherals tool
      • Support for FreeMASTER, FatFS, littleFS and debug console components
      • Support for FlexSPI Configuration Block (FCB) component, improved Smart External Memory Controller (SEMC) component
      • Support for RT1010 processors in USB component
      • Added example code of interrupt service routine (reading and clearing of interrupt flags) in interrupt handler reference code (for selected components)
      • Support for user symbols and includes generated in peripherals.h
    • TEE tool
      • Added support of MPU
    • Various other small improvements and bug fixes of Pins, Clocks and Peripherals tool

     

    Supported processors, boards, kits and Peripherals tool components

     

    Components:

     

    Components

    acmp

    adc_12b1msps

    adc_etc

    adc12

    adc16

    aoi

    cadc

    capt

    cau3

    cmp_1

    cmp

    cmt

    cop

    crc

    csi

    ctimer

    dac_1

    dac

    dcp

    debug_console

    dma

    dmic

    dspi

    edma

    eeprom

    elcdif

    enc

    ewm

    fatfs

    fcb

    flexbus

    flexcan

    flexcomm_i2c

    flexcomm_i2s

    flexcomm_spi

    flexcomm_usart

    flexio_i2c

    flexio_i2s

    flexio_mculcd

    flexio_spi

    flexio_uart

    flexspi

    freemaster

    ftm

    generic_can

    generic_uart

    gint

    gpio

    gpt

    hashcrypt

    hsadc

    i2c

    i3c

    igpio

    kpp

    lcdif

    littlefs

    llwu

    lpadc

    lpc_acomp

    lpc_adc

    lpc_crc

    lpc_dac

    lpc_dma

    lpc_gpio

    lpc_i2c

    lpc_lcdc

    lpc_minispi

    lpc_miniusart

    lpc_rtc

    lpc_spi

    lpcmp

    lpi2c

    lpit

    lpsci

    lpspi

    lptmr

    lpuart

    mcan

    mipi_dsi

    mrt

    msg

    mu

    nfc

    ostimer

    otfad

    pdb

    pint

    pit

    plu

    pwm

    qtmr_2

    qtmr

    rit

    rnga

    rtc

    rtwdog

    sai

    sctimer

    semc

    sha

    slcd

    snvs_hp

    snvs_lp

    spdif

    spi

    spm

    system

    tempmon

    tpm

    trng

    tsens

    uart

    usb

    utick

    vref

    vspi

    vusart

    wdog

    wdog01

    wdog32

    wdt

    wkt

    wwdt

     

    Processors:

     

    i.MX

    Kinetis

    LPC

    K32W/JN/QN

    MCIMX7U3xxxxx

    MCIMX7U5xxxxx

    MIMX8DX1xxxFZ

    MIMX8DX2xxxFZ

    MIMX8DX3xxxFZ

    MIMX8DX4xxxFZ

    MIMX8DX5xxxDZ

    MIMX8DX5xxxFZ

    MIMX8DX6xxxDZ

    MIMX8DX6xxxFZ

    MIMX8MD6xxxHZ

    MIMX8MD6xxxJZ

    MIMX8MD7xxxHZ

    MIMX8MD7xxxJZ

    MIMX8MM1xxxKZ

    MIMX8MM1xxxLZ

    MIMX8MM2xxxKZ

    MIMX8MM2xxxLZ

    MIMX8MM3xxxKZ

    MIMX8MM3xxxLZ

    MIMX8MM4xxxKZ

    MIMX8MM4xxxLZ

    MIMX8MM5xxxKZ

    MIMX8MM5xxxLZ

    MIMX8MM6xxxKZ

    MIMX8MM6xxxLZ

    MIMX8MN1xxxJZ

    MIMX8MN2xxxJZ

    MIMX8MN3xxxJZ

    MIMX8MN4xxxJZ

    MIMX8MN5xxxJZ

    MIMX8MN6xxxJZ

    MIMX8MN1xxxIZ

    MIMX8MN2xxxIZ

    MIMX8MN3xxxIZ

    MIMX8MN4xxxIZ

    MIMX8MN5xxxIZ

    MIMX8MN6xxxIZ

    MIMX8MQ5xxxHZ

    MIMX8MQ5xxxJZ

    MIMX8MQ6xxxHZ

    MIMX8MQ6xxxJZ

    MIMX8MQ7xxxHZ

    MIMX8MQ7xxxJZ

    MIMX8QM6xxxFF

    MIMX8QX1xxxFZ

    MIMX8QX2xxxFZ

    MIMX8QX3xxxFZ

    MIMX8QX4xxxFZ

    MIMX8QX5xxxDZ

    MIMX8QX5xxxFZ

    MIMX8QX6xxxDZ

    MIMX8QX6xxxFZ

    MIMX8UX5xxxDZ

    MIMX8UX5xxxFZ

    MIMX8UX6xxxDZ

    MIMX8UX6xxxFZ

    MIMXRT1011xxxxx

    MIMXRT1015xxxxx

    MIMXRT1021xxxxx

    MIMXRT1051xxxxB

    MIMXRT1052xxxxB

    MIMXRT1061xxxxA

    MIMXRT1062xxxxA

    MIMXRT1064xxxxA

    MIMXRT633S

    MIMXRT685S

    K32L2A31xxxxA

    K32L2A41xxxxA

    K32L2B11xxxxA

    K32L2B21xxxxA

    K32L2B31xxxxA

    K32L3A60xxx

    MK02FN128xxx10

    MK02FN64xxx10

    MK10DN512xxx10

    MK10DX128xxx10

    MK10DX256xxx10

    MK11DN512Axxx5

    MK11DN512xxx5

    MK11DX128Axxx5

    MK11DX128xxx5

    MK11DX256Axxx5

    MK11DX256xxx5

    MK12DN512xxx5

    MK12DX128xxx5

    MK12DX256xxx5

    MK20DN512xxx10

    MK20DX128xxx10

    MK20DX256xxx10

    MK21DN512Axxx5

    MK21DN512xxx5

    MK21DX128Axxx5

    MK21DX128xxx5

    MK21DX256Axxx5

    MK21DX256xxx5

    MK21FN1M0Axxx12

    MK21FN1M0xxx12

    MK21FX512Axxx12

    MK21FX512xxx12

    MK22DN512xxx5

    MK22DX128xxx5

    MK22DX256xxx5

    MK22FN128xxx10

    MK22FN128xxx12

    MK22FN1M0Axxx12

    MK22FN1M0xxx12

    MK22FN256xxx12

    MK22FN512xxx12

    MK22FX512Axxx12

    MK22FX512xxx12

    MK24FN1M0xxx12

    MK24FN256xxx12

    MK26FN2M0xxx18

    MK27FN2M0Axxx15

    MK27FN2M0xxx15

    MK28FN2M0Axxx15

    MK28FN2M0xxx15

    MK30DN512xxx10

    MK30DX128xxx10

    MK30DX256xxx10

    MK40DN512xxx10

    MK40DX128xxx10

    MK40DX256xxx10

    MK50DN512xxx10

    MK50DX256xxx10

    MK51DN256xxx10

    MK51DN512xxx10

    MK51DX256xxx10

    MK52DN512xxx10

    MK53DN512xxx10

    MK53DX256xxx10

    MK60DN256xxx10

    MK60DN512xxx10

    MK60DX256xxx10

    MK63FN1M0xxx12

    MK64FN1M0xxx12

    MK64FX512xxx12

    MK65FN2M0xxx18

    MK65FX1M0xxx18

    MK66FN2M0xxx18

    MK66FX1M0xxx18

    MK80FN256xxx15

    MK82FN256xxx15

    MKE02Z16xxx4

    MKE02Z32xxx4

    MKE02Z64xxx4

    MKE04Z128xxx4

    MKE04Z64xxx4

    MKE04Z8xxx4

    MKE06Z128xxx4

    MKE06Z64xxx4

    MKE14F256xxx16

    MKE14F512xxx16

    MKE14Z128xxx7

    MKE14Z256xxx7

    MKE14Z32xxx4

    MKE14Z64xxx4

    MKE15Z128xxx7

    MKE15Z256xxx7

    MKE15Z32xxx4

    MKE15Z64xxx4

    MKE16F256xxx16
    MKE16F512xxx16

    MKE16Z32xxx4

    MKE16Z64xxx4

    MKE18F256xxx16

    MKE18F512xxx16

    MKL02Z16xxx4

    MKL02Z32xxx4

    MKL02Z8xxx4

    MKL03Z16xxx4

    MKL03Z32xxx4

    MKL03Z8xxx4

    MKL13Z32xxx4

    MKL13Z64xxx4

    MKL14Z32xxx4

    MKL14Z64xxx4

    MKL15Z128xxx4

    MKL15Z32xxx4

    MKL15Z64xxx4

    MKL16Z128xxx4

    MKL16Z256xxx4

    MKL16Z32xxx4

    MKL16Z64xxx4

    MKL17Z128xxx4

    MKL17Z256xxx4

    MKL17Z32xxx4

    MKL17Z64xxx4

    MKL24Z32xxx4

    MKL24Z64xxx4

    MKL25Z128xxx4

    MKL25Z32xxx4

    MKL25Z64xxx4

    MKL26Z128xxx4

    MKL26Z256xxx4

    MKL26Z32xxx4

    MKL26Z64xxx4

    MKL27Z128xxx4

    MKL27Z256xxx4

    MKL27Z32xxx4

    MKL27Z64xxx4

    MKL28Z512xxx7

    MKL33Z128xxx4

    MKL33Z256xxx4

    MKL33Z32xxx4

    MKL33Z64xxx4

    MKL34Z64xxx4

    MKL36Z128xxx4

    MKL36Z256xxx4

    MKL36Z64xxx4

    MKL43Z128xxx4

    MKL43Z256xxx4

    MKL46Z128xxx4

    MKL46Z256xxx4

    MKL82Z128xxx7

    MKM34Z256xxx7

    MKM35Z256xxx7

    MKM35Z512xxx7

    MKS20FN128xxx12

    MKS20FN256xxx12

    MKS22FN128xxx12

    MKS22FN256xxx12

    MKV10Z128xxx7

    MKV10Z16xxx7

    MKV10Z32xxx7

    MKV10Z64xxx7

    MKV11Z128xxx7

    MKV11Z64xxx7

    MKV30F128xxx10

    MKV30F64xxx10

    MKV31F128xxx10

    MKV31F256xxx12

    MKV31F512xxx12

    MKV42F128xxx16

    MKV42F256xxx16

    MKV42F64xxx16

    MKV44F128xxx16

    MKV44F256xxx16

    MKV44F64xxx16

    MKV46F128xxx16

    MKV46F256xxx16

    MKV56F1M0xxx24

    MKV56F512xxx24

    MKV58F1M0xxx24

    MKV58F512xxx24

    MKW21D256xxx5

    MKW21D512xxx5

    MKW21Z256xxx4

    MKW21Z512xxx4

    MKW22D512xxx5

    MKW24D512xxx5

    MKW31Z256xxx4

    MKW31Z512xxx4

    MKW35A512xxx4

    MKW35Z512xxx4

    MKW36A512xxx4

    MKW36Z512xxx4

    MKW41Z256xxx4

    MKW41Z512xxx4

    LPC51U68

    LPC54005

    LPC54016

    LPC54018

    LPC54018M

    LPC54101J256

    LPC54101J512

    LPC54102J256

    LPC54102J512

    LPC54113J128

    LPC54113J256

    LPC54114J256

    LPC54605J256

    LPC54605J512

    LPC54606J256

    LPC54606J512

    LPC54607J256

    LPC54607J512

    LPC54608J512

    LPC54616J256

    LPC54616J512

    LPC54618J512

    LPC54628J512

    LPC54S005

    LPC54S016

    LPC54S018

    LPC54S018M

    LPC5512

    LPC5514

    LPC5516

    LPC5526

    LPC5528

    LPC55S14

    LPC55S16

    LPC55S26

    LPC55S28

    LPC55S66

    LPC55S69

    LPC802

    LPC804

    LPC810

    LPC811

    LPC812

    LPC822

    LPC824

    LPC832

    LPC834

    LPC844

    LPC845

    LPC8N04

    JN5189

    K32W061

    QN908XC

    QN9090

     

    Boards:

     

    i.MX

    Kinetis

    LPC

    K32W/JN/QN

    IMXRT1050-EVKB

    MCIMX7ULP-EVK-REV-B

    MIMX8M-EVK-REV-B

    MIMX8MM-EVK-REV-C

    MIMX8MN-EVK-REV-A

    MIMX8QM-MEK-REV-B

    MIMX8QX-MEK-REV-B

    MIMXRT1010-EVK

    MIMXRT1015-EVK

    MIMXRT1020-EVK

    MIMXRT1060-EVK

    MIMXRT1064-EVK

    MIMXRT685-EVK

    FRDM-K22F

    FRDM-K28F

    FRDM-K28FA

    FRDM-K32L2A4S

    FRDM-K32L2B

    FRDM-K32L3A6

    FRDM-K64F

    FRDM-K66F

    FRDM-K82F

    FRDM-KE02Z40M

    FRDM-KE04Z

    FRDM-KE06Z

    FRDM-KE15Z

    FRDM-KE16Z

    FRDM-KL02Z

    FRDM-KL03Z

    FRDM-KL25Z

    FRDM-KL26Z

    FRDM-KL27Z

    FRDM-KL28Z

    FRDM-KL43Z

    FRDM-KL46Z

    FRDM-KL82Z

    FRDM-KV10Z

    FRDM-KV11Z

    FRDM-KV31F

    FRDM-KW24

    FRDM-KW36

    FRDM-KW41Z

    HEXIWEAR

    HVP-KE18F

    HVP-KV11Z75M

    HVP-KV31F120M

    HVP-KV46F150M

    HVP-KV58F

    MAPS-KS22

    TWR-K21D50M

    TWR-K21F120M

    TWR-K22F120M

    TWR-K24F120M

    TWR-K60D100M

    TWR-K64F120M

    TWR-K65F180M

    TWR-K80F150M

    TWR-KE18F

    TWR-KL28Z72M

    TWR-KL43Z48M

    TWR-KL82Z72M

    TWR-KM34Z75M

    TWR-KM35Z75M

    TWR-KV10Z32

    TWR-KV11Z75M

    TWR-KV31F120M

    TWR-KV46F150M

    TWR-KV58F220M

    TWR-KW24D512

    USB-KW24D512

    USB-KW41Z

    LPC54018-IoT-Module

    LPC54S018-IoT-Module

    LPC845BREAKOUT

    LPC8N04DevBoard

    LPCXpresso51U68

    LPCXpresso54018

    LPCXpresso54018M

    LPCXpresso54102

    LPCXpresso54114

    LPCXpresso54608

    LPCXpresso54618

    LPCXpresso54628

    LPCXpresso54S018

    LPCXpresso54S018M

    LPCXpresso55S16

    LPCXpresso55S28

    LPCXpresso55S69

    LPCXpresso802

    LPCXpresso804

    LPCXpresso812

    LPCXpresso824

    LPCXpresso845

    JN5189DK6

    K32W061DK6

    QN908XCDK

    QN9090DK6

     

    Kits:

     

    Kinetis

    FRDM-K22F-AGM01

    FRDM-K22F-SA9500

    FRDM-K64F-AGM01

    FRDM-K64F-MULT2B

    FRDMKL25-A8471

    FRDMKL25-A8491

    FRDMKL25-P3115

More
1 0 366
NXP Employee
NXP Employee

Share your FreeMASTER dashboard designs, get a board!

 

Calling all FreeMASTER fans!

 

Are you an experienced FreeMASTER user who has already created custom dashboards, or are you an HTML/Javascript coder who is new to this great tool and keen to share your creative ideas? With all the possibilities that resources such as jqWidgets, Google, PrimeUI, Plotly.js combined with FreeMASTER offer for creating engaging dashboards to control and/or demo your application, we'd love you to share your creations with the NXP Community. We are giving away* 50 NXP evaluation boards (20 each of the i.MX RT1020 and LPC55S28 EVKs, and 10 of the S32K144EVB) as a thank you to those of you who are willing to share your dashboards with our community.

 

If you aren’t familiar with FreeMASTER dashboard coding yet don’t despair! Our upcoming, 4-part series on FreeMASTER should tell you what you need to know. The webinar series starts with introductory sessions then moves into what you need to know for dashboard coding (assuming you have some familiarity with HTML and Javascript): Click here to register for your session of interest.

 

How to participate?

  1. Submit your idea to the NXP FreeMASTER community using #freemasterdash in the title by June 19, 2020.
    NOW EXTENDED UNTIL TO JULY 31ST!
  2. Link to your idea post in the comments section below within this blog and include your board preference (choose from the MX RT1020 EVK, LPC55S28 development board and S32K144EVB). Boards will be provided on a first come, first served basis until quantities are depleted. Please note: Your final code submission is not limited to the above boards, but can use any Kinetis, LPC, i.MX RT, S32K, S12Z or other supported 32-bit MCUs.
  3. Once you’ve created your code example, post a brief description and a screenshot of your dashboard along with a ZIPped code to this blog comment thread below. Be sure to:
  1. Keep each dashboard code as simple as possible so it serves as a good reference design.
  2. Please only post code that you are ok with others using. Be sure to acknowledge all sources and include licenses as needed! We'd prefer you to avoid code under GNU licenses and this may limit what community members can do with it. All official ‘terms of use’ apply.

What we'd like to see in your design:

  • Define an HTML page which runs in a standalone Chrome browser or embedded in FreeMASTER view switched to Chromium mode. This is a requirement!
  • Make use of JSON-RPC wrapper component as demonstrated in FreeMASTER Lite or described in FreeMASTER 3.0 User Guide section 6.8.2
  • Demonstrate use of graphical HTML5 widgets from vendors including (but not limited to) jqWidgets, Google, PrimeUI, Plotly.js. You can also write your own, but please only use these if you are prepared to share.
  • Create one or more demonstration dashboards (one dashboard = one HTML page), showing use of at least one widget (see some widget ideas below)

 

Additional suggestions (not required!):

  • Use the out-of-box FreeMASTER example application and its "var16", "var32" and other variables running on any Kinetis, LPC, i.MX RT, S32K, S12Z or other supported 32-bit MCU.
  • Angular or linear gauge (different to the one we already provide in the NXP examples) to visualize variable values
  • Sliders, knobs or other controls for variable value modification
  • Interactive graph components showing variable values in time
  • Push buttons, input fields, table grids for variable value control

We look forward to hearing your creative ideas!

 

*Development boards are available on a first come, first served basis until quantities are depleted. The board itself is free, however recipients will be responsible for shipping charges; shipping charges may vary by country. 

More
2 13 2,511
NXP Employee
NXP Employee

LPCScrypt v2.1.1 | NXP  is now available. This release incorporates the latest versions of LPC-Link2 firmware for both CMSIS-DAP and also SEGGER J-Link.

LPCScrypt is a command-line based, fast flash (internal and QSPI), EEPROM, OTP and security programming tool for LPC1800 and LPC4300 series microcontrollers. It is also the primary delivery mechanism for supplying and programming CMSIS-DAP firmware images for LPC-Link2 and LPCXpresso Boards.

 

Yours,

 

MCUXpresso IDE Support

More
0 0 258
NXP Employee
NXP Employee

We are pleased to announce that MCUXpresso Config Tools v7 are now available.

 

MCUXpresso Configuration Tools is a product with set of tools that help users of all levels with a Cortex-M-based MCU solution.

Features

  • Available as Web, Desktop application and MCUXpresso IDE plug-ins
  • MCUXpresso SDK v2 support
  • Multicore support
  • GUI localized for English and Simplified Chinese
  • On-Demand device data download for latest features and support
  • Integrated directly within MCUXpresso IDE, standalone version supports other compilers and IDEs
  • Currently there are the following tools available: 

MCUXConfigTools_BD.jpg

Downloads

 

Revision History

7.0.1

  • Mac OS X 10.15 operating system support added.

  • TEE tool: Displays correctly inaccessible regions in "Memory attribution map" view.7.0

7.0

  • Added "Help | Kit/Board Information" option that displays information about currently used kit or board.
  • Clickable Part number, Board and Kit name supported. It displays information about currently used processor, board and kit.
  • Data Manager - supports clearing locally cached processors, boards, kit and components content.
  • Configuration Preferences - supports custom copyright in generated sources
  • TEE tool: Memory map is now interactive, cell double click opens its configuration.
  • TEE tool: Memory map now displays peripherals space details.
  • TEE tool: Added possibility to import memory configuration from MCUXpresso IDE project(s).
  • TEE tool: Memory regions in Access overview are now grouped by memory type; all memory region aliases are displayed in a single row.
  • TEE tool: Pins table now contains pin labels from the Pins tool.
  • TEE tool: Additional validations and security setting recommendations.
  • Peripherals tool: Tool can now generate binary output files.
  • Peripherals tool: Component name is derived from the selected peripheral by default. It can be overwritten by a user.
  • Peripherals tool: Documentation view improvements related to navigation added two new features - header with links in documentation content and selection box in header of view.
  • Peripherals tool: Deprecated components have "(deprecated)" suffix in the add component dialog if there are still other instances of this type in configuration.
  • Pins tool: Added automatic routing feature which can be used for conflict resolution in the current functional group.
  • (MCUXpresso Config Tools only): Preferences - Added Dark theme support
  • (MCUXpresso IDE only): Added SEMC/SDRAM stress tests, with RT support.
  • (MCUXpresso IDE only): Added FlexSPI/NOR Validation tool, with RT support.


Community

MCUXpresso Config Tools

 

 

MCUXpresso Config Tools Data

The Data for MCUXpresso Config Tools v7 was successfully deployed on the production system.

 

What’s new in data

The Data for MCUXpresso Config Tools v7 release provides following updates:

  • 330 Kinetis, LPC and i.MX processors and 229 boards supported in total.
  • Updated code generated by Pins, Clocks and Peripherals tool to support SDK v2.7 API.
  • Peripherals tool support added for LPC8N04, KV11/4x/5x, KExx, KV3x and K22 (FN1M0 and FX512 memory variants only) processors. 200 processors supported by Peripherals tool in total - all processors in SDK v2.7 are supported by Peripherals tool now.
  • Added 21 new Peripherals tool components for various Kinetis, LPC and i.MX RT processors. 103 components are available now in total.
  • Improved DMA support in Peripherals tool - edma and lpc_dma components updated to support transactional and non-transactional modes, improved support of DMA request settings in other Peripherals tool components.
  • Improved interrupt settings in Peripherals tool components, added default interrupt subroutine snippets.
  • Added new Audio 1.0 and Device Firmware Update classes to USB Peripherals tool component, supported suspend/resume/remote wake-up feature, improved PHDC class support and USB endpoint settings.
  • Added support of Memory validation for i.MX8MM processors, maintenance update of Memory validation/DDR tool supporting RT1020, RT1050, RT1060, RT1064 and i.MX8MM processors.
  • Updated TEE tool for LPC55S6x processors.
  • Various other small improvements and bug fixes of Pins, Clocks and Peripherals tool. 

Supported processors, boards, kits and components

 

i.MX

Kinetis

LPC

QN

imx7ulp-14x14-arm2

imx7ulp-evk

imx7ulp-evk-emmc

imx7ulp-evk-emmc-qspi

imx7ulp-evk-ft5416

imx7ulp-evk-lpuart

imx7ulp-evk-mipi

imx7ulp-evk-qspi

imx7ulp-evk-sd1

imx7ulp-evk-sensors-to-i2c5

imx7ulp-evk-wm8960

IMXRT1050-EVKB

MCIMX7ULP-EVK-REV-B

MIMX8M-EVK-REV-B

MIMX8MM-EVK-REV-C

MIMX8MN-EVK-REV-A

MIMX8QM-MEK-REV-B

MIMX8QX-MEK-REV-B

MIMXRT1010-EVK

MIMXRT1015-EVK

MIMXRT1020-EVK

MIMXRT1060-EVK

MIMXRT1064-EVK

FRDM-K32L3A6

FRDM-K32L2B

FRDM-K22F

FRDM-K28F

FRDM-K28FA

FRDM-K64F

FRDM-K66F

FRDM-K82F

FRDM-KE02Z40M

FRDM-KE04Z

FRDM-KE06Z

FRDM-KE15Z

FRDM-KE16Z

FRDM-KL02Z

FRDM-KL03Z

FRDM-KL25Z

FRDM-KL26Z

FRDM-KL27Z

FRDM-KL28Z

FRDM-KL43Z

FRDM-KL46Z

FRDM-KL82Z

FRDM-KV10Z

TWR-KV58F220M

TWR-KW24D512

USB-KW24D512

USB-KW41Z

FRDM-KV11Z

FRDM-KV31F

FRDM-KW24

FRDM-KW36

FRDM-KW41Z

HEXIWEAR

HVP-KE18F

HVP-KV11Z75M

HVP-KV31F120M

HVP-KV46F150M

HVP-KV58F

MAPS-KS22

TWR-K21D50M

TWR-K21F120M

TWR-K22F120M

TWR-K24F120M

TWR-K60D100M

TWR-K64F120M

TWR-K65F180M

TWR-K80F150M

TWR-KE18F

TWR-KL28Z72M

TWR-KL43Z48M

TWR-KL82Z72M

TWR-KM34Z75M

TWR-KV10Z32

TWR-KV11Z75M

TWR-KV31F120M

TWR-KV46F150M

LPC54018-IoT-Module

LPC54S018-IoT-Module

LPC8N04DevBoard

LPCXpresso51U68

LPCXpresso54018

LPCXpresso54018M

LPCXpresso54102

LPCXpresso54114

LPCXpresso54608

LPCXpresso54618

LPCXpresso54628

LPCXpresso54S018

LPCXpresso54S018M

LPCXpresso802

LPCXpresso804

LPCXpresso812

LPCXpresso824

LPCXpresso845

LPC845BREAKOUT

LPCXpresso55S28

LPCXpresso55S69

QN908XCDK

Processors:

i.MX

Kinetis

LPC

MCIMX7U3xxxxx

MCIMX7U5xxxxx

MIMX8MD6xxxHZ

MIMX8MD6xxxJZ

MIMX8MD7xxxHZ

MIMX8MD7xxxJZ

MIMX8MM1xxxKZ

MIMX8MM1xxxLZ

MIMX8MM2xxxKZ

MIMX8MM2xxxLZ

MIMX8MM3xxxKZ

MIMX8MM3xxxLZ

MIMX8MM4xxxKZ

MIMX8MM4xxxLZ

MIMX8MM5xxxKZ

MIMX8MM5xxxLZ

MIMX8MM6xxxKZ

MIMX8MM6xxxLZ

MIMX8MN1xxxIZ

MIMX8MN1xxxJZ

MIMX8MN2xxxIZ

MIMX8MN2xxxJZ

MIMX8MN3xxxIZ

MIMX8MN3xxxJZ

MIMX8MN4xxxIZ

MIMX8MN4xxxJZ

MIMX8MN5xxxIZ

MIMX8MN5xxxJZ

MIMX8MN6xxxIZ

MIMX8MN6xxxJZ

MIMX8MQ5xxxHZ

MIMX8MQ5xxxJZ

MIMX8MQ6xxxHZ

MIMX8MQ6xxxJZ

MIMX8MQ7xxxHZ

MIMX8MQ7xxxJZ

MIMX8QM6xxxFF

MIMX8QX2xxxFZ

MIMX8QX6xxxFZ

MIMXRT1011xxxxx

MIMXRT1015xxxxx

MIMXRT1021xxxxx

MIMXRT1051xxxxB

MIMXRT1052xxxxB

MIMXRT1061xxxxA

MIMXRT1062xxxxA

MIMXRT1064xxxxA

 

K32L3A60xxx

K32L2B11xxxxA

K32L2B21xxxxA

K32L2B31xxxxA

MK02FN128xxx10

MK02FN64xxx10

MK10DN512xxx10

MK10DX128xxx10

MK10DX256xxx10

MK11DN512Axxx5

MK11DN512xxx5

MK11DX128Axxx5

MK11DX128xxx5

MK11DX256Axxx5

MK11DX256xxx5

MK12DN512xxx5

MK12DX128xxx5

MK12DX256xxx5

MK20DN512xxx10

MK20DX128xxx10

MK20DX256xxx10

MK21DN512Axxx5

MK21DN512xxx5

MK21DX128Axxx5

MK21DX128xxx5

MK21DX256Axxx5

MK21DX256xxx5

MK21FN1M0Axxx12

MK21FN1M0xxx12

MK21FX512Axxx12

MK21FX512xxx12

MK22DN512xxx5

MK22DX128xxx5

MK22DX256xxx5

MK22FN128xxx10

MK22FN128xxx12

MK22FN1M0Axxx12

MK22FN1M0xxx12

MK22FN256xxx12

MK22FN512xxx12

MK22FX512Axxx12

MK22FX512xxx12

MK24FN1M0xxx12

MK24FN256xxx12

MK26FN2M0xxx18

MK27FN2M0Axxx15

MK27FN2M0xxx15

MK28FN2M0Axxx15

MK28FN2M0xxx15

MK30DN512xxx10

MK30DX128xxx10

MK30DX256xxx10

MK40DN512xxx10

MK40DX128xxx10

MK40DX256xxx10

MK50DN512xxx10

MK50DX256xxx10

MK51DN256xxx10

MK51DN512xxx10

MK51DX256xxx10

MK52DN512xxx10

MK53DN512xxx10

MK53DX256xxx10

MK60DN256xxx10

MK60DN512xxx10

MK60DX256xxx10

MK63FN1M0xxx12

MK64FN1M0xxx12

MK64FX512xxx12

MK65FN2M0xxx18

MK65FX1M0xxx18

MK66FN2M0xxx18

MK66FX1M0xxx18

MK80FN256xxx15

MK82FN256xxx15

MKE02Z16xxx4

MKE02Z32xxx4

MKE02Z64xxx4

MKE04Z128xxx4

MKE04Z64xxx4

MKE04Z8xxx4

MKE06Z128xxx4

MKE06Z64xxx4

MKE14F256xxx16

MKE14F512xxx16

MKE14Z128xxx7

MKE14Z256xxx7

MKE14Z32xxx4

MKE14Z64xxx4

MKE15Z128xxx7

MKE15Z256xxx7

MKE15Z32xxx4

MKE15Z64xxx4

MKE16F256xxx16

MKE16F512xxx16

MKE16Z32xxx4

MKE16Z64xxx4

MKE18F256xxx16

MKE18F512xxx16

MKL02Z16xxx4

MKL02Z32xxx4

MKL02Z8xxx4

MKL03Z16xxx4

MKL03Z32xxx4

MKL03Z8xxx4

MKL13Z32xxx4

MKL13Z64xxx4

MKL14Z32xxx4

MKL14Z64xxx4

MKL15Z128xxx4

MKL15Z32xxx4

MKL15Z64xxx4

MKL16Z128xxx4

MKL16Z256xxx4

MKL16Z32xxx4

MKL16Z64xxx4

MKL17Z128xxx4

MKL17Z256xxx4

MKL17Z32xxx4

MKL17Z64xxx4

MKL24Z32xxx4

MKL24Z64xxx4

MKL25Z128xxx4

MKL25Z32xxx4

MKL25Z64xxx4

MKL26Z128xxx4

MKL26Z256xxx4

MKL26Z32xxx4

MKL26Z64xxx4

MKL27Z128xxx4

MKL27Z256xxx4

MKL27Z32xxx4

MKL27Z64xxx4

MKL28Z512xxx7

MKL33Z128xxx4

MKL33Z256xxx4

MKL33Z32xxx4

MKL33Z64xxx4

MKL34Z64xxx4

MKL36Z128xxx4

MKL36Z256xxx4

MKL36Z64xxx4

MKL43Z128xxx4

MKL43Z256xxx4

MKL46Z128xxx4

MKL46Z256xxx4

MKL82Z128xxx7

MKM34Z256xxx7

MKS20FN128xxx12

MKS20FN256xxx12

MKS22FN128xxx12

MKS22FN256xxx12

MKV10Z128xxx7

MKV10Z16xxx7

MKV10Z32xxx7

MKV10Z64xxx7

MKV11Z128xxx7

MKV11Z64xxx7

MKV30F128xxx10

MKV30F64xxx10

MKV31F128xxx10

MKV31F256xxx12

MKV31F512xxx12

MKV42F128xxx16

MKV42F256xxx16

MKV42F64xxx16

MKV44F128xxx16

MKV44F256xxx16

MKV44F64xxx16

MKV46F128xxx16

MKV46F256xxx16

MKV56F1M0xxx24

MKV56F512xxx24

MKV58F1M0xxx24

MKV58F512xxx24

MKW21D256xxx5

MKW21D512xxx5

MKW21Z256xxx4

MKW21Z512xxx4

MKW22D512xxx5

MKW24D512xxx5

MKW31Z256xxx4

MKW31Z512xxx4

MKW35A512xxx4

MKW35Z512xxx4

MKW36A512xxx4

MKW36Z512xxx4

MKW41Z256xxx4

MKW41Z512xxx4

LPC51U68

LPC54005

LPC54016

LPC54018

LPC54101J256

LPC54101J512

LPC54102J256

LPC54102J512

LPC54113J128

LPC54113J256

LPC54114J256

LPC54605J256

LPC54605J512

LPC54606J256

LPC54606J512

LPC54607J256

LPC54607J512

LPC54608J512

LPC54616J256

LPC54616J512

LPC54618J512

LPC54628J512

LPC54S005

LPC54S016

LPC54S018

LPC54018M

LPC54S018M

LPC802

LPC804

LPC810

LPC811

LPC812

LPC822

LPC824

LPC832

LPC834

LPC844

LPC845

LPC8N04

LPC5526

LPC5528

LPC55S26

LPC55S28

LPC55S66

LPC55S69

QN

QN908XC

Components:

Components

acmp

adc12

adc16

adc_12b1msps_sar

adc_etc

aoi

capt

cmp_1

cmp

cmt

cop

crc

csi

ctimer

dac

dcp

dma

dmic

dspi

edma

eeprom

elcdif

enc

ewm

flexbus

flexcan

flexcomm_i2c

flexcomm_i2s

flexcomm_spi

flexcomm_usart

flexio_i2c_master

flexio_i2s

flexio_spi

flexio_uart

flexspi

ftm

gint

gpio

gpt

hashcrypt

i2c

igpio

kpp

llwu

lpadc

lpc_acomp

lpc_adc

lpc_crc

lpc_dac

lpc_dma

lpc_gpio_1

lpc_gpio

lpc_i2c_1

lpc_i2c

lpc_lcdc

lpc_minispi

lpc_miniusart

lpc_rtc_1

lpc_rtc

lpc_spi_ssp

lpi2c

lpit

lpsci

lpspi

lptmr

lpuart

mcan

mrt

msg

nfc

ostimer

pdb

pint

pit

plu

pwm

qtmr

rit

rnga

rtc

rtwdog

sai

sctimer

semc

sha

snvs_hp

snvs_lp

spdif

spi

system

tempmon

tpm

trng

tsens

uart

usb

utick

vref

vspi

vusart

wdog01

wdog32

wdog

wdt

wkt

wwdt

More
0 0 646
NXP Employee
NXP Employee

Memory validation extends Peripherals tool with the capability to validate different types of memories. For now, it supports RT10xx CPUs family with SEMC/SDRAM and FlexSPI/NOR (starting with MCUXpresso v11.1.0/Config tools v7) devices. 

The SEMC is a multi-standard memory controller optimized for both high-performance and low pin-count. It can support multiple external memories in the same application with shared address and data pins. The interface supported includes SDRAM.

 

FlexSPI is a flexible SPI (Serial Peripheral Interface) host controller which supports two SPI channels and up to 4 external devices. Each channel supports Single/Dual/Quad/ Octal mode data transfer (1/2/4/8 bidirectional data lines).

 

For developing hardware with SDRAM memory connected to SEMC controller or with NOR memory connected to FlexSPI controller, the validation of memories settings can be done with the new introduced validation tool. The tool is available for SEMC and FLEXSPI peripherals and can be used after selecting the SEMC or FLEXSPI peripheral from the list in the Peripherals view.

Note:

  • This document assumes the use of MCUXpresso IDE v11.0.0 (or later).
  • An MCUXpresso SDK for RT10xx CPUs family will also be required
  • This must be “SDK Version: 2.5.0 (released 2019-02-25)” or later – which can be obtained from https://mcuxpresso.nxp.com
  • Installation of Python 2.7 is required (Install the latest of Python 2.7 version available on  https://www.python.org/downloads). If you see connection errors, make sure arm-none-eabi-gdb-py (can be found in \MCUXpressoIDE_11.1.0\ide\plugins\com.nxp.mcuxpresso.tools.win32\tools\bin\) is starting without error. Also, on Windows it is possible that python27.dll to be required and must be placed in Python27 installation folder. 
  • Once the SDK is imported into MCUXpresso IDE and a project including SEMC or FlexSPI driver is created, the settings can be tuned and validated following the next steps

Example below is for SEMC with SDRAM:

  1. Select the project and open the Peripherals tool pastedImage_13.png
  2. Select the SEMC componentpastedImage_14.png
  3. Configure the SDRAM parameters using the UI
  4. Click on Validation View icon to open SEMC Validation tool viewpastedImage_35.png
  5. From Validation view can be selected validation scenarios and tests. Available tests are DMA,
    Write-Read-Compare, Walking Ones, Walking Zeros. Also Stress test scenario (starting with MCUXpresso v11.1.0/Config tools v7) is available for SDRAM.
    DMA test will transfer data from a source address to a destination address in SDRAM. The size of the data transferred is configurable. The source region is filled with a repeating pattern. After DMA finished the transfer, the test is reading back the data from the destination and compares it with the source data. The test fails at the first mismatch found.
    Write-Read-Compare test checks SDRAM reads versus writes. Sequentially writes into a SDRAM area a pattern, until area is fully covered. Then reads back from the same SDRAM area and compare with what has been written. User can set the start and size of SDRAM area and pattern to be used. The test fails after the first identified memory mismatch.
    Walking Ones test writes a bit pattern that gradually sets [to 1] bits from LSB to MSB. Each byte is written multiple times depending on the selected access size, until each of the contained bits gets set, while the other ones are cleared. For each bit pattern, a write/read/compare sequence is performed. The test is repeated for each of the access size selected using the corresponding access size.
    Walking Zeros test writes a bit pattern that gradually clears [to 0] bits from LSB to MSB. Each byte is written multiple times depending on the selected access size, until each of the contained bits gets set, while the other ones are cleared. For each bit pattern, a write/read/compare sequence is performed. The test is repeated for each of the access size selected using the corresponding access size.
    Stress test is a suite of tests meant to verify the performance and stability of the memory in a non-OS environment.pastedImage_4.png
  6. To set the test parameters and the number of repetitions go to Choose Tests tabpastedImage_8.png
  7. Once the test parameters are set and the scenario is selected, validation can be started by clicking on Start Validation buttonpastedImage_31.png
  8. Status of the test will be displayed in Test Results viewpastedImage_32.png
  9. In Logs view Simple or Real time log can be displayed for each test pastedImage_36.pngpastedImage_37.png
  10. For SDRAM once the validation tests succeeded, there are two options to set the target with the new SDRAM settings
    1. C code generation. Necessary C code for setting the SDRAM is generated in peripherals.c/.h files and will be deployed into the project by pressing Update Code button. Also, a preview of the code is available in Code Preview tabpastedImage_39.png
    2. Create a DCD C array or binary with the SDRAM settings by using the Apply to DCD option.
      First is necessary that the SEMC component mode to the switched to DCD. This way only DCD component will be updated with the SEMC settings and not the peripherals.c/.h files.pastedImage_40.png 
      1. After pressing Apply to DCD button, open DCD tool to view the SDRAM initialization pastedImage_16.png
      2. SDRAM configuration generated into DCD is supposed to be used to update the existing configuration. We are not expected the board to boot with this configuration alone.
  11. Once the validation process is done and the SDRAM settings were applied using one of the above options, project can be rebuilt with the validated SDRAM settings

More
1 0 397
NXP Employee
NXP Employee

We are pleased to announce that MCUXpresso Config Tools v6 are now available.

 

MCUXpresso Configuration Tools is a product with set of tools that help users of all levels with a Cortex-M-based MCU solution.

Features

  • Available as Web, Desktop application and MCUXpresso IDE plug-ins
  • MCUXpresso SDK v2 support
  • Multicore support
  • GUI localized for English and Simplified Chinese
  • Mostly Connected: On-Demand device data download
  • Integrates with any compiler and IDE
  • Currently there are the following tools available: 

    MCUXConfigTools_BD.jpg

Downloads

 

Overview of Changes - version 6

  • Only 64bit operating systems supported.
  • 'Update Code' now possible without an assigned toolchain project.
  • Removed dialog reporting changes between MEX and YAML in source code. The changes can be reviewed using Update Code DIFF.
  • Added "Help | Processor Information" menu option displays information about currently used processor.
  • Added Device Configuration tool, supports DCD (Device Configuration Data) commands configuration.
  • Added Trusted Execution Environment (TEE) tool.
  • Highlight changes implemented in generated code in Code preview view.
  • (MCUXpresso IDE only): Added Dark theme support
  • (MCUXpresso IDE only): Added SEMC (SDRAM) Validation tool, with RT1020 and RT1050 support.
  • Project Cloner in New Configuration Wizard: Added support for MCUxpresso SDK v2.6.x
  • Clocks tool: Run Mode and MCG Mode selection have been moved to Clocks Diagram and Clocks Table views.
  • Clocks tool: Added support for search by label in Clocks Diagram.
  • Peripherals tool: Added Support for 64bit (and more) values from user.
  • Peripherals tool: User can now migrate settings values from component already added to a configuration to another component, if mutually compatible (component redesigned etc.).
  • Peripherals tool: Documentation view history can now be navigated.
  • (MCUXpresso Config Tools only): Added Overview dialog on opening configuration for the first time 


Community

MCUXpresso Config Tools

 

 

MCUXpresso Config Tools Data

The Data for MCUXpresso Config Tools v6 was successfully deployed on the production system.

 

What’s new in data

The Data for MCUXpresso Config Tools v6 release provides following updates:

  1. Update of all supported processors data to support new features introduced in MCUXpresso Config Tools v6
  2. Update of Peripherals tool components to support SDK Release 10
  3. Various bug fixes and improvements

 

Supported processors, boards, kits and components

 

Processors:

KinetisKinetis2LPCi.MXOther
MK02FN128xxx10MKE18F256xxx16LPC51U68MCIMX7U3xxxxxGenericMQX
MK02FN64xxx10MKE18F512xxx16LPC54005MCIMX7U5xxxxxQN908XC
MK10DN512xxx10MKL02Z16xxx4LPC54016MIMX8MD6xxxHZ
MK10DX128xxx10MKL02Z32xxx4LPC54018MIMX8MD6xxxJZ
MK10DX256xxx10MKL02Z8xxx4LPC54101J256MIMX8MD7xxxHZ
MK11DN512Axxx5MKL03Z16xxx4LPC54101J512MIMX8MD7xxxJZ
MK11DN512xxx5MKL03Z32xxx4LPC54102J256MIMX8MM1xxxKZ
MK11DX128Axxx5MKL03Z8xxx4LPC54102J512MIMX8MM1xxxLZ
MK11DX128xxx5MKL13Z32xxx4LPC54113J128MIMX8MM2xxxKZ
MK11DX256Axxx5MKL13Z64xxx4LPC54113J256MIMX8MM2xxxLZ
MK11DX256xxx5MKL14Z32xxx4LPC54114J256MIMX8MM3xxxKZ
MK12DN512xxx5MKL14Z64xxx4LPC54605J256MIMX8MM3xxxLZ
MK12DX128xxx5MKL15Z128xxx4LPC54605J512MIMX8MM4xxxKZ
MK12DX256xxx5MKL15Z32xxx4LPC54606J256MIMX8MM4xxxLZ
MK20DN512xxx10MKL15Z64xxx4LPC54606J512MIMX8MM5xxxKZ
MK20DX128xxx10MKL16Z128xxx4LPC54607J256MIMX8MM5xxxLZ
MK20DX256xxx10MKL16Z256xxx4LPC54607J512MIMX8MM6xxxKZ
MK21DN512Axxx5MKL16Z32xxx4LPC54608J512MIMX8MM6xxxLZ
MK21DN512xxx5MKL16Z64xxx4LPC54616J256MIMX8MQ5xxxHZ
MK21DX128Axxx5MKL17Z128xxx4LPC54616J512MIMX8MQ5xxxJZ
MK21DX128xxx5MKL17Z256xxx4LPC54618J512MIMX8MQ6xxxHZ
MK21DX256Axxx5MKL17Z32xxx4LPC54628J512MIMX8MQ6xxxJZ
MK21DX256xxx5MKL17Z64xxx4LPC54S005MIMX8MQ7xxxHZ
MK21FN1M0Axxx12MKL24Z32xxx4LPC54S016MIMX8MQ7xxxJZ
MK21FN1M0xxx12MKL24Z64xxx4LPC54S018MIMXRT1015xxxxx
MK21FX512Axxx12MKL25Z128xxx4LPC55S66MIMXRT1021xxxxx
MK21FX512xxx12MKL25Z32xxx4LPC55S69MIMXRT1051xxxxB
MK22DN512xxx5MKL25Z64xxx4LPC802MIMXRT1052xxxxB
MK22DX128xxx5MKL26Z128xxx4LPC804MIMXRT1061xxxxA
MK22DX256xxx5MKL26Z256xxx4LPC810MIMXRT1062xxxxA
MK22FN128xxx10MKL26Z32xxx4LPC811MIMXRT1064xxxxA
MK22FN128xxx12MKL26Z64xxx4LPC812
MK22FN1M0Axxx12MKL27Z128xxx4LPC822
MK22FN1M0xxx12MKL27Z256xxx4LPC824
MK22FN256xxx12MKL27Z32xxx4LPC832
MK22FN512xxx12MKL27Z64xxx4LPC834
MK22FX512Axxx12MKL28Z512xxx7LPC844
MK22FX512xxx12MKL33Z128xxx4LPC845
MK24FN1M0xxx12MKL33Z256xxx4LPC8N04
MK24FN256xxx12MKL33Z32xxx4
MK26FN2M0xxx18MKL33Z64xxx4
MK27FN2M0Axxx15MKL34Z64xxx4
MK27FN2M0xxx15MKL36Z128xxx4
MK28FN2M0Axxx15MKL36Z256xxx4
MK28FN2M0xxx15MKL36Z64xxx4
MK30DN512xxx10MKL43Z128xxx4
MK30DX128xxx10MKL43Z256xxx4
MK30DX256xxx10MKL46Z128xxx4
MK40DN512xxx10MKL46Z256xxx4
MK40DX128xxx10MKL82Z128xxx7
MK40DX256xxx10MKM34Z256xxx7
MK50DN512xxx10MKS20FN128xxx12
MK50DX256xxx10MKS20FN256xxx12
MK51DN256xxx10MKS22FN128xxx12
MK51DN512xxx10MKS22FN256xxx12
MK51DX256xxx10MKV10Z128xxx7
MK52DN512xxx10MKV10Z16xxx7
MK53DN512xxx10MKV10Z32xxx7
MK53DX256xxx10MKV10Z64xxx7
MK60DN256xxx10MKV11Z128xxx7
MK60DN512xxx10MKV11Z64xxx7
MK60DX256xxx10MKV30F128xxx10
MK63FN1M0xxx12MKV30F64xxx10
MK64FN1M0xxx12MKV31F128xxx10
MK64FX512xxx12MKV31F256xxx12
MK65FN2M0xxx18MKV31F512xxx12
MK65FX1M0xxx18MKV42F128xxx16
MK66FN2M0xxx18MKV42F256xxx16
MK66FX1M0xxx18MKV42F64xxx16
MK80FN256xxx15MKV44F128xxx16
MK82FN256xxx15MKV44F256xxx16
MKE02Z16xxx4MKV44F64xxx16
MKE02Z32xxx4MKV46F128xxx16
MKE02Z64xxx4MKV46F256xxx16
MKE04Z128xxx4MKV56F1M0xxx24
MKE04Z64xxx4MKV56F512xxx24
MKE04Z8xxx4MKV58F1M0xxx24
MKE06Z128xxx4MKV58F512xxx24
MKE06Z64xxx4MKW21D256xxx5
MKE14F256xxx16MKW21D512xxx5
MKE14F512xxx16MKW21Z256xxx4
MKE14Z128xxx7MKW21Z512xxx4
MKE14Z256xxx7MKW22D512xxx5
MKE14Z32xxx4MKW24D512xxx5
MKE14Z64xxx4MKW31Z256xxx4
MKE15Z128xxx7MKW31Z512xxx4
MKE15Z256xxx7MKW35A512xxx4
MKE15Z32xxx4MKW35Z512xxx4
MKE15Z64xxx4MKW36A512xxx4
MKE16F256xxx16MKW36Z512xxx4
MKE16F512xxx16MKW41Z256xxx4
MKE16Z32xxx4MKW41Z512xxx4
MKE16Z64xxx4

 

Boards
FRDM-K22FHVP-KV11Z75MMIMX8QM-MEK-REV-B
FRDM-K28FHVP-KV31F120MMIMX8QX-MEK-REV-B
FRDM-K28FAHVP-KV46F150MMIMXRT1015-EVK
FRDM-K64FHVP-KV58FMIMXRT1020-EVK
FRDM-K66FIMXRT1050-EVKBMIMXRT1060-EVK
FRDM-K82FLPC54018-IoT-ModuleMIMXRT1064-EVK
FRDM-KE02Z40MLPC54S018-IoT-ModuleQN908XCDK
FRDM-KE04ZLPC845BREAKOUTTWR-K21D50M
FRDM-KE06ZLPC8N04DevBoardTWR-K21F120M
FRDM-KE15ZLPCXpresso51U68TWR-K22F120M
FRDM-KE16ZLPCXpresso54018TWR-K24F120M
FRDM-KL02ZLPCXpresso54102TWR-K60D100M
FRDM-KL03ZLPCXpresso54114TWR-K64F120M
FRDM-KL25ZLPCXpresso54608TWR-K65F180M
FRDM-KL26ZLPCXpresso54618TWR-K80F150M
FRDM-KL27ZLPCXpresso54628TWR-KE18F
FRDM-KL28ZLPCXpresso54S018TWR-KL28Z72M
FRDM-KL43ZLPCXpresso55S69TWR-KL43Z48M
FRDM-KL46ZLPCXpresso802TWR-KL82Z72M
FRDM-KL82ZLPCXpresso804TWR-KM34Z75M
FRDM-KV10ZLPCXpresso812TWR-KV10Z32
FRDM-KV11ZLPCXpresso824TWR-KV11Z75M
FRDM-KV31FLPCXpresso845TWR-KV31F120M
FRDM-KW24MAPS-KS22TWR-KV46F150M
FRDM-KW36MCIMX6ULL-EVK-REV-A-6ULZTWR-KV58F220M
FRDM-KW41ZMCIMX7ULP-EVK-REV-BTWR-KW24D512
HEXIWEARMIMX8M-EVK-REV-BUSB-KW24D512
HVP-KE18FMIMX8MM-EVK-REV-CUSB-KW41Z

Components
adc_12b1mspsflexio_i2spit
adc_etcflexio_spiqtmr
adc12flexio_uartrit
adc16ftmrnga
aoigintrtc
cmpgpiortwdog
cmtgptsai
copi2csctimer
crcigpiosemc
csikppsha
ctimerllwusnvs_hp
daclpadcsnvs_lp
dcplpc_adcspdif
dmalpc_crcspi
dmiclpc_dmasystem
dspilpc_gpiotempmon
edmalpc_i2ctpm
eepromlpc_lcdctrng
elcdiflpc_rtcuart
enclpi2cusb
ewmlpsciutick
flexbuslpspivref
flexcanlptmrvspi
flexcomm_i2clpuartvusart
flexcomm_i2smcanwdog
flexcomm_spimrtwdog01
flexcomm_usartpdbwwdt
flexio_i2cpint 

More
1 0 389
NXP Employee
NXP Employee

With the cost of an single pin, many ARM Cortex-M boards including the NXP i.MX RT1064 can produde SWO data: think about a pin able to stream data out of the chip in realtime. For example interrupt activity which otherwise might be hard to capture:

SWO Interrupt Trace

SWO Interrupt Trace

Outline

This article describes how to enable and use the SWO (Single Wire Output) of the ARM Cortex-M7 present in the NXP i.MX RT1064 device.

i.MX RT1064-EVK Board

i.MX RT1064-EVK Board

While this is a very valuable feature, not every development tool supports capturing SWO data. And not every board has the SWO pin routed to the debug header which is a prerequisite to get the data.

JTAG TDO Pin

JTAG TDO Pin (Source: NXP i.MX RT1064 Schematics)

The pin is connected to the AD_B0_10 pin of the i.MX RT1064 device.

Software and tools used:

  • Eclipse: NXP MCUXpresso IDE 10.3.1
  • SDK: NXP MCUXpresso SDK 2.4.1 for i.MX RT1064-EVK

Check SDK Manifest File

To use SWO, it has to be enabled in the SDK manifest file. So let’s check this first.

In the IDE, open the location where the SDK zip files are installed:

Open Location

Open Location

 Best to close the IDE now, as we might need to change the content on disk.

Open the archive:

Open SDK zip file

Open SDK zip file

Locate the manifest XML file:

SDK Manifest File

SDK Manifest File

To check/edit the manifext XML file I can use an external editor or the IDE:

Using the IDE

I can use the IDE to edit the XML (this is useful if I want to change the SDK sources).

To check/edit the file in the IDE workspace preferences, disable the ‘Selected files from SDK View open in read-only mode:

Selected Files Open Option

Selected Files Open Option

Open with the context menu the XML description:

Show XML Description

Show XML Description

In the XML editor, click on the ‘Source’ tab. Search for internal.has_swo:

XML Source tab

XML Source tab

Verify that it has a ‘true’ value. If not, change it to true and save the file.

Using external editor

Below are the steps using an external editor.

Open the file with a text editor and search for ‘internal_has_swo’ and check if it has a ‘true’ value. If not: change the value to true:

internal_has_swo

internal_has_swo

If that change is needed: update the zip file with the new content/file.

 if that setting is set to false, the IDE does not offer the SWO feature and buttons/views will be grayed out/disabled.

Now I can start the IDE again. If I had to modify the XML file, best to recreate the part information in the IDE:

Recreate Part Information

Recreate Part Information

Muxing SWO Pin

Locate the file ‘pin_mux.c’ and add the following lines to BOARD_InitPins():

1
2
3
4
IOMUXC_SetPinMux(
      IOMUXC_GPIO_AD_B0_10_ARM_CM7_TRACE_SWO,     /* GPIO_AD_B0_10 is configured as ARM_TRACE_SWO */
      0U);                                        /* Software Input On Field: Input Path is determined by functionality */
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_10_ARM_CM7_TRACE_SWO,0x00F9u);
BOARD_InitPins

BOARD_InitPins

Open ‘clock_config.c’ and search for the following inside the function BOARD_BootClockRUN():

1
2
3
4
/* Set TRACE_PODF. */
CLOCK_SetDiv(kCLOCK_TraceDiv, 2);
/* Set Trace clock source. */
CLOCK_SetMux(kCLOCK_TraceMux, 2);

and change it to

1
2
3
4
/* Set TRACE_PODF. */
CLOCK_SetDiv(kCLOCK_TraceDiv, 0);
/* Set Trace clock source. */
CLOCK_SetMux(kCLOCK_TraceMux, 3);
clock div and mux

clock div and mux

Finally, add the following to the end of the function BOARD_BootClockRUN(), or add it to main() after the clocks have been initialized.

1
2
3
4
#if 1 /* enable SWO */
CLOCK_EnableClock(kCLOCK_Trace);
#endif

Debugging

The onboard DAPLink debug probe does *not* support SWO, so I’m using an external debug probe (LPC-Link2). Alternatively, the EVK board can be loaded with a LPC-Link2 firmware.

Debugging i.MX RT1064 Board with LPCLink2

Debugging i.MX RT1064 Board with LPC-Link2

In the SWO Trace Config view, the ‘change’ button shall now be enabled:

SWO Trace Config

SWO Trace Config

Use the ‘Detect’ button to detect the SWO speed (note that for the application shall have already passed the clock configuration code):

Detect SWO speed

Detect SWO speed

SWO Views

After this, I can open the various SWO views:

Open SWO views

Open SWO views

The views have a green ‘start’ button to start data collection from SWO:

start button

start button

SWO Counters view:

SWO counters

SWO counters

SWO statistical profiling:

SWO Profile View

SWO Profile View

SWO Data Trace:

SWO Data Trace

SWO Data Trace

Text output with SWO:

ITM Text Output

ITM Text Output

SWO Interrupt Trace:

SWO Interrupt Trace

SWO Interrupt Trace

 The IDE reveference manual/online help describes the views in more detail.

Summary

SWO on the i.MX RT1064 board is a fine thing: it requires some setup and a SWO capable debug probe. But with that extra ARM SWO pin I get extended debug views and data which are very valuable.

I have put an example project on GitHub (see Links section).

Happy SWOing 

Links

- - -

Originally published on June 3, 2019 by Erich Styger

More
2 0 816
NXP Employee
NXP Employee

In my previous articles I have used the command line on Linux to build and debug NXP MCUXpresso SDK applications. In this article I'm running code on NXP i.MX RT1064 in RAM or FLASH.

i.MXRT1064 board with LPC845-BRK as debug probe

i.MXRT1064 board with LPC845-BRK as debug probe

Outline

In this tutorial I'm going to run code in RAM and FLASH (XiP, eXecute in Place) on the i.MX RT1064. For getting started with the MCUXpresso SDK on Linux I recommend to have a read at my previous articles:

I'm using the command line on purpose in this article. The MCUXpresso IDE is available on Linux too and is usually a better and easier starting point for development.

I'm using Linux in a Oracle VM (Ubuntu) with the NXP MCUXpresso SDK for the i.MX RT1064 EVK board (see First Steps with the NXP i.MX RT1064-EVK Board).

NXP i.MX RT1064 Board

The board has the different memory areas available:

  1. internal ITC SRAM, base address: 0x0000'0000, size 0x2'0000 (128 KByte)
  2. internal DTC SRAM, base address: 0x2000'0000, size 0x2'0000 (128 KByte)
  3. internal OC SRAM, base address: 0x2020'0000, size 0xC'0000 (768 KByte)
  4. internal SPI FLASH: base address: 0x7000’0000, size: 0x40’0000 (4 MByte)
  5. external SDRAM,base address 0x8000'0000, size 0x200'0000 (32 MByte)

There is an extra 64 MByte Hyperflash available on the board, but this requires adding/removing resistors on the backside of the board.

i.MX RT1064-EVK Board

i.MX RT1064-EVK Board


Running from FLASH (XiP)

The i.MX RT does not have FLASH memory integrated with the MCU as it is the case for most microcontrollers. Instead it uses serial (SPI) FLASH memory which usually is an external memory chip. In the case of the i.MX RT1064 there are 4 MByte FLASH wired to the device internally. Technically it is the same as having it externally, except that the needed board space is smaller. Because the CPU does not know about the FLASH, the FLASH need a special header programmed at the start of the memory which is read by the CPU. For this the following defines need to be turned on:

XIP_EXTERNAL_FLASH=1 XIP_BOOT_HEADER_ENABLE=1

The SPI FLASH memory is not used for data as it usually is used on microcontrollers. Instead the processor can execute code in it, which is called XiP or 'eXecute in Place'.

The next thing is the linker file: The following file places that header, code, constants and vector table into the external FLASH starting at address 0x7000'0000. The Data-Tightly-Coupled (DTC) RAM is used for the heap and stack.

GROUP (
"libcr_nohost_nf.a"
"libcr_c.a"
"libcr_eabihelpers.a"
"libgcc.a"
)

MEMORY
{
/* Define each memory region */
PROGRAM_FLASH (rx) : ORIGIN = 0x70000000, LENGTH = 0x400000 /* 4M bytes (alias Flash) */
SRAM_DTC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x20000 /* 128K bytes (alias RAM) */
SRAM_ITC (rwx) : ORIGIN = 0x0, LENGTH = 0x20000 /* 128K bytes (alias RAM2) */
SRAM_OC (rwx) : ORIGIN = 0x20200000, LENGTH = 0xc0000 /* 768K bytes (alias RAM3) */
BOARD_SDRAM (rwx) : ORIGIN = 0x80000000, LENGTH = 0x2000000 /* 32M bytes (alias RAM4) */
}

ENTRY(ResetISR)

SECTIONS
{
/* Image Vector Table and Boot Data for booting from external flash */
.boot_hdr : ALIGN(4)
{
FILL(0xff)
__boot_hdr_start__ = ABSOLUTE(.) ;
KEEP(*(.boot_hdr.conf))
. = 0x1000 ;
KEEP(*(.boot_hdr.ivt))
. = 0x1020 ;
KEEP(*(.boot_hdr.boot_data))
. = 0x1030 ;
KEEP(*(.boot_hdr.dcd_data))
__boot_hdr_end__ = ABSOLUTE(.) ;
. = 0x2000 ;
} >PROGRAM_FLASH

/* MAIN TEXT SECTION */
.text : ALIGN(4)
{
FILL(0xff)
__vectors_start__ = ABSOLUTE(.) ;
KEEP(*(.isr_vector))
/* Global Section Table */
. = ALIGN(4) ;
__section_table_start = .;
__data_section_table = .;
LONG(LOADADDR(.data));
LONG( ADDR(.data));
LONG( SIZEOF(.data));
LONG(LOADADDR(.data_RAM2));
LONG( ADDR(.data_RAM2));
LONG( SIZEOF(.data_RAM2));
LONG(LOADADDR(.data_RAM3));
LONG( ADDR(.data_RAM3));
LONG( SIZEOF(.data_RAM3));
LONG(LOADADDR(.data_RAM4));
LONG( ADDR(.data_RAM4));
LONG( SIZEOF(.data_RAM4));
__data_section_table_end = .;
__bss_section_table = .;
LONG( ADDR(.bss));
LONG( SIZEOF(.bss));
LONG( ADDR(.bss_RAM2));
LONG( SIZEOF(.bss_RAM2));
LONG( ADDR(.bss_RAM3));
LONG( SIZEOF(.bss_RAM3));
LONG( ADDR(.bss_RAM4));
LONG( SIZEOF(.bss_RAM4));
__bss_section_table_end = .;
__section_table_end = . ;
/* End of Global Section Table */

*(.after_vectors*)

} > PROGRAM_FLASH

.text : ALIGN(4)
{
*(.text*)
*(.rodata .rodata.* .constdata .constdata.*)
. = ALIGN(4);
} > PROGRAM_FLASH
/*
* for exception handling/unwind - some Newlib functions (in common
* with C++ and STDC++) use this.
*/
.ARM.extab : ALIGN(4)
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > PROGRAM_FLASH

__exidx_start = .;

.ARM.exidx : ALIGN(4)
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > PROGRAM_FLASH
__exidx_end = .;

_etext = .;

/* DATA section for SRAM_ITC */

.data_RAM2 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM2 = .) ;
*(.ramfunc.$RAM2)
*(.ramfunc.$SRAM_ITC)
*(.data.$RAM2*)
*(.data.$SRAM_ITC*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM2 = .) ;
} > SRAM_ITC AT>PROGRAM_FLASH
/* DATA section for SRAM_OC */

.data_RAM3 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM3 = .) ;
*(.ramfunc.$RAM3)
*(.ramfunc.$SRAM_OC)
*(.data.$RAM3*)
*(.data.$SRAM_OC*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM3 = .) ;
} > SRAM_OC AT>PROGRAM_FLASH
/* DATA section for BOARD_SDRAM */

.data_RAM4 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM4 = .) ;
*(.ramfunc.$RAM4)
*(.ramfunc.$BOARD_SDRAM)
*(.data.$RAM4*)
*(.data.$BOARD_SDRAM*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM4 = .) ;
} > BOARD_SDRAM AT>PROGRAM_FLASH
/* MAIN DATA SECTION */
.uninit_RESERVED : ALIGN(4)
{
KEEP(*(.bss.$RESERVED*))
. = ALIGN(4) ;
_end_uninit_RESERVED = .;
} > SRAM_DTC

/* Main DATA section (SRAM_DTC) */
.data : ALIGN(4)
{
FILL(0xff)
_data = . ;
*(vtable)
*(.ramfunc*)
*(NonCacheable.init)
*(.data*)
. = ALIGN(4) ;
_edata = . ;
} > SRAM_DTC AT>PROGRAM_FLASH

/* BSS section for SRAM_ITC */
.bss_RAM2 : ALIGN(4)
{
PROVIDE(__start_bss_RAM2 = .) ;
*(.bss.$RAM2*)
*(.bss.$SRAM_ITC*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM2 = .) ;
} > SRAM_ITC

/* BSS section for SRAM_OC */
.bss_RAM3 : ALIGN(4)
{
PROVIDE(__start_bss_RAM3 = .) ;
*(.bss.$RAM3*)
*(.bss.$SRAM_OC*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM3 = .) ;
} > SRAM_OC

/* BSS section for BOARD_SDRAM */
.bss_RAM4 : ALIGN(4)
{
PROVIDE(__start_bss_RAM4 = .) ;
*(.bss.$RAM4*)
*(.bss.$BOARD_SDRAM*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM4 = .) ;
} > BOARD_SDRAM

/* MAIN BSS SECTION */
.bss : ALIGN(4)
{
_bss = .;
*(NonCacheable)
*(.bss*)
*(COMMON)
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
} > SRAM_DTC

/* NOINIT section for SRAM_ITC */
.noinit_RAM2 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM2*)
*(.noinit.$SRAM_ITC*)
. = ALIGN(4) ;
} > SRAM_ITC

/* NOINIT section for SRAM_OC */
.noinit_RAM3 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM3*)
*(.noinit.$SRAM_OC*)
. = ALIGN(4) ;
} > SRAM_OC

/* NOINIT section for BOARD_SDRAM */
.noinit_RAM4 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM4*)
*(.noinit.$BOARD_SDRAM*)
. = ALIGN(4) ;
} > BOARD_SDRAM

/* DEFAULT NOINIT SECTION */
.noinit (NOLOAD): ALIGN(4)
{
_noinit = .;
*(.noinit*)
. = ALIGN(4) ;
_end_noinit = .;
} > SRAM_DTC

/* Reserve and place Heap within memory map */
_HeapSize = 0x1000;
.heap : ALIGN(4)
{
_pvHeapStart = .;
. += _HeapSize;
. = ALIGN(4);
_pvHeapLimit = .;
} > SRAM_DTC

_StackSize = 0x1000;
/* Reserve space in memory for Stack */
.heap2stackfill :
{
. += _StackSize;
} > SRAM_DTC
/* Locate actual Stack in memory map */
.stack ORIGIN(SRAM_DTC) + LENGTH(SRAM_DTC) - _StackSize - 0: ALIGN(4)
{
_vStackBase = .;
. = ALIGN(4);
_vStackTop = . + _StackSize;
} > SRAM_DTC

/* Provide basic symbols giving location and size of main text
* block, including initial values of RW data sections. Note that
* these will need extending to give a complete picture with
* complex images (e.g multiple Flash banks).
*/
_image_start = LOADADDR(.text);
_image_end = LOADADDR(.data) + SIZEOF(.data);
_image_size = _image_end - _image_start;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Running from OC (On-Chip) RAM

It is possible to avoid external FLASH with linking things to the different RAM sections of the device. The following linker file runs everything from RAM:

GROUP (
"libcr_nohost_nf.a"
"libcr_c.a"
"libcr_eabihelpers.a"
"libgcc.a"
)

MEMORY
{
/* Define each memory region */
PROGRAM_FLASH (rx) : ORIGIN = 0x70000000, LENGTH = 0x400000 /* 4M bytes (alias Flash) */
SRAM_OC (rwx) : ORIGIN = 0x20200000, LENGTH = 0xc0000 /* 768K bytes (alias RAM) */
SRAM_ITC (rwx) : ORIGIN = 0x0, LENGTH = 0x20000 /* 128K bytes (alias RAM2) */
SRAM_DTC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x20000 /* 128K bytes (alias RAM3) */
BOARD_SDRAM (rwx) : ORIGIN = 0x80000000, LENGTH = 0x2000000 /* 32M bytes (alias RAM4) */
}

/* Define a symbol for the top of each memory region */
__base_PROGRAM_FLASH = 0x70000000 ; /* PROGRAM_FLASH */
__base_Flash = 0x70000000 ; /* Flash */
__top_PROGRAM_FLASH = 0x70000000 + 0x400000 ; /* 4M bytes */
__top_Flash = 0x70000000 + 0x400000 ; /* 4M bytes */
__base_SRAM_OC = 0x20200000 ; /* SRAM_OC */
__base_RAM = 0x20200000 ; /* RAM */
__top_SRAM_OC = 0x20200000 + 0xc0000 ; /* 768K bytes */
__top_RAM = 0x20200000 + 0xc0000 ; /* 768K bytes */
__base_SRAM_ITC = 0x0 ; /* SRAM_ITC */
__base_RAM2 = 0x0 ; /* RAM2 */
__top_SRAM_ITC = 0x0 + 0x20000 ; /* 128K bytes */
__top_RAM2 = 0x0 + 0x20000 ; /* 128K bytes */
__base_SRAM_DTC = 0x20000000 ; /* SRAM_DTC */
__base_RAM3 = 0x20000000 ; /* RAM3 */
__top_SRAM_DTC = 0x20000000 + 0x20000 ; /* 128K bytes */
__top_RAM3 = 0x20000000 + 0x20000 ; /* 128K bytes */
__base_BOARD_SDRAM = 0x80000000 ; /* BOARD_SDRAM */
__base_RAM4 = 0x80000000 ; /* RAM4 */
__top_BOARD_SDRAM = 0x80000000 + 0x2000000 ; /* 32M bytes */
__top_RAM4 = 0x80000000 + 0x2000000 ; /* 32M bytes */

ENTRY(ResetISR)

SECTIONS
{
/* MAIN TEXT SECTION */
.text : ALIGN(4)
{
FILL(0xff)
__vectors_start__ = ABSOLUTE(.) ;
KEEP(*(.isr_vector))
/* Global Section Table */
. = ALIGN(4) ;
__section_table_start = .;
__data_section_table = .;
LONG(LOADADDR(.data));
LONG( ADDR(.data));
LONG( SIZEOF(.data));
LONG(LOADADDR(.data_RAM2));
LONG( ADDR(.data_RAM2));
LONG( SIZEOF(.data_RAM2));
LONG(LOADADDR(.data_RAM3));
LONG( ADDR(.data_RAM3));
LONG( SIZEOF(.data_RAM3));
LONG(LOADADDR(.data_RAM4));
LONG( ADDR(.data_RAM4));
LONG( SIZEOF(.data_RAM4));
__data_section_table_end = .;
__bss_section_table = .;
LONG( ADDR(.bss));
LONG( SIZEOF(.bss));
LONG( ADDR(.bss_RAM2));
LONG( SIZEOF(.bss_RAM2));
LONG( ADDR(.bss_RAM3));
LONG( SIZEOF(.bss_RAM3));
LONG( ADDR(.bss_RAM4));
LONG( SIZEOF(.bss_RAM4));
__bss_section_table_end = .;
__section_table_end = . ;
/* End of Global Section Table */

*(.after_vectors*)

} > SRAM_OC

.text : ALIGN(4)
{
*(.text*)
*(.rodata .rodata.* .constdata .constdata.*)
. = ALIGN(4);
} > SRAM_OC
/*
* for exception handling/unwind - some Newlib functions (in common
* with C++ and STDC++) use this.
*/
.ARM.extab : ALIGN(4)
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > SRAM_OC

__exidx_start = .;

.ARM.exidx : ALIGN(4)
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > SRAM_OC
__exidx_end = .;

_etext = .;

/* DATA section for SRAM_ITC */

.data_RAM2 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM2 = .) ;
*(.ramfunc.$RAM2)
*(.ramfunc.$SRAM_ITC)
*(.data.$RAM2*)
*(.data.$SRAM_ITC*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM2 = .) ;
} > SRAM_ITC AT>SRAM_OC
/* DATA section for SRAM_DTC */

.data_RAM3 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM3 = .) ;
*(.ramfunc.$RAM3)
*(.ramfunc.$SRAM_DTC)
*(.data.$RAM3*)
*(.data.$SRAM_DTC*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM3 = .) ;
} > SRAM_DTC AT>SRAM_OC
/* DATA section for BOARD_SDRAM */

.data_RAM4 : ALIGN(4)
{
FILL(0xff)
PROVIDE(__start_data_RAM4 = .) ;
*(.ramfunc.$RAM4)
*(.ramfunc.$BOARD_SDRAM)
*(.data.$RAM4*)
*(.data.$BOARD_SDRAM*)
. = ALIGN(4) ;
PROVIDE(__end_data_RAM4 = .) ;
} > BOARD_SDRAM AT>SRAM_OC
/* MAIN DATA SECTION */
.uninit_RESERVED : ALIGN(4)
{
KEEP(*(.bss.$RESERVED*))
. = ALIGN(4) ;
_end_uninit_RESERVED = .;
} > SRAM_OC

/* Main DATA section (SRAM_OC) */
.data : ALIGN(4)
{
FILL(0xff)
_data = . ;
*(vtable)
*(.ramfunc*)
*(.data*)
. = ALIGN(4) ;
_edata = . ;
} > SRAM_OC AT>SRAM_OC

/* BSS section for SRAM_ITC */
.bss_RAM2 : ALIGN(4)
{
PROVIDE(__start_bss_RAM2 = .) ;
*(.bss.$RAM2*)
*(.bss.$SRAM_ITC*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM2 = .) ;
} > SRAM_ITC

/* BSS section for SRAM_DTC */
.bss_RAM3 : ALIGN(4)
{
PROVIDE(__start_bss_RAM3 = .) ;
*(.bss.$RAM3*)
*(.bss.$SRAM_DTC*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM3 = .) ;
} > SRAM_DTC

/* BSS section for BOARD_SDRAM */
.bss_RAM4 : ALIGN(4)
{
PROVIDE(__start_bss_RAM4 = .) ;
*(.bss.$RAM4*)
*(.bss.$BOARD_SDRAM*)
. = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
PROVIDE(__end_bss_RAM4 = .) ;
} > BOARD_SDRAM

/* MAIN BSS SECTION */
.bss : ALIGN(4)
{
_bss = .;
*(.bss*)
*(COMMON)
. = ALIGN(4) ;
_ebss = .;
PROVIDE(end = .);
} > SRAM_OC

/* NOINIT section for SRAM_ITC */
.noinit_RAM2 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM2*)
*(.noinit.$SRAM_ITC*)
. = ALIGN(4) ;
} > SRAM_ITC

/* NOINIT section for SRAM_DTC */
.noinit_RAM3 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM3*)
*(.noinit.$SRAM_DTC*)
. = ALIGN(4) ;
} > SRAM_DTC

/* NOINIT section for BOARD_SDRAM */
.noinit_RAM4 (NOLOAD) : ALIGN(4)
{
*(.noinit.$RAM4*)
*(.noinit.$BOARD_SDRAM*)
. = ALIGN(4) ;
} > BOARD_SDRAM

/* DEFAULT NOINIT SECTION */
.noinit (NOLOAD): ALIGN(4)
{
_noinit = .;
*(.noinit*)
. = ALIGN(4) ;
_end_noinit = .;
} > SRAM_OC

/* Reserve and place Heap within memory map */
_HeapSize = 0x1000;
.heap : ALIGN(4)
{
_pvHeapStart = .;
. += _HeapSize;
. = ALIGN(4);
_pvHeapLimit = .;
} > SRAM_OC

_StackSize = 0x1000;
/* Reserve space in memory for Stack */
.heap2stackfill :
{
. += _StackSize;
} > SRAM_OC
/* Locate actual Stack in memory map */
.stack ORIGIN(SRAM_OC) + LENGTH(SRAM_OC) - _StackSize - 0: ALIGN(4)
{
_vStackBase = .;
. = ALIGN(4);
_vStackTop = . + _StackSize;
} > SRAM_OC

/* Provide basic symbols giving location and size of main text
* block, including initial values of RW data sections. Note that
* these will need extending to give a complete picture with
* complex images (e.g multiple Flash banks).
*/
_image_start = LOADADDR(.text);
_image_end = LOADADDR(.data) + SIZEOF(.data);
_image_size = _image_end - _image_start;
}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Mixing RAM and FLASH

Running code from RAM has a performance benefit. So it makes sense to run 'slower' parts in normal XiP FLASH, but run code in RAM where higher performance is needed.

To place a function into RAM, I add an attribute with the desired section name:

static void __attribute__((section (".ramfunc"))) blinkRAM(void) {
if (g_pinSet) {
GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
g_pinSet = false;
} else {
GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
g_pinSet = true;
}
}‍‍‍‍‍‍‍‍‍

With this, the function gets copied and placed in RAM. One thing to note is that depending on the call distance a veneer function might be used to reach the RAM address where the function is placed. More details on this topic in Execute-Only Code with GNU and gcc which covers that topic from a different angle.

Summary

It is possible to place code and data either in FLASH or in RAM. All what is needed is the correct linker file for it. The placement is controlled by the linker file, and with using __attribute__ parts of the application can be in FLASH or RAM. If you are not familiar with the GNU linker file syntax, I recommend you start with the MCUXpresso IDE because it provides projects with working linker files.

Happy XiPing :-)


Links

- - -

Originally published on May 19, 2019 by Erich Styger

More
1 0 595
NXP Employee
NXP Employee

I admit: my work laptop machine is running a Windows 10 OS by default. But this does not prevent me running Linux in a Virtual Machine (VM). Each host platform has its benefits, and I don’t feel biased to one or the other, but I have started using Ubuntu more and more, simply because I have worked more on Embedded Linux projects. While I have used mostly Windows with Eclipse for NXP LPC, Kinetis and i.MX platforms in the past, I started using Ubuntu too from last year with the NXP MCUXpresso SDK. I did not find much documentation about this on the web, so I thought it might be a good idea to write a tutorial about it. So here we go…

Outline

This tutorial shows how to install and develop on Linux with the NXP MCUXpresso SDK. It goes through the steps all the needed pieces and to build one of the SDK example projects.

If you want to develop the easy way with MCUXpesso SDK using a GUI: The MCUXpresso IDE (Eclipse based) runs on Ubuntu (and Windows and Mac) too. This article uses make files and no GUI for a ‘headless’ or ‘GUI-less’ environment.

This is what I’m using in this tutorial:

Blinky on FRDM-K64F Board

Blinky on FRDM-K64F Board

Linux Host

I recommend using Ubuntu Linux. I’m using it in a VM (Virtual Machine) on Windows 10 with the Oracle VirtualBox. There are plenty of tutorials available on the internet about installing Ubuntu on VirtualBox if you are not familiar with it.

NXP MCUXpresso SDK

Select and configure the SDK on https://mcuxpresso.nxp.com. The important part is to select Linux as Host OS and GCC ARM Embedded as toolchain:

MCUXpresso SDK

MCUXpresso SDK

Then click on ‘Download SDK’ and download the archive to the user home directory and extract it there in a subdirectory:

$ cd ~ $ mkdir MCUXpresso $ cd MCUXpresso $ mkdir SDK_2.5.0_FRDM-K64F $ cd SDK_2.5.0_FRDM-K64F

Place the SDK .tar.gz file into that created folder. Unzip the downloaded SDK file:

$ gunzip SDK_2.5.0_FRDM-K64F.tar.gz

Then untar the archive:

tar -xvf SDK_2.5.0_FRDM-K64F.tar

Extraced SDK Files

Installing CMake

By default the SDK is using CMake and not directly normal make files. As CMake is not installed by default in my Ubuntu distribution, I have to add it:

$ sudo apt install cmake

CMake is a cross-platform make file *generator*. As with the make file syntax, it takes some time to learn using. To learn more about CMake: there are plenty of resources available online, a good starting point is https://cmake.org/.

I’m using cmake 3.10.2. The SDK documentation recommends using an older version 3.0.x. Using the 3.10 version will show warnings like ‘The CMAKE_FORCE_C_COMPILER macro is deprecated.  Instead just set CMAKE_C_COMPILER and allow CMake to identify the compiler.’ because the SDK cmake files are not compatible with newer cmake versions. The warnings are annoying, but do not affect the functionality so they can be ignored.

Installing GNU ARM Toolchain for Embedded

To develop with the SDK, I have to install a cross toolchain, available from https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-...

I don’t want to have the toolchain installed for everyone on my Linux, so I install it locally into a ‘opt’ folder inside my user home directory:

The reason for this is to separate different GNU ARM Embedded Toolchains for different projects. If I would add it to the global path/system, separation would be very difficult.

$ mkdir ~/opt $ cd ~/opt

The current release is gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz which I download with

$ wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-...

unzip the archive:

$ tar xjf gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2

Finally change the permissions to read-only:

$ chmod -R -w "${HOME}"/opt/gcc-arm-none-eabi-7-2017-q4-major

Verify that the compiler is working:

$ ~/opt/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi-gcc --version

which returns the following:

arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2018-q4-major) 8.2.1 20181213 (release) [gcc-8-branch revision 267074] Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

CMake Environment

CMake needs a variable set to find the compiler. This can be done with

$ export ARMGCC_DIR=~/opt/gcc-arm-none-eabi-8-2018-q4-major

To make it permanent for the user, it can be added to the ~/.bashrc file:

$ nano ~/.bashrc

And then add it to the file which gets executed every time I log in as this user.

Setting Environment

Setting Environment

Use CTRL+X to exit nano and to save the file.

Building Example SDK Projects

In the next step I’m going to build one of the example projects: the LED Blinky one:

$ cd ~/MCUXpresso/SDK_2.5.0_FRDM-K64F/boards/frdmk64f/demo_apps/led_blinky/armgcc
LED Blinky Example Projects

LED Blinky Example Projects

This folder contains several *.bat files (left-over from the Windows world?). Relevant are the Shell script *.sh script files:

  • clean.sh: used to clean the build files
  • build_release.sh: generate make file for a release build
  • build_debug.sh: generate make file for a debug build
  • build_all.sh: build a make file for release and debug build

The shell script to generate the make file are using cmake (see above) with all the necessary information for cmake in the CMakeLists.txt file.

To build a make file for both debug version:

$ ./build_debug.sh
Running build_debug.sh

Running build_debug.sh

Beside of generating the make file, it generates the binary too in the ‘debug’ output folder:

Generated Files

Generated Files

With the ‘file’ command I can verify that indeed the correct binary has been produced:

$ file debug/led_blinky.elf
ELF 32-bit Executable

ELF 32-bit Executable

Because CMake has generated all the needed make files, I can now build the project with

$ make

To clean it I can use

$ make clean

that’s it 

Summary

With this tutorial I showed the installation of the necessary tools (SDK, cmake, GNU ARM for Embedded toolchain) and how to build example projects.

In a next part I’ll touch on the debugging part with gdb. Until then, I hope you find this one useful.

Happy Linuxing :-)

Links

- - -

Originally published on April 14, 2019 by Erich Styger

More
1 0 1,163
NXP Employee
NXP Employee

The following article is a step-by-step tutorial how to use the NXP MCUXpresso SDK & IDE to create a SD card bootable image on i.MX RT. It features the i.MX RT1050-EVK(B) but is with minor changes applicable to any other i.MX RT device:

Tutorial: Booting the NXP i.MX RT from Micro SD Card

  • Creating a project running in RAM
  • Generating S19 file
  • Running application in RAM
  • Creating SD card boot image with Flashloader and elftosb
  • Loading image to SD card with MfgTool
  • Booting i.MX from SD card image

sw7-on-i.mxrt1050-evkb-for-sd-card-boot-1.png

I hope you find it useful,

Erich

More
0 0 321
NXP Employee
NXP Employee

We are pleased to announce that MCUXpresso Config Tools v5 are now available.

 

MCUXpresso Configuration Tools is a product with set of tools that help users of all levels with a Cortex-M-based MCU solution.

Features

  • Available as Web, Desktop application and MCUXpresso IDE plug-ins
  • MCUXpresso SDK v2 support
  • Multicore support
  • GUI localized for English and Simplified Chinese
  • Mostly Connected: On-Demand device data download
  • Integrates with any compiler and IDE
  • Currently there are the following tools available: 

    V4_ico_peripherals.pngV4_ico_pins.pngV4_ico_clocks.png

    • Peripherals
    • Pins  
    • Clocks

Downloads

Overview of Changes - version 5

  • New Configuration Wizard allows to specify the default core for multi-core processors.

  • New Configuration Wizard tool allow easily create hello-world project for select board.

  • Data Manager - allows overview of downloaded data, their versions, tool support information, update out dated, or manually download new data.

  • Added ability to import/export (Clocks) configuration from registers state. Memory dump and csv formats are supported.

  • Clock Consumers view in Clocks tool improved. Shows peripheral consumers in tree with additional information about active input frequency. Selected peripheral input is highlighted in all relevant views (Clocks Diagram, Clocks Table and Details).

  • Diagram element search added to Clocks Diagram toolbar.

  • Project Cloner: Added support for MCUxpresso SDK v2.5.x.

  • Copy/Paste of pin(s) supported in Routed Pins view.

  • Checkbox behavior in the Peripherals View updated. It is used to enable/disable component instance now.

  • Error and/or warning indication added into the Peripherals View.

  • More filter options in the Peripherals View.

  • Simplified and more effective layout of the Components View - tree representation was replaced with grid.

  • Added in-tool tutorials - eclipse Cheat Sheets integration.

 

Community

MCUXpresso Config Tools

MCUXpresso Config Tools Data

The Data for MCUXpresso Config Tools v5 was successfully deployed on the production system.

 

What’s new in data

The Data for MCUXpresso Config Tools v5 release provides following updates:

  1. Update of all supported processors data to support new features introduced in MCUXpresso Config Tools v5
  2. New LPC54S0xx processors and boards (provided by SDK NPI team)
  3. Update of Peripherals tool components to support SDK Release 9
  4. New LLWU and CMT Peripherals tool components
  5. Support of Peripherals tool components recently introduced for RT processors
  6. Various bug fixes and improvements

Supported processors, boards, kits and components

 

Processors:

LPC

Kinetis

i.MX

Other

LPC51U68
LPC54005
LPC54016
LPC54018
LPC54101J256
LPC54101J512
LPC54102J256
LPC54102J512
LPC54113J128 
LPC54113J256 
LPC54114J256 
LPC54605J256 
LPC54605J512 
LPC54606J256 
LPC54606J512 
LPC54607J256 
LPC54607J512 
LPC54608J512 
LPC54616J256 
LPC54616J512 
LPC54618J512 
LPC54628J512
LPC54S005
LPC54S016
LPC54S018
LPC54S606J512 
LPC54S608J512 
LPC54S616J512 
LPC54S618J512 
LPC802
LPC804
LPC810
LPC811
LPC812
LPC822
LPC824
LPC832
LPC834
LPC844
LPC845

MK02FN128xxx10

MK02FN64xxx10

MK10DN512xxx10

MK10DX128xxx10

MK10DX256xxx10

MK11DN512Axxx5

MK11DN512xxx5

MK11DX128Axxx5

MK11DX128xxx5

MK11DX256Axxx5

MK11DX256xxx5

MK12DN512xxx5

MK12DX128xxx5

MK12DX256xxx5

MK20DN512xxx10

MK20DX128xxx10

MK20DX256xxx10

MK21DN512Axxx5

MK21DN512xxx5

MK21DX128Axxx5

MK21DX128xxx5

MK21DX256Axxx5

MK21DX256xxx5

MK21FN1M0Axxx12

MK21FN1M0xxx12

MK21FX512Axxx12

MK21FX512xxx12

MK22DN512xxx5

MK22DX128xxx5

MK22DX256xxx5

MK22FN128xxx10

MK22FN128xxx12

MK22FN1M0Axxx12

MK22FN1M0xxx12

MK22FN256xxx12

MK22FN512xxx12

MK22FX512Axxx12

MK22FX512xxx12

MK24FN1M0xxx12

MK24FN256xxx12

MK26FN2M0xxx18

MK27FN2M0Axxx15

MK27FN2M0xxx15

MK28FN2M0Axxx15

MK28FN2M0xxx15

MK30DN512xxx10

MK30DX128xxx10

MK30DX256xxx10

MK40DN512xxx10

MK40DX128xxx10

MK40DX256xxx10

MK50DN512xxx10

MK50DX256xxx10

MK51DN256xxx10

MK51DN512xxx10

MK51DX256xxx10

MK52DN512xxx10

MK53DN512xxx10

MK53DX256xxx10

MK60DN256xxx10

MK60DN512xxx10

MK60DX256xxx10

MK63FN1M0xxx12

MK64FN1M0xxx12

MK64FX512xxx12

MK65FN2M0xxx18

MK65FX1M0xxx18

MK66FN2M0xxx18

MK66FX1M0xxx18

MK80FN256xxx15

MK82FN256xxx15

MKE02Z16xxx4

MKE02Z32xxx4

MKE02Z64xxx4

MKE04Z128xxx4

MKE04Z64xxx4

MKE04Z8xxx4

MKE06Z128xxx4

MKE06Z64xxx4

MKE14F256xxx16

MKE14F512xxx16

MKE14Z128xxx7

MKE14Z256xxx7

MKE15Z128xxx7

MKE15Z256xxx7

MKE16F256xxx16

MKE16F512xxx16

MKE18F256xxx16

MKE18F512xxx16

MKL02Z16xxx4

MKL02Z32xxx4

MKL02Z8xxx4

MKL03Z16xxx4

MKL03Z32xxx4

MKL03Z8xxx4

MKL13Z32xxx4

MKL13Z64xxx4

MKL14Z32xxx4

MKL14Z64xxx4

MKL15Z128xxx4

MKL15Z32xxx4

MKL15Z64xxx4

MKL16Z128xxx4

MKL16Z256xxx4

MKL16Z32xxx4

MKL16Z64xxx4

MKL17Z128xxx4

MKL17Z256xxx4

MKL17Z32xxx4

MKL17Z64xxx4

MKL24Z32xxx4

MKL24Z64xxx4

MKL25Z128xxx4

MKL25Z32xxx4

MKL25Z64xxx4

MKL26Z128xxx4

MKL26Z256xxx4

MKL26Z32xxx4

MKL26Z64xxx4

MKL27Z128xxx4

MKL27Z256xxx4

MKL27Z32xxx4

MKL27Z64xxx4

MKL28Z512xxx7

MKL33Z128xxx4

MKL33Z256xxx4

MKL33Z32xxx4

MKL33Z64xxx4

MKL34Z64xxx4

MKL36Z128xxx4

MKL36Z256xxx4

MKL36Z64xxx4

MKL43Z128xxx4

MKL43Z256xxx4

MKL46Z128xxx4

MKL46Z256xxx4

MKL82Z128xxx7

MKM34Z256xxx7

MKS20FN128xxx12

MKS20FN256xxx12

MKS22FN128xxx12

MKS22FN256xxx12

MKV10Z128xxx7

MKV10Z16xxx7

MKV10Z32xxx7

MKV10Z64xxx7

MKV11Z128xxx7

MKV11Z64xxx7

MKV30F128xxx10

MKV30F64xxx10

MKV31F128xxx10

MKV31F256xxx12

MKV31F512xxx12

MKV42F128xxx16

MKV42F256xxx16

MKV42F64xxx16

MKV44F128xxx16

MKV44F256xxx16

MKV44F64xxx16

MKV46F128xxx16

MKV46F256xxx16

MKV56F1M0xxx24

MKV56F512xxx24

MKV58F1M0xxx24

MKV58F512xxx24

MKW21D256xxx5

MKW21D512xxx5

MKW21Z256xxx4

MKW21Z512xxx4

MKW22D512xxx5

MKW24D512xxx5

MKW31Z256xxx4

MKW31Z512xxx4

MKW35A512xxx4

MKW35Z512xxx4

MKW36A512xxx4

MKW36Z512xxx4

MKW41Z256xxx4

MKW41Z512xxx4

MCIMX7U3xxxxx
MCIMX7U5xxxxx
MIMX8MQ5xxxHZ
MIMX8MQ5xxxJZ
MIMX8MQ6xxxHZ
MIMX8MQ6xxxJZ
MIMX8MQ7xxxHZ
MIMX8MQ7xxxJZ
MIMXRT1021xxxxx
MIMXRT1051xxxxB

MIMXRT1051xxxxx
MIMXRT1052xxxxB
MIMXRT1052xxxxx

MIMXRT1061xxxxA
MIMXRT1062xxxxA

 

QN908XC

 

 

Boards:

LPC

Kinetis

i.MX

Other

LPC54018-IoT-Module

LPC54S018-IoT-Module

LPCXpresso54S018

LPCXpresso51u68

LPCXpresso54018

LPCXpresso54102

LPCXpresso54114

LPCXpresso54608

LPCXpresso54618

LPCXpresso54628

LPCXpresso54S618

LPCXpresso802

LPCXpresso804

LPCXpresso812

LPCXpresso824

LPCXpresso845

FRDM-K22F
FRDM-K28F
FRDM-K28FA
FRDM-K64F
FRDM-K66F
FRDM-K82F
FRDM-KE02Z40M
FRDM-KE04Z
FRDM-KE06Z
FRDM-KE15Z
FRDM-KL02Z
FRDM-KL03Z
FRDM-KL25Z
FRDM-KL26Z
FRDM-KL27Z
FRDM-KL28Z
FRDM-KL43Z
FRDM-KL46Z
FRDM-KL82Z
FRDM-KV10Z
FRDM-KV11Z
FRDM-KV31F
FRDM-KW24
FRDM-KW36
FRDM-KW41Z
HEXIWEAR
HVP-KE18F
HVP-KV11Z75M
HVP-KV31F120M
HVP-KV46F150M
HVP-KV58F
MAPS-KS22
TWR-K21D50M
TWR-K21F120M
TWR-K22F120M
TWR-K24F120M
TWR-K60D100M
TWR-K64F120M
TWR-K65F180M
TWR-K80F150M
TWR-KE18F
TWR-KL28Z72M
TWR-KL43Z48M
TWR-KL82Z72M
TWR-KM34Z75M
TWR-KV10Z32
TWR-KV11Z75M
TWR-KV31F120M
TWR-KV46F150M
TWR-KV58F220M
TWR-KW24D512
USB-KW24D512
USB-KW41Z

IMXRT1050-EVKB
MIMXRT1020-EVK
MIMXRT1060-EVK
MCIMX7ULP-EVK-REV-B
MIMX8M-EVK-REV-B
fsl-imx8mq-ddr3l-arm2
fsl-imx8mq-ddr4-arm2
fsl-imx8mq-ddr4-arm2-gpmi-nand
fsl-imx8mq-evk
fsl-imx8mq-evk-ak4497
fsl-imx8mq-evk-audio-tdm
fsl-imx8mq-evk-b3
fsl-imx8mq-evk-dcss-adv7535
fsl-imx8mq-evk-dcss-adv7535-b3
fsl-imx8mq-evk-dcss-rm67191
fsl-imx8mq-evk-dcss-rm67191-b3
fsl-imx8mq-evk-dp
fsl-imx8mq-evk-drm
fsl-imx8mq-evk-dual-display
fsl-imx8mq-evk-edp
fsl-imx8mq-evk-inmate
fsl-imx8mq-evk-lcdif-adv7535
fsl-imx8mq-evk-lcdif-adv7535-b3
fsl-imx8mq-evk-lcdif-rm67191
fsl-imx8mq-evk-lcdif-rm67191-b3
fsl-imx8mq-evk-m4
fsl-imx8mq-evk-mipi-csi2
fsl-imx8mq-evk-pcie1-m2
fsl-imx8mq-evk-pdm
fsl-imx8mq-evk-root
imx7ulp-14x14-arm2
imx7ulp-evk
imx7ulp-evk-emmc
imx7ulp-evk-emmc-qspi
imx7ulp-evk-ft5416
imx7ulp-evk-lpuart
imx7ulp-evk-mipi
imx7ulp-evk-qspi
imx7ulp-evk-sd1
imx7ulp-evk-sensors-to-i2c5
imx7ulp-evk-wm8960 60

QN908XCDK

Kits:

Kinetis

FRDM-K22F-AGM01

FRDM-K22F-SA9500

FRDM-K64F-AGM01

FRDM-K64F-MULT2B

FRDMKL25-A8471

FRDMKL25-A8491

FRDMKL25-P3115

 

Components in Peripherals tool:

Components

adc12

adc16

adc_12b1msps_sar

adc_etc

aoi

cmp

cmt

csi

dcp

dma

dspi

edma

elcdif

enc

ewm

flexcan

flexcomm_i2c

flexcomm_spi

flexcomm_usart

flexio_i2c_master

flexio_i2s

flexio_spi

flexio_uart

ftm

gpio

gpt

i2c

igpio

kpp

llwu

lpadc

lpc_adc

lpc_dma

lpc_gpio

lpi2c

lpsci

lpspi

lptmr

lpuart

pit

rtwdog

sai

sctimer

snvs_hp

snvs_lp

spdif

spi

system

tempmon

tpm

trng

uart

usb

wdog01

More
0 0 664
NXP Employee
NXP Employee

The following article explains how to use the MCUXpresso Software and Tools to enable runtime statistics for Amazon FreeRTOS V10:

Tutorial: Using Runtime Statistics with Amazon FreeRTOS V10

With this it is possible to see how much CPU time (Runtime)  is spent by each task in the system:

https://mcuoneclipse.files.wordpress.com/2018/08/freertos-runtime-information.png

Enjoy!

Erich

More
0 0 286
NXP Employee
NXP Employee

I have completed an article (external link) describing how existing Kinetis Design Studio projects can be imported and used in the MCUXpresso IDE:

MCUXpresso IDE: Importing Kinetis Design Studio Projects | MCU on Eclipse 

I hope this is useful,

Erich

More
1 0 1,756
NXP Employee
NXP Employee

The following article (external link) shows how to install the Eclipse Market Client into the MCUXpresso IDE:

MCUXpresso IDE: Adding the Eclipse Marketplace Client | MCU on Eclipse 

The plugin provides a convenient way to install extra Eclipse Plugins:

eclipse-marketplace-menu.png

Enjoy!

Erich

More
0 1 473
NXP Employee
NXP Employee

The following article (external link) shows how to genereate S-Records (.s19), Intel Hex (.hex) and Binary (.bin) files:

MCUXpresso IDE: S-Record, Intel Hex and Binary Files | MCU on Eclipse 

Enjoy!

Erich

More
1 0 494
NXP Employee
NXP Employee

If you have already Kinetis Design Studio v3.x installed on Linux, then you might run into a P&E driver installation problem while installing MCUXpresso IDE v10.0.0 build 344.

David Karibe has described the solution in his blog:

http://karibe.co/2017/03/installing-nxp-mcuxpresso-in-linux/ 

thanks David!

More
0 0 2,312
NXP Employee
NXP Employee

The following blog post gives a tour through some of the features in the NXP MCUXpresso IDE:

MCUXpresso IDE: Unified Eclipse IDE for NXPs ARM Cortex-M Microcontrollers | MCU on Eclipse 

Happy Unifying :-)

Erich

More
0 0 285
Labels
  • General 17