nRF51 SDK - S110 SoftDevice
|
This example shows how to include UICR values into the application hex file. Also, shows how to setup Keil to download and debug the hexfile generated.
The project uses the "uicr_config.h" to define the User Information Configuration Registers (UICR) values to be included into the hex file.
The file declares one variable per register of the UICR area and informs the linker where to place them. To include the desired value in the desired address, uncomment the variable with the proper address at the target area and update the assignment value. As shown below, the UICR register with address 0x10001080 will be assigned the value 0x12345678.
When compiling the project with the uicr_config.h stated above it will add the section shown below into the hex. The two lines (intel hex format) shows that we have successfully generated a hex file which will fill the value 0x12345678 into the UICR address.
Note that UICR values are stored in a reserved area of the flash and should only be stored into when downloading a hex file. Do not use these defined variables to store data at run time.
The hex file generated when this file is included will fail to download when using the standard download algorithm provided by Nordic. How to configure Keil to download the hex is shown below.
To configure Keil to not use the standard download algorithm follow these steps:
nrfjprog.exe
is an extra tool installed with the SDK. And will be located in system path.
The SoftDevice must first be flashed by other means. If using nRFgo Studio, remember to uncheck "Enable SoftDevice protection".
This section covers some known issues and their solution for the UICR example project
Error | Solution |
---|---|
No Algorithm found for: 10001014H - 10001017H Partial Erase Done (areas with no algorithms skipped!) No Algorithm found for: 10001014H - 10001017H | Those error messages are seen when trying to flash with the J-Link Target Driver, as it does not support writing of UICR. Use nrjjprog.exe instead. |
— Error: failed to execute '"nrfjprog.exe" ..... | nrfjprog.exe could not be found in windows path. Add nrfjprog.exe to windows %PATH% or specify full path to nrfjprog in Keil-'Options for Target'-'Utilities' as seen in the above figures. |
The UICR Configuration can be tested as follows: