Skip navigation
1 2 3 Previous Next

MCUXpresso IDE

36 posts

Please find attached a document detailing how to debug the Kinetis KE0x range of MCUs via LinkServer (CMSIS-DAP) debug connections using MCUXpresso IDE version 11.1.1 (or later).

 

This document and updates within the version 11.1.1 release of MCUXpresso IDE address an issue seen if attempting to debug these parts in earlier versions of MCUXpresso IDE.

 

Note: it is expected that the issues described in the attached document will be addressed in updated SDK releases for this range of MCUs for use with MCUXpresso IDE version 11.1.1 or later.

 

Yours,

 

MCUXpresso IDE Support

We are pleased to announce that MCUXpresso IDE v11.1.1 (build 3241) is now available.

 

This is a maintenance release that builds upon the previous MCUXpresso IDE v11.1.0, and we recommend that all existing users download and install this new version. It also incorporates a minor update to the integrated MCUXpresso Config Tools.

 

To download the installers for all platforms, please login to our download site via:

 

Notification of future releases

To receive notifications about future releases, please follow : MCUXpresso IDE - Release History 

 

Summary of Changes - version 11.1.1 - March 2020

  • Fixed issue with file path handling when importing examples or creating new projects with certain SDKs (previously made available as a hotfix to IDE v11.1.0 via Eclipse update system)
  • Fixed issue that prevented text zooming in Editor View
  • Fixed issue that caused deletion of most compiler defines if the MCU package for a project were changed
  • Updates to linker script file awareness, including
    • Fixed issue handling situation where symbols are quoted
    • Removed requirement for MEMORY command to provide access attributes
  • Updates to map file awareness, including
    • Fixed issue with handling of ld's PROVIDE keyword
  • Fixed issue with linker script generation related to placement of symbols for .ARM.exidx section (which could trigger issue with C++ exceptions)
  • Restructured way eGIT plugin integrated into IDE (to allow updating by the user). Supplied version also updated to v5.6.0
  • Updates to allow LinkServer debug connections (ie CMSIS-DAP) to i.MX RT6xx "rev B" silicon. Note that these changes mean that earlier i.MX RT6xx silicon can no longer be supported
  • Updates to LinkServer debug to provide support for debugging Kinetis KE0x. Note that manual changes to SDK 2.7.0 or earlier are required for this to be enabled
  • Preliminary LinkServer support for i.MX RT1170 devices
  • Fixed sector size issue with LinkServer flash driver for Kinetis KM3x devices
  • Fixed issue that prevented launch configuration creation (and hence debug) for multicore projects for preinstalled parts (LPC43xx and LPC54xxx)
  • Fixed issue with Peripheral View incorrectly handling 32-bit bitfields within peripheral registers
  • Fixed issue with Registers View such that modifying fields in xpsr could incorrectly modify other fields
  • Added mechanism to Preferences to allow default reset settings used when creating SEGGER launch configurations to be overridden for specific devices
  • Updated integrated version of MCUXpresso Config Tools to v7.0.1
    • TEE tool: Displays correctly inaccessible regions in "Memory attribution map" view
  • Upgraded to a later version of the P&E Micro plugin (v4.5.3)
  • Upgraded to a later version of the SEGGER J-Link software (v6.62d)

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

An issue has been identified in MCUXpresso IDE v11.1.0 with SDK 2.7 that in certain circumstances can cause the IDE to issue one or more erroneous duplicate file error popups when importing SDK examples or creating new SDK-based projects. This in particular may occur when targeting i.MX RT10xx devices, with the error referring to the XIP component, for example :

The file 'xip/evkmimxrt1060_flexspi_nor_config.c' already exists in your project but is different from the SDK component file.

 

We have now issued a "hotfix" for MCUXpresso IDE v11.1.0 to resolve this issue.

 

Installation Instructions

From within MCUXpresso IDE v11.1.0, select  "Help -> Check for Updates" from the main menu bar.

This should find the updated version of the "MCUXpresso IDE SDK handling" feature (11.1.0.202001201653):

Select this, then click through the update wizard to install this. As a final step, you will then need to restart the IDE to complete installation.

 

Note: You may also find that other updates are available to install, in particular for the "PEMicro Interface Debugging Support" (used for debugging via P&E Micro debug probes). You can also choose to install such updates at the same time as the "MCUXpresso IDE SDK handling" update if you wish.

NXP provides MCUXpresso SDKs that are configured for use with our standard evaluation boards. These can be used when carrying out your initial evaluation of our MCUs and early development work. However, in most cases you will reach the point of having your own development or production board. This will mean modifying the pins, clocks and other configuration settings from the evaluation board originally used, generally using the MCUXpresso Config Tools, to match your own board. This will initially be done on a per-project basis.

 

The Board SDK Creator functionality inside MCUXpresso IDE v11.1.0 and later provides a means of generating a secondary SDK to contain these configuration settings for your board, that can be used in conjunction with the original SDK. This can then be used in assisting with the creation of new projects directly for your board and also be easily shared with other members of your team or customers.

 

Using Board SDK Creator

Starting from another SDK, you must first create a new project and adapt it for your own board (with updated pins/clock settings), making any board related changes by adding/modifying files in the project’s board folder. Once the changes are completed, in order to create a board SDK, select File -> New Project… from MCUXpresso IDE’s menu bar and select Board SDK Wizard under MCUXpresso IDE Addons category.

 

 

The wizard is also available in the right-click menu in the project explorer.

 

Once started the following dialog will be shown.

 

The base project will be automatically set if it was already selected in the Project Explorer view. The user interface allows you to define a few basic characteristics of the new SDK being created, such as the name of the custom board, an image of the board, and both brief and more detailed descriptions.

 

 

If the code requires new C/C++ preprocessor definitions, you can add them using the Defines section

 

Once everything is completed you can choose one of two options under the Wizard target section. The first option asks for a name and location for the SDK zip file.  The second option will open the newly created SDK as a project into the current workspace in MCUXpresso IDE, allowing for more advanced customizations of the SDK.

 

Using the board SDK

 After selecting first option and pressing “Finish” button, the SDK will be automatically imported into the IDE and a zip file for it will be generated. In order to install it on other computers, simply drag & drop the newly created SDK over the “Installed SDKs” view. Note: original SDK (the one used to create the custom SDK) must have been installed first (the image below shows this, with a custom SDK built from the Kinetis K64F Tower Board SDK.)

 

 

Once installed you can create a new project using the new SDK. The new SDK will appear in the SDK Wizard dialog, as seen for standard SDKs from NXP (see example below).

 

 

From the SDK Wizard select the new board, making sure to select the new SDK in the “SDKs for Selected MCU” section (bottom right corner of the window). Choose “Next” and “Finish” to close the wizard and close the project. The project will contain all the changes you have made in order to support your custom board.

 

Happy customizing!

We are pleased to announce that MCUXpresso IDE v11.1.0 (build 3209) is now available. This is a major new version of the IDE, and contains many new features and enhancements over the previous MCUXpresso IDE v11.0.1 and earlier releases.

 

Overview Presentation

The attached presentation, recommended viewing for all users (new or experienced), provides an overview of many of the major changes, as well as things to be aware of when upgrading from an earlier release:

This complements the information provided in the IDE's release notes (also included at the end of this post).

 

Installer Downloads

To download the installers for all platforms, please login to our download site via: 

 

Documentation

Additional information can be found in the updated User Guide and other documentation, which can be accessed from the built in help system available via IDE's Help menu and in PDF form from within the installation directory or downloaded from:

 

Notification of future releases

To receive notifications about future releases, please follow : MCUXpresso IDE - Release History 

 

Summary of Changes - version 11.1.0 - December 2019

  • Upgraded underlying Eclipse Framework to 4.12.0.v201906 / CDT9.8.1
  • Upgraded supplied GNU ARM Embedded Toolchain to GCC8-2019q3-update
  • Added support for MCUXpresso SDK v2.7
  • Upgraded integrated version of MCUXpresso Config Tools to v7
  • New Welcome View, providing an improved out-of-box experience for new users. The IDE now also opens for the first time at a larger default window size, improving usability without the need for resizing
  • New "plugin SDK" system provides an easy-to-use mechanism for simplified installation and management of MCUXpresso SDKs
  • Reduced code size of debug builds of SDK projects by decreasing the overhead of the assert() function, which is commonly called by SDK functions. This has been done by the addition of "-fmerge-constants" and "-fmacro-prefix-map" compiler options to project compiler optimization settings
  • Added support for more complex specification of dependencies between SDK components. This allows some components (in particular, middleware ones) that previously could only be accessed through SDK examples, to now be added to projects and configured, either as they are created by the new project wizard, or for existing projects via "Manage SDK Components". Note that this functionality requires SDK 2.7
  • Various enhancements to "Installed SDKs" View, including:
    • New tabs provide easy access to the list of boards and devices that are installed into IDE, in addition to the actual SDKs.
    • Right click menu on a board or device also allows new project wizard (and, for boards, import example wizard) to be run
    • Detailed information on contents of selected SDK is now displayed in Outline View
    • Improved loading of SDKs, including refreshing, improving performance and fixing memory leaks
    • Copy/paste of SDKs now allowed between View and OS filer, as well as between different IDE instances
  • Fixed an issue with sorting of boards in SDK wizards
  • Fixed an issue with handling of combined secure / non-secure with multicore projects
  • Fixed issue with "Manage SDK Components" removing &quot from C++ Symbols in .cproject file
  • Various fixes and enhancements to SDK Editor / Creator, to support "user board SDKs" to act as an extension to a standard MCUXpresso SDK
  • Various fixes and enhancements to Image Info View. In particular:
    • Further improvements to load times
    • Added ability to double-click on memory region in Memory Usage tab and jump to that region in the Memory Contents tab
    • "Load" from project button now provides a drop-down to allow direct loading of info from multiple build configurations into multiple Image Info Views
    • Regular expressions now supported in "Search..." box
    • "Open 'main' symbol" button implemented on toolbar
    • Improved support for projects outside the workspace
  • Various improvements and fixes to map file awareness, including:
    • Improved handling of C++ projects
    • Fixed an issue with handling expressions containing parentheses
  • Various improvements and fixes to linker script file awareness, including improved handling of libraries specified in script
  • Various improvements to the managed linker script system:
    • Standardized set of symbols now generated for sections
    • Fixed an issue with LMA being incorrectly set in some circumstances for sections that do not have a real load address (e.g. .bss). Although this did not prevent the generated image from working, it could cause, for example, erroneous information in Image Info View
    • Plain load image functionality now supported for RT6xx devices
    • LinkServer FreeRTOS debug config rodata now placed by script, when appropriate
  • Increased default java memory settings (-Xms, -Xmx) in mcuxpressoide.ini file. This means the IDE may now use up to 2GB by default
  • Windows build tools now provide 'mv' command
  • Added MCUXpresso Dark Theme, providing better support for IDE's tailored set of Views being used in dark mode
  • * Improved organization of MCUXpresso IDE preferences, in
    particular Debug related ones
  • Project decorators implemented in Project Explorer View to indicate Master/Slave and Secure/Non-secure projects
  • Standardized graphing technology used by SWO Interrupt trace and by Global Variables View
  • Improvements to LinkServer flash driver performance for many devices. In particular, most flash drivers now implement a
    "verify-same" hashing mechanism to remove the need to erase/reprogram when the memory being programmed already has the required content. This can provide a noticeable improvement in debug startup time, particularly when repeatably debugging large, non-changing images
  • Required debug probe can now be selected by double-clicking on it in the "Probes discovered" dialog
  • Global Variables View now uses a check-box system to select variables to be displayed in graphs within the details pane
  • Improved handling of certain variable types, along with signed versus unsigned variables, within the Global Variables View
  • Fixed an issue with display of large arrays in Global Variables View with SEGGER and P&E Micro debug connections, when Live variables are enabled
  • Various fixes and enhancements to the Peripherals View, in particularly some registers being marked as inaccessible when single stepping
  • Fixed an issue with Disassembly View going blank after Restart, with LinkServer debug connections
  • Fixed an issue with flash programming with P&E Micro probes when filename or path contains a space
  • Fixed various memory leaks triggered during debugging
  • Fixed an issue with decoding correct stack pointer to be used in Faults View
  • When debugging secure / non-secure projects, you can now set breakpoints in CMSE functions and view source when breakpoints hit
  • Reduced the RAM footprint of the FTFA_1K.cfx LinkServer flash driver, to prevent issues on some smaller RAM devices that make use of this driver (e.g. MKE14Z32)
  • Additional and improved Linkserver connect scripts for RT10xx devices, which in particular reset the FlexRAM sizes to default. Note that for some devices, these will only be picked up by default if you are using an appropriate SDK 2.7
  • Fixed an issue that could prevent LinkServer SWO trace and power measurement from working on Linux platforms in some circumstances
  • Fixed an issue with setting wirespeed in LinkServer launch configurations
  • Cleaned up various layout issues with launch configuration editor
  • Updates to product and installer to allow better compatibility with newer versions of Ubuntu. Note that our supported Linux platforms remain Ubuntu 16.04 LTS and 18.04 LTS
  • Updates to support new devices, including LPC551x, K32L2A and K32L2B families
  • NXP LPC-LINK2 CMSIS-DAP firmware soft-loaded by IDE updated to v5.361
  • Upgraded to a later version of the P&E Micro plugin (v4.4.1)
  • Upgraded to a later version of the SEGGER J-Link software (v6.54c)

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 
  2. Select the SEMC component
  3. Configure the SDRAM parameters using the UI
  4. Click on Validation View icon to open SEMC Validation tool view
  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.
  6. To set the test parameters and the number of repetitions go to Choose Tests tab
  7. Once the test parameters are set and the scenario is selected, validation can be started by clicking on Start Validation button
  8. Status of the test will be displayed in Test Results view
  9. In Logs view Simple or Real time log can be displayed for each test 
  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 tab
    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. 
      1. After pressing Apply to DCD button, open DCD tool to view the SDRAM initialization 
      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

MCUXpresso IDE is currently supported on macOS 10.12 to 10.14.

 

In macOS 10.15 (Catalina), Apple have introduced a new additional "signing" mechanism for software that is download outside of the Apple App Store, know as "Notarization". Currently MCUXpresso IDE for macOS is signed using NXP's Apple Developer ID, but has not yet gone through Apple's notarization process. This means that by default you will not be able to install if you are running macOS 10.15.

 

Therefore we currently do not claim to officially support MCUXpresso IDE on macOS 10.15. We expect to make a version of MCUXpresso IDE that has been notarized during 2q2020. However in the meantime, you may be still be able to install and use current IDE releases using the following instructions.

 

When you first try to install MCUXpresso IDE on macOS 10.15, you will see a error dialog :InstallError.jpg

which is because the IDE installer is not notarized. Now open up "System Preferences" and select the "Security and Privacy" option:

SecurityPrivacy_Prompt.jpg

and select the "Open Anyway" option for the MCUXpresso IDE installation pkg file.

 

If you now try to run the installer again, you will again receive a dialog warning that it is not notarized, but this time you can now select the "Open" option:
OpenAnyway.jpg
The IDE installer will now be run and install the tools, in the same way as on earlier versions of macOS.


For more information...

Background

 

As part of the MCUXpresso IDE v11.0.1 release, we had to make some major changes to our LinkServer debugging mechanism to support the latest silicon revision of the LPC55xx family of devices (revision 1B) and the more secure debug request mechanism required by these parts. Such silicon is supplied on LPC55S69-EVK boards marked Revision A2 (or later) on the board silkscreen.

 

It has been found since the MCUXpresso IDE v11.0.1 release that these changes to LinkServer can, in certain circumstances, provoke problems when starting debug sessions to the earlier revision 0A production silicon. Such silicon is supplied on LPC55S69-EVK boards marked Revision A1 on the board silkscreen. Boards received before November 2019 are very likely to be this revision. Such issues will often manifest as various error popups being displayed by the IDE and the LinkServer flash driver failing to run to completion during the debug startup sequence, meaning that the debug session fails.

 

This has been resolved in the MCUXpresso IDE v11.1.0 release, but if you are still using v11.0.1, then the issue can be avoided using the supplied updated LinkServer debug configuration script.

 

NOTE 1: This updated script is only needed if debugging revision 0A silicon, but should not cause issues if used with revision 1B. It is also only needed if debugging using a LinkServer debug connection (typically CMSIS-DAP).

 

NOTE 2: Boards marked as LPC55S69-EVK Revision 1, 2 or A are fitted with pre-production silicon and not supported by the latest tools (including those from 3rd party partners) and should no longer be used. Note that if you purchased your board from NXP or one of our distributors it will not be Revision 1, 2 or A. Contact your NXP representative to arrange for a replacement unit if using one of these boards.

 

Installation Instructions

 

Note: This patch is suitable for use with MCUXpresso IDE v11.0.1. It should not be used with MCUXpresso v11.1.0 (or later).

 

To install this updated script file:

 

  • Unzip the attached ZIP file to a temporary location.

 

  • Ensure that MCUXpresso IDE v11.0.1 is not running.

 

  • If you are running on Windows and you have MCUXpresso IDE v11.0.1 installed into the standard installation directory (C:\nxp\MCUXpressoIDE_11.0.1_2563), then you install the patch into your IDE installation by simply running the supplied "install.bat" batch file by either:
    • Double clicking on the batch file in Windows Explorer, or
    • Running the batch file from a Command Prompt Window opened onto the directory containing the unzipped patch files.

 

  • If you are running on Mac OS / Ubuntu, or on Windows with a non-standard IDE installation location:
    • Navigate to the following subdirectory within your IDE v11.0.1 installation folder

.../ide/binaries/ToolScripts

  • Rename the existing file "LS_preconnect_LPC55xx.scp" to "LS_preconnect_LPC55xx.scp.bak".
  • Now copy the supplied new version of the "LS_preconnect_LPC55xx.scp" file into the ToolScripts folder.

 

Now restart the IDE, and click on the "Clean up Debug" button on the main toolbar, to ensure that no debug process have been left running from any previous failed debug attempts.

 

You should now be able to debug successfully. If further problems are seen, please delete any .launch files within your project, along with the build directories (typically "Debug" and/or "Release") before trying again.

Problem

 

An issue has been identified that impacts the debugging of older LPC devices using SEGGER Jlink via the version of MCUXpresso IDE v11.0.1 released on 4th September 2019.

 

This issue will be seen only when debugging an LPC device that use the IDE's Preinstalled part support i.e. parts that do not require an SDK - a debug operation via SEGGER Jlink will lead to an error as below:

 

 

In this instance, the reported error does not accurately identify the cause of this problem.

 

Note: This problem does not impact version 11.0.0 of MCUXpresso IDE. Also, this update is of no benefit for version 11.0.1 users of MCUXpresso IDE unless they are debugging LPC parts via SEGGER JLink and experience the above error.

 

Solution

 

The IDE team have made a fix for this issue which is now available via the standard Eclipse update mechanism. However, this fix is not suitable (or required) for the previous version of MCUXpresso IDE (version 11.0.0). Therefore a dedicated Update Site has been created for MCUXpresso IDE v11.0.1 users to deliver this 'hotfix'.

 

To access this new update site, a small edit should be made to the MCUXpresso IDE Update Site path held within the IDE's preferences. To locate the Preferences dialogue from the IDE:

 

On Windows and Linux: Window -> Preferences

On Mac: MCUXpresso IDE -> Preferences

 

The change can then be made as follows:

 

  • Enter 'update' into the filter field and locate 'Available Software Sites'
  • Select the MCUXpresso IDE Update Site line and click Edit
  • Add the text '_1' to the version making the complete version 'v11_0_1/'
  • Click 'Apply and Close'
    • the graphic below shows the updated dialogue

 

 

Note: this hotfix will be located more quickly if only the MCUXpresso IDE Update site is ticked in the Available Software Sites (above)

 

To locate and apply this update from within the IDE, select: Help -> Check for Updates (as below)

 

 

This will launch a dialogue as below and all selected update locations will be checked for new features:

 

 

After a short while, the hotfix update will be found (as below):

 

 

Click Next and you will be presented with a License dialogue (as below):

 

 

To progress, you must click to accept the license agreement and click Finish. Finally, you will see an installation warning as below:

 

 

This update is a .jar and currently individual .jar files are not signed, hence you can click 'Install anyway' and accept the option to Restart the IDE.

 

 

Once the IDE has restarted, you can view that this hotfix update has been performed. From the IDE select Help -> About -> Installation Details and see the dialogue as below:

 

 

You should now see the Third-party debug solution support plugin is version 11.0.2... and the hotfix has been applied successfully.

We are pleased to announce that MCUXpresso IDE v11.0.1 (build 2563) is now available.

 

This is a maintenance release that builds upon the previous MCUXpresso IDE v11.0.0 release, and we recommend that all existing users download and install this new version. It also incorporates a minor update to the integrated MCUXpresso Config Tools.

 

To download the installers for all platforms, please login to our download site via:

 

IMPORTANT NOTE 1 : An issue has been identified with MCUXpresso IDE v11.0.1 that impacts the debugging of older LPC devices using SEGGER J-Link. This issue will be seen only when debugging an LPC device that uses the IDE's preinstalled part support i.e. parts that do not require an SDK. For more details, along with a hotfix patch to resolve this issue, please see:

 

IMPORTANT NOTE 2 : An issue has been identified with MCUXpresso IDE v11.0.1 that impacts the debugging of LPC55S6x Revision 0A silicon devices (as found on LPCXpresso55S69 Revision A1 boards) in some circumstances via LinkServer debug connections (typically CMSIS-DAP). For more details, along with a hotfix patch, please see:

 

Summary of Changes - version 11.0.1 - September 2019

  • Updates to allow LinkServer debug connections (ie CMSIS-DAP) to LPC55S6x "rev 1B" silicon and other devices that implement "debug mailbox request" mechanism. Note that these changes mean that some pre-production LPC55S6x silicon can no longer be supported
  • Updates to support new devices, including K32L3A and i.MX RT1010 families
  • Link to https://mcuxpresso.nxp.com now provided in New Project and Import SDK example(s) wizards, improving accessibility for downloading additional SDKs
  • Updates to map file awareness, including improvements to loading speed
  • Fixed various issues with Image Info view
  • Fixed issue with floating point options being incorrectly set for SDK example projects with C++ nature in some circumstances
  • Extended "include paths" indexer fix implemented in IDE v11.0.0 to also work with library projects
  • Fixed issue with SDK multicore examples importing with managed linker script settings not being configured correctly in some circumstances
  • Fixed memory leak in Installed SDKs view when regeneration of part support info triggered
  • Managed linker script mechanism now generates references to "CodeQuickAccess"", "DataQuickAccess" and "RamFunction" input sections (required by some SDK examples/ drivers) in default .data output section
  • Fixed issue with Debug Shortcuts in QuickStart Panel incorrectly selecting attach/debug option in some circumstances
  • Fixed various minor issues with GUI Flash Tool
  • Fixed issue with Global Variables view slowing down debug launches with C++ projects
  • Fixed addresses > 0x80000000 issue with Heap and Stack Usage view
  • Fixed issue with Global Variables view graphs updating when target suspended
  • Fixed issue with Peripherals View with LPC17xx devices, particularly effecting display of certain enumerations
  • Fixed issue with Peripherals View refresh. This could cause some registers to sometimes be erroneously displayed as unavailable
  • Fixed issue with LinkServer launch configuration wirespeed setting being ignored in some circumstances
  • Updated the way the IDE autodetects installed SEGGER software. This is required due to changes SEGGER have made to the default options of their Windows installer in v6.46 and later of their software
  • Fixed issue with P&E and SEGGER implementations of live variables service (required to support live update of globals in Global Variables view). This issue could provoke problems in some circumstances when debugging via these probes including slow debug performance and failure to display locals inside the Variables view
  • Fixed issue with display of large arrays when using P&E or SEGGER debug connections
  • Fixed issue which could trigger error when manually creating a J-Link launch configuration
  • Upgraded to a later version of the P&E Micro plugin (v4.2.5)
  • Upgraded to a later version of the SEGGER J-Link software (v6.46k)
  • Fixed build issue with MCUXpresso IDE v11.0.0 User Guide which caused last chapter ("Appendix – Additional Hints and Tips") to be merged into the previous chapter ("Multicore Projects") as section 19.6 onwards. Actual content of manuals provided with IDE v11.0.1 otherwise unchanged from v11.0.0 manuals

The Windows installer for SEGGER J-Link has changed behaviour for version after V6.44 i.e. after the version installed with V11.0.0 of the IDE. Previously each SEGGER installation was located in a versioned directory e.g. JLink_V644g, now each new installation will by default, write to C:\Program Files (x86)\SEGGER\JLink.

 

This change will only impact Windows users who manually install a later version of SEGGER J-Link for use within MCUXpresso IDE.

 

For reference, please also see the MCUXpresso IDE User Guide v11.0.0 section 5.8.1 'SEGGER software installation' which details the handling of SEGGER installations within the IDE.

 

There are two scenarios where problems may be seen and these are discussed below:

 

A user installs and wishes to use a newer version of SEGGER J-Link with MCUXpresso IDE

 

Previously, when a new workspace was created, the newest SEGGER installation would automatically be selected for use. Alternatively, Windows -> Preferences -> MCUXpresso IDE -> J-Link Options -> Restore Defaults could be used to automatically search for the latest installation and update the path to the required server.

 

Now to use the new install the user must manually browse to the new server location via the preference at:  Windows -> Preferences -> MCUXpresso IDE -> J-Link Option and select:

C:\Program Files (x86)\SEGGER\JLink\JLinkGDBServerCL.exe

 

This must be done for any existing workspace or when a new workspace is chosen, otherwise the most recent install using the old scheme will be selected for use.

 

All existing SEGGER J-Link installations have been uninstalled and a new installation has been performed

 

Previously, the IDE would have recognised that its SEGGER path information was incorrect and automatically searched for a latest install. However, this mechanism will not find an installation using the new default location. Therefore the user must manually browse to select the Server as described above.

 

Note: this issue will be addressed in the next update to MCUXpresso IDE later this year.

I think this might be late since I was using Ubuntu 18.04 until recently when I upgraded to latest version 19.04

Tried to install Mcuxpresso IDE I encountered some dependency errors but managed to solved it. I had already replied to question about it but decided #to write main post about it.

 

This is what I did (installed the dependencies)

(my laptop is 64 bit)

sudo apt install libusb-1.0-0-dev

 

sudo apt install dfu-util

download  amd64 build of icu 60.1-1 

install the package (open terminal from the file location)

sudo dpkg -i libicu60_60.1-1ubuntu2_amd64.deb

download libjavascriptcoregtk-1.0-0_2.4.11-4

and install

sudo dpkg -i libjavascriptcoregtk-1.0-0_2.4.11-4_amd64.deb

download libwebkitgtk-1.0-0_2.4.11-4

and install

sudo dpkg -i  libwebkitgIDEIDEtk-1.0-0_2.4.11-4_amd64.deb

install IDE(open terminal from file location)

install.....

sudo chmod  +x ./mcuxpressoide-11.0.0_2516.x86_64.deb.bin

sudo ./mcuxpressoide-11.0.0_2516.x86_64.deb.bin

After this you should home and dry 

Everything worked well.

If you have any problem you can reply to this post.

We are pleased to announce that MCUXpresso IDE v11.0.0 (build 2516) is now available.

 

This is a major new version of the IDE, and contains many new features and enhancements over the previous MCUXpresso IDE v10.3.1 and earlier releases. The attached presentation, recommended viewing for all users (new or experienced), provides an overview of many of the major changes, as well as things to be aware of when upgrading from an earlier release:

 

To download the installers for all platforms, please login to our download site via: 

 

Additional information can be found in the updated User Guide and other documentation, which can be accessed from the built in help system available via IDE's Help menu and in PDF form from within the installation directory or downloaded from:

 

Summary of Changes - version 11.0.0 - June 2019

  • Upgraded underlying Eclipse Framework to 4.10.0v201812 / CDT 9.6.0

  • Upgraded supplied GNU ARM Embedded Toolchain to GCC8 (2018q4-major)

  • Windows version of product now only runs on Win64 (IDE v10.3.1 and earlier ran on Win32 & Win64 platforms). Note that this change has been driven by the fact that Eclipse framework is now 64-bit only. [ Ubuntu and MacOS versions of product already only ran on 64-bit platforms.]

  • Updated version of "busybox", used on Windows to provide a Unix-like layer for GCC tools to run under, to "GNU MCU Eclipse Windows Build Tools" v2.12 (64bit)

  • Added support for MCUXpresso SDK v2.6

  • Upgraded integrated version of MCUXpresso Config Tools to v6

  • Revamped Develop Perspective with some new and additional views shown by default. Also decluttered by removal of some less commonly used views. Most of the removed views can be added back via the new 'Analysis' menu

  • New "Image Info" View improves and extends on the functionality previously provided by the “Symbols Browser” view, giving the following analysis of a project build:

    • Overall memory usage
    • Content of memory regions

    • Static call graph, including stack usage information

  • New "Heap and Stack Usage" view provides ability to track heap and stack usage during debug of baremetal projects

  • Implemented "editor awareness" for linker map files, linker scripts and linker script templates, providing syntax coloring as well as navigation of file contents via the Outline view

  • Improved display of components in New Project Wizard and Managed Components dialog. Display of different component types is now tabbed, with an additional summary of the components selected

  • The New Project Wizard will now open the main source file in the Editor view after project creation

  • When importing a single SDK example, the wizard will now attempt to open the main source file in the Editor view after project creation. This functionality can also be enabled when importing multiple examples through a workspace preference

  • Improved support for Cortex-M33 Secure / Non-Secure projects. Improvements include :

    • Secure and Non-Secure projects more closely linked from build / project configuration point of view
    • Debugging Secure project will automatically build Non-Secure project and program it into flash, before launching Secure project debug session
    • Symbols for Non-Secure project automatically loaded into debug session to allow user to step from Secure world into Non-Secure (with source code visibility)

Note that these improvements also require SDK v2.6 for the MCU being targeted

  • Improved Launch Configurations for LinkServer. Main user impact is that this allows a more friendly way of editing launch configuration settings. Some launch configuration functionality now also provided in “standard” Eclipse/CDT tabs rather than in LinkServer specific manner. LinkServer Launch configurations from older IDE versions will be automatically converted to the new format
  • New launch configuration tab (for all debug probe types) to allow loading of debug symbols from additional images (in addition to the ones from the main image being debugged)

  • Improvements to performance of single stepping for LinkServer debug connections

  • Implemented support for SWO Trace on Cortex-M33 based MCUs

  • "Live Variables" functionality inside the Global Variables view now supported using SEGGER J-Link and P&E Micro debug probes (in addition to LinkServer debug connections)

  • FreeRTOS TAD functionality now directly implemented within the IDE, rather than being a separate plugin

    • Improved look and feel to better match rest of IDE
    • Timeout period for FreeRTOS TAD increased, to help prevent reading of data failing on slow debug connections. IDE preference also added to allow timeout period to be changed
    • Fixed issue with Runtime not showing when compiler optimizations turned on
    • Fixed issue with Timer List with FreeRTOS 10.2 release
  • Fixed issue with IDE losing C library include paths. This did not prevent projects from building but meant that indexer-related functionality reliant on these paths would not work correctly (for instance trying to open a C library include file from the editor). This issue could also cause Newlib projects to sometimes appear to be using Redlib include files.

Note: Existing projects can be "fixed" using Tools->Fixup Parsers option on the Project Properties view's context sensitive menu

  • New projects now compile with the --fstack-usage option by default (needed for callgraph functionality in the "Image Info" view)

  • Quickstart Panel - Quick Settings menu can now indicate current value for Debug Console, Floating Point and Library settings for current build configuration of selected project

  • New projects now link with --cref option by default (increasing level of information provided in linker map files)

  • Improved performance of installing/loading SDKs, largely by re-architecting the way that SVD peripheral definition files from the SDK are processed

  • Installed SDKs view updated so that detailed information on contents of selected SDK is hidden by default, but with new Hide/Show button to display when required

  • SDK default folder mechanism updated to install SDKs into an "02" subdirectory by default. This means that SDKs installed by IDE v11.0.0 will not be visible to older versions of the IDE

  • Improved ability to select debug console type (semihosting vs UART vs any preference specified by example definition) when importing SDK examples. This is particularly useful when multiple projects are selected for importing at the same time

  • Tweaked code generated for main() by New Project Wizard for SDK projects such that the infinite loop at the end of the function can be successfully single stepped at the source level

  • Fixed issue with default compiler options set by SDK New Project wizard when creating C++ projects. Such projects now also created with "cpp_config.cpp" file containing minimal implementations of the new/delete operators and the verbose terminate handler for exceptions suitable for embedded use. This brings SDK C++ projects inline with C++ projects created with the New Project Wizard for preinstalled parts

  • Some performance improvements when making a board selection in New Project Wizard and Import SDK example(s) wizard

  • Fixed issue with IDE incorrectly warning about overlapping memory regions when importing some SDK examples, when the memory regions are actually just adjacent

  • Fixed issue with IDE being unable to show the context sensitive menu in the Project Properties view for makefile projects in some circumstances

  • Fixed issue with handling of part support information for MCUs which are supported by internal part support, but for which an SDK exists and has been installed into the IDE

  • Various updates and clean up of icons. In particular, new icon for "LinkServer" now used in various places instead of general MCUXpresso IDE one

  • Fixed issue with various tables displayed by IDE failing to display "..." to indicate truncation, when amount of text to
    display exceeds space currently available in column

  • Various fixes to SDK Editor / Creator

  • Fixed issue with managed linker script mechanism when building master projects linking in slave projects containing data with larger than normal alignment

  • Fixed issue with managed linker script mechanism which was causing some sections (such as .bss) to be erroneously assigned unnecessary load addresses

  • Fixed issue with section name wildcards used in managed linker script mechanism , which could prevent __BSS/__DATA macros from working as expected in some circumstances

  • On Managed Linker Script page of Project Properties, IDE now autoconverts any "\" directory separators entered into "Script path" to Unix style "/" expected by the linker

  • Added implementations of inverse hypobolic functions to Redlib (acosh/acoshf, asinh/asinhf and atanh/atanhf)

  • Improved Redlib definition of HUGE_VAL (and other related defines) in math.h. Also updated way float_t defined

  • arm_acle.h header file now on the search path for projects linking against Redlib (providing various ARM C language extension intrinsics). Previously this was only available for Newlib linked projects

  • IDE now prioritizes use of IDE supplied LinkServer flash drivers over any contained in installed SDKs (rather than the other way around). This behaviour can be reverted if necessary using an IDE workspace preference

  • Fixed various issues with creation of multiple launch configurations for a particular build configuration in a project

  • Fixed issue with creation of launch configurations if previous attempt was cancelled

  • "Attach-only" debug sessions no longer trigger a build before starting the debug connection (as long as image has already built)

  • Improved size and layout of Launch Configuration Selection Dialog (displayed when project contains launch configurations for multiple probe types)

  • Fixed issue with display of cycle counters in Registers View

  • Fixed issue with GUI Flash Tool via LinkServer with LPC51U68 and KL28 MCUs

  • Fixed issue with debug restart with QN9080 via LinkServer

  • Fixed issue with LinkServer FreeRTOS thread awareness with Cortex-M33 based MCUs (and CM33 aware versions of FreeRTOS)

  • Implemented preliminary support for carrying out SWO Trace using CMSIS-DAP probes that implement "CMSIS-SWO commands" (as opposed to the bespoke SWO support implemented by NXP's LPC-Link2 CMSIS-DAP firmware). This has currently only received limited tested using ULINKplus probes with CMSIS-DAP v1.x.x firmware.
    Note : MCUXpresso IDE does not support the use of WinUSB endpoints as provided by CMSIS-DAP v2.x.x firmware

  • New IDE workspace preference to allow debug launch configurations for SEGGER J-Link probes to be created with FreeRTOS thread awareness already enabled (off by default)

  • Upgraded to a later version of the P&E Micro plugin (v4.1.3)

  • Upgraded to a later version of the SEGGER software (v6.44i)

This article discusses the use of SDK Trustzone example (Hello World) for the LPC55S69 MCU within MCUXpresso IDE.

 

The following are required to follow this blog post:

 

  1. MCUXpresso IDE Version 11.0.x
  2. LPCXpresso 55S69 EVK development board
  3. LPCXpresso 55S69 EVK version 2.6 SDK

 

Older version of MCUXpresso IDE and/or SDK will have different and inferior performance when used with Trustzone examples and are therefore not recommended.

 

A conceptual understanding of Arm Trustzone will also help understand the features shown in this article. Please also see the community article on Trustzone on the LPC55S6x.

 

Finally, a familiarity with the use of MCUXpresso IDE and SDK installation is assumed.


Overview

 

In essence, MCUs incorporating Arm Trustzone technology are able to provide system wide isolation between Secure (S) and Non Secure (NS) worlds. Within the Non Secure environment, access to certain operations, peripherals etc. are controlled from the Secure world. This behaviour is delivered by a single CPU with execution time being shared between these two worlds.

 

Developing for systems using Trustzone features presents a number of challenges in particular providing Secure World services for Non Secure application developers, debugging of both Secure and Non Secure code (projects) and delivering a usage model within the IDE that can be easily used and understood.

 

The examples supplied with the SDK contain both Secure and Non Secure linked projects and are configured within the IDE to demonstrate development from the point of view of both Secure and Non Secure development.

 

However, a more typical 'real world' situation may be for developers working on Non Secure project development and treating the Secure world as a 'Black Box' (or Bootloader) that provides a number of explicit secure operations. This use case will be discussed in a subsequent article.

 

Note: the LPC55S69 is a multicore MCU as in it contains two physical CPUs - numbered 0 and 1. In these examples all code is targeted at CPU 0, and the use of CPU 1 is outside the scope of this article.

 

Importing (Linked) Example Project

 

First, ensure you have installed version SDK version 2.6 for the LPCXpresso55S69 EVK board into MCUXpresso IDE. Once installed it will be visible within the Installed SDKs view and its version shown as below:

Installed SDK view

 

From the Quickstart view, launch the 'Import SDK example(s)' Wizard, then select the LPCXpresso55S69 board and click <next>

Example Import Selection

 

Expand the trustzone examples and click either of the Hello World projects. Since these projects are linked, both the Secure (_s) and Non Secure (_ns) examples will be selected. Click <finish> to start the import.

 

Note: Linked projects are coloured yellow within the wizard. This project linkage is set because the Non Secure project relies on Secure project for access to allowed Secure operations (calls). Where as the Secure project references the Non Secure project for debug operations (flash programming).

 

Project Selection

Once imported, you will see the Project Explorer view contains the projects as expected.

 

Project View

 

Project Settings Exploration

 

Memory Configuration

 

The memory allocation of each project can be seen in the Project Explorer view by opening the Project Settings Node and then the Memory Node. From here you can see the input memory ranges set for the managed linker script mechanism (for each project):

 

Apart from the veneer table, these projects can be considered as separate entities and must have non overlapping memory regions.

 

Secure: A feature of the address space security is that the setting of address bit 28 signifies a secure location (odd numbers in the most significant nibble).

Memory Usage Secure

 

The flash region PROGRAM_FLASH at 0x10000000 specifies the secure LinkServer flash driver LPC55xx_S.cfx.

The SG_veneer_table block at 0x1000FE00 is used for code to provide a gateway to (certain) secure functions and inherits the same flash driver. Note: the name SG_veneer_table is a 'magic' string recognised by the IDE as an option for veneer placement (see later)

 

Non Secure: For these addresses, bit 28 is not set signifying non secure locations (even numbers in the most significant nibble)

Memory Usage Non Secure

The flash region PROGRAM_FLASH at 0x10000 specifies the non secure LinkServer flash driver LPC55xx.cfx.

 

Project Properties

 

Trustzone capable MCUs have a number of dedicated Project Properties primarily addressing linkage and debug.

 

A project set to be Secure will have further options available, including a setting for the location of the Secure veneer table, and check box to cause the generation of the Import Library. An additional Secure Gateway Import Library can also be specified.

 

Secure: Below is shown the MCU Linker -> Trustzone properties dialogue.

 

Note the Secure Gateway Placement (Secure veneers to shared secure operations) is set to use the 'magic' flash memory region (mentioned in the previous section) for placement.

Project Properties Secure

Also observe the MCU Debugger -> Trustzone option. If used (as in this example), this takes the name of the associated non secure project which will then automatically be (built and) programmed when the Secure project debug operation is performed. In addition the symbols for this associated project will be added to allow source level debugging of both projects.

 

When selected, it will look like below:

Project Properties Secure Debug Link

 

Non Secure: Below is shown the MCU Linker -> Trustzone properties dialogue: Note the Secure Gateway Import Library references the Secure projects generated library location.

Project Properties Non Secure

 

Building the Example Projects

 

Building the examples is as simple selecting the project and clicking Build in the Quickstart panel. Be aware that building the Non Secure project will force the Secure project to build first to provide linkage to the Secure Gateway library. 

 

Assuming neither project has been built before, building the Non Secure Hello World project will result in the generation of both Secure and Non Secure .axf(s) and generate the output as below:

Memory region         Used Size  Region Size  %age Used
   PROGRAM_FLASH:       16872 B      65024 B     25.95%
 SG_veneer_table:          32 B        512 B      6.25%
            Ram0:        4388 B        32 KB     13.39%
Finished building target: lpcxpresso55s69_hello_world_s.axf

Memory region         Used Size  Region Size  %age Used
   PROGRAM_FLASH:        7372 B       456 KB      1.58%
            Ram0:        8448 B       172 KB      4.80%            
Finished building target: lpcxpresso55s69_hello_world_ns.axf

 

Note: building the Secure project does not force a build of the Non Secure since there are no build dependencies in this direction.


Debugging the Example Projects

 

As already mentioned, these examples demonstrate development from the point of view of both Secure and Non Secure projects. Hence the initial flow is intended to show startup within a the Secure world and then the migration to the Non Secure where a secure operation will be performed.

 

Therefore, begin by selecting the Secure Project in the Project Explorer view and clicking Debug in the Quickstart Panel. Since we have the option set to enable the pre-programming of the Non Secure binary there will be two stages to this debug operation.

 

Note: If this is the first time this project has been debugged, you will be presented with the option to select a debug probe. Then, since this is a MultiCore MCU, you must also select the core to use (be sure that this is set to Core 0).

 

First, the Non Secure binary will be programmed into flash memory - this automatic step will proceed like a normal binary programming operation and generate a log associated with Non Secure project, a fragment shown below:

 

Flash variant 'LPC55xx (608KB)' detected (608KB = 19*32K at 0x0)
Writing 7372 bytes to address 0x00010000 in Flash
1 of 1 (  0) Writing pages 2-2 at 0x00010000 with 7372 bytes
(  0) at 00010000: 0 bytes - 0/7372
(100) at 00010000: 8192 bytes - 8192/7372
Erased/Wrote sector  2-2 with 7372 bytes in 122msec
Closing flash driver LPC55xx.cfx
(100) Finished writing Flash successfully.
Flash Write Done
Loaded 0x1CCC bytes in 417ms (about 17kB/s)

 

Secondly, the Secure project will then be programmed in the normal way, this will generate a standard debug log associated with the Secure project, a fragment is shown below: 

 

Note: again if this is the first time, the debug probe and MCU core must be selected. For subsequent debug operations, these options will be remembered.

 

Flash variant 'LPC55xx (608KB) (Secure)' detected (608KB = 19*32K at 0x10000000)
Writing 32 bytes to address 0x1000FE00 in Flash
1000A000 done  25% (8192 out of 32288)
1000C000 done  50% (16384 out of 32288)
1000E000 done  76% (24576 out of 32288)
10010000 done 100% (32768 out of 32288)
Erased/Wrote sector  1-1 with 32 bytes in 709msec
Closing flash driver LPC55xx_S.cfx
Flash Write Done
Flash Program Summary: 16904 bytes in 1.00 seconds (16.59 KB/sec)
Starting execution using system reset and halt target with a stall address
Retask read watchpoint 1 at 0x50000040 for boot ROM stall
Restore internally retasked watch #1 no type address 0x0 (unused)
Note - system reset leaves VTOR at 0x13000000 (not 0x10000000 which a booted image might assume)
Stopped (Was Reset)  [Reset from Unknown]
Stopped: Breakpoint #2

 

Once programming is complete, you should arrive at the default Breakpoint on main within the Secure world as below:

Secure Project Debug

 

Click Run and this project will first perform some board/MCU initialisation, print a greeting (as below), then setup the environment for the Non Secure project to execute.

 

Note: this step is necessary because the non secure project is not run from reset, so cannot rely on the default hardware behaviour for initialisation of Stack, Interrupt handlers etc. This is essentially the same operation that a bootloader would perform.

Secure Console

Next, a jump will be made to the Non Secure world.

 

Note: since the non secure project is not debugged directly, it will have no default breakpoint on its main function. To explore the execution, it is recommended to open the Non Secure projects Source -> hello_world_ns.c and manually set a breakpoint as shown below:

 

Non Secure Debug

Reminder, since we have the option set to enable the pre-programming of the Non Secure binary this also enabled the loading of Non Secure symbols (which can be observed in the Secure projects debug launch configuration (shown below). It is the loading of these symbols which enables source level debug of the Non Secure project while we are actually debugging the Secure project.

 

Secure Launch Symbols

 

Finally, click Run to run this example to termination and observe the output.

 

Secure Console Non Secure output

 

Note: the significance of this example is that the String Compare operation was supplied to the Non Secure project by the Secure project and accessed securely via the Non Secure Entry (NSE).

 

This step concludes the expected use of this example.

 

Another mode of operation is to perform a Debug operation directly on the Non Secure project. This is a perfectly valid operation provided the Secure project has first been programmed into flash. If so the Non Secure project will behave like a standard project and arrive the breakpoint on main ()... However, if the Secure Project has not been pre-loaded, the debug operation will fail.

 

 

If Debug operations fail...

 

It is possible to program an image into flash that when run prevents further debug operations succeeding. Should this occur, please follow the steps below:

 

  • Click on the "Clean Up debug" button on the main IDE toolbar - this kills any stale low level debug operations
  • Disconnect the USB cable from your board to remove power
  • Place a jumper on the ISP header (J10) - this will prevent the board booting the image in flash by forcing the MCU to enter ISP mode
  • Now reconnect the USB cable to Debug Link connector (P6)
  • Now select a project in the Project Explorer view, and then click on the GUI Flash Tool on the main IDE toolbar - and use this to mass erase the flash. [More details on using the GUI Flash Tools can be found inside the supplied IDE v11.0 User Guide]

 

If this succeeds, then:

  • Disconnect the USB cable from your board
  • Remove the jumper on the ISP header (J10)
  • Now reconnect the USB cable to Debug Link connector (P6)

 

Now try starting a debug session for your project again using the Quickstart Panel's Debug button. If this problem occurs as part of application development, try programming a known working example to ensure there are no underlying problems.