Keil + nrfjprog = true

In this blogpost we will demonstrate the usage of Keils integrated command line functionality. We will start nrfjprog through Keil bindings in order to erase our chip and program SoftDevices.

nrfjprog is a command line tool that Nordic provides, which allows for easy flashing and erasing of firmware onto our chips. This command line tool is automatically installed as part of installing the MDK for each version of the SoftDevice.

Installing the command line tools

Start off by downloading and installing the command line tools executable. I will base this blogpost on SDK 11, if you are using a different SDK version, the file structure might be different.

Open the command line and type:

  • nrfjprog --help

This will list the different input parameters and other help documentation. If the command line reports that it cannot find the program follow the instructions below in Adding PATH Variables.

Adding PATH Variables

Sometimes nrfjprog.exe will not be added to PATH by default, this is how to do it manually. If you are looking for more information on what the PATH variable is, please consult this answer at Superuser.

Navigate to environment variables by:

  • Pressing: Win+Break or

  • Opening Control Panel >> System >> Advanced >> Environment Variables or

  • Right-clicking My Computer and click on properties

  1. Then click on Advanced system setting

  2. Click on Environment Variables...

Add the variable to path by clicking the Edit... button

image description

Then add nrfjprog by adding ´;C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin´ to the end of the variable value for PATH. Make sure that you add a ; between entries in PATH values, i.e. path1;path2.

Then press OK. Now you will be able to see the help dialog when you type nrfjprog --help in a new command line.

Adding command line instructions to Keil

Keil lets you add command line tools directly into the IDE, this makes flashing and erasing a lot quicker, since you only need to use one program.

Start off by opening the Customize tools menu by:

  • Pressing Tools >> Customize Tools Menu...

image description

Next we will create a new tool. Press the new button highlighted below.

image description

Our first tool will be called eraseall. It will run the command nrfjprog with the arguments --eraseall.

image description

After clicking OK, our new command will show up in the Tools drop down menu. When you press Tools >> eraseall, you get the following build output on a successfull erase:

image description

If you are using nRF52 you will have to specify --family nrf52 as an additional argument, like this:

image description

Programming SoftDevices

It is also easy to program SoftDevices this way, start by opening the customize tools menu and creating a new tool, like we did for eraseall.

The parameters are:

  • Command: nrfjprog
  • Initial Folder: [YOUR_SDK_LOCATION]\SDK11\components\softdevice\s130\hex
  • Arguments: --program s130_nrf51_2.0.0-7.alpha_softdevice.hex

I chose to call my tool program_sd130, however you can call this anything you like.

image description

After pressing OK and starting my tool via Tools >> program_sd130 I see the following build output on successful programming:

image description

Final words

This is just a small example of what you could use command line integration in Keil for. If you encounter any difficulties or have some feedback, please leave a comment below.

Parents
  • Nice, I think a really useful command here could be for applications with a bootloader. You can use 'nrfjprog -f NRF52 --memwr 0x7F000 --val 0x01' so you can flash the application instead of having to upload it via bootloader.

    Also 'nrfjprog -f NRF52 --recover' if your application protects the device or something like that.

    Thanks for sharing this.

Comment
  • Nice, I think a really useful command here could be for applications with a bootloader. You can use 'nrfjprog -f NRF52 --memwr 0x7F000 --val 0x01' so you can flash the application instead of having to upload it via bootloader.

    Also 'nrfjprog -f NRF52 --recover' if your application protects the device or something like that.

    Thanks for sharing this.

Children
No Data