Nordic Semiconductor nRF5 CPU Support Package

This package contains project templates and system files for the Nordic Semiconductor nRF5.

CrossWorks Version 3 Installation Instructions

To install this support package
  1. Click the Tools > Package Manager menu option to open the package manager window.
  2. Right click on the Nordic Semiconductor nRF5 CPU Support Package entry and select Install Selected Packages.
  3. Click Next to take you to the summary page.
  4. Click Next to install the package.
  5. Click Finish to close the package manager window.
  6. Click the Tools > Show Installed Packages.
  7. Click on the Nordic Semiconductor nRF5 CPU Support Package link to view the package and its contents.
To manually install this support package
  1. If you have not done so already, follow the CMSIS 3 Support Package and CrossWorks Tasking Library Package installation instructions.
  2. Download the file nRF51.hzq using your web browser.
  3. Click the Tools > Manually Install Packages menu option.
  4. Select the file you have just downloaded to install the package.
  5. Click the Tools > Show Installed Packages.
  6. Click on the Nordic Semiconductor nRF5 CPU Support Package link to view the package and its contents.

Release Notes

3.5

3.4

3.3

3.2

3.1

3.0

1.2

1.1

1.0

Documentation

Creating nRF5 Projects

To create a new nRF5 project
To build and debug an application the runs in Flash memory
To make the application startup from reset
To make the application work with a soft device

nRF5 Project Specifics

Target Processor

Once a project has been created you can select different target processors by right clicking on the project node in the project explorer and selecting the Target Processor entry.

Selecting the target processor will specify the memory map that is used for the build and debug. You can view the selected memory map by right clicking on the project node in the project explorer and selecting Edit Memory Map.

Section Placement

CrossStudio for ARM supports nRF5 projects running applications in a number of different memory configurations. You can select the memory configuration you require by setting the Section Placement property.

For nRF5 projects the set of placements are:

Stack and Heap Sizes

The default stack and heap sizes are set to be 2048 and 0 bytes by default when a project is created.

Target Startup Code

The startup code nRF51_Startup.s is common to all nRF51 processors. There are a set of preprocessor defines that configure the startup code and are documented in the startup file itself. The startup code calls out to a weak symbol SystemInit with the stack pointer set to the top of the first block of SRAM. The SystemInit function can be used to set the CPU clock or configure any external memories prior to the C initialisation code as such it cannot access initialised static data.

The startup code declares symoblic names (and weak implementations) for each interrupt service routine, for example the POWER_CLOCK_IRQHandler function will be called when this interrupt occurs. If you are porting code that has application specific interrupt service routine names then you can use the preprocessor definitions to rename the symbol for example POWER_CLOCK_IRQHandler=MyPOWER_CLOCK_IRQHandlerISR.

Target Reset Script

The reset script nRF51_Target.js is used by the debugger to reset the target board.

Memory Simulator

An nRF51 memory simulator is provided that simulates the memories of the various nRF5 devices. The memory simulation parameter (which is set by the Target Processor selection) specifies the device name, the size of the internal Flash and RAM memories.

CMSIS support

CMSIS header files and library are referenced as part of the new project setup. The Nordic Semiconductor CMSIS files

are supplied.

CTL support

The file nRF51_ctl.c implements the CTL system timer using the nRF51 RTC or (for the nRF52) the SysTick timer. The timer is configured to interrupt at (approximately for the RTC) a 10 millisecond rate and increment the CTL system timer by 10 to give a millisecond timer.

The CTL interrupt support functions ctl_global_interrupts_set, ctl_set_priority, ctl_unmask_isr and ctl_mask_isr are implemented in this file. The implementation uses the lowest half of the available NVIC priorities (top bit set in the priority) for CTL interrupts.