Posted 2016-02-22 15:56:11 +0100

blogs->nordicers

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.

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

• Then click on Advanced system setting

• Click on Environment Variables...

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

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...

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

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

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:

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

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.

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

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.

Posted Feb. 23, 2016, 1:45 p.m.

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.

Posted March 21, 2017, 2:28 p.m.

Posted June 6, 2017, 11:59 a.m.

Hello

When i try to flash it on to the board, I am getting the following error. Could anyone please help me out.

ERROR: The --family option given with the command (or the default from ERROR: nrfjprog.ini) does not match the device connected.

Best Regards

Arun

Posted June 28, 2017, 2:14 p.m.

Hello Arun,

The arguments for the program_sd tool should be

--family nrf52 --program s130_nrf51_2.0.0-7.alpha_softdevice.hex


Recent blog posts

• Difference between nRF52840 Engineering A and B reference designs

Posted 2018-01-15 12:27:08 by Martin Børs-Lind
• [For Hire] Expert development services of custom Hardware devices | IoT solutions | Mobile Apps

Posted 2018-01-15 09:08:42 by Ilya Surinsky
• Rust bindings to nrf52 series

Posted 2018-01-12 23:23:07 by Coleman McFarland
• Show And Tell: Poly - Building an RC Airplane The Hard Way

Posted 2018-01-05 01:17:57 by Daniel Veilleux
• Bluetooth on a desktop computer (Windows, Mac, Linux)

Posted 2018-01-04 17:56:57 by kbaud

Recent questions

• System off draws more then 80µA

Posted 2018-01-22 22:15:19 by ruetten
• How to add driver to an SDK example, in Segger Embedded Studio?

Posted 2018-01-22 21:37:18 by Mark Leavitt
• Send more than 60 characters with each call to ble_nus_string_send

Posted 2018-01-22 21:20:21 by fkoran
• DFU succeeds but flash is erased

Posted 2018-01-22 20:42:54 by brett_anderson
• Uart example stops blinking after a while

Posted 2018-01-22 19:56:29 by oliverpoc