I just saw the MQTT example that has been merged in the master branch and tried to run it on my DK (NB-IoT). Without changing anything in the code or configuration the execution leads to the following output in the console appears:
***** BUS FAULT *****Precise data bus errorBFAR Address: 0x4002a514***** Hardware exception *****Current thread ID = 0x2000031cFaulting instruction address = 0x6604Fatal fault in essential thread! Spinning...
I used the latest tags of the releases of zephyr, etc. and only copied mqtt_simple from master branch. Are there any hints or tips how I can make the example work?
Build and program the samples/nrf9160/secure_boot/ example first, then it should work.This is needed since the SPU peripheral needs to be configured with a "NON SECURE" area, in which the MQTT example will reside.The secure_boot sample performs this configuration.
Hi! Thanks for the answer. There is something very strange going on.
So I am able to compile and flash secure_boot, at_client, asset_tracker, and the NTP example. Everything seems to work. Serial output looks ok.
Secure Boot: SPU: set SRAM region 30 as Non-SecureSecure Boot: SPU: set SRAM region 31 as Non-SecureSecure Boot: configure peripheralsSecure Boot: MSP_NS 200265f0Secure Boot: prepare to jump to Non-Secure image***** Booting Zephyr OS v1.13.99-ncs2 *****The AT host sample started
Now opening and compiling the mqtt_simple example from the master branch.
After build and run the output in segger studio is:
Preparing target for downloadExecuting script TargetInterface.resetAndStop()Reset: Halt core after reset via DEMCR.VC_CORERESET.Reset: Reset device via AIRCR.SYSRESETREQ.Downloading ‘zephyr.elf’ to J-LinkProgramming 83.3 KB of addresses 00000000 — 00014d37Programming 0.4 KB of addresses 00014d38 — 00014edbJ-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (16384 bytes)J-Link: Flash download: Total time needed: 0.570s (Prepare: 0.042s, Compare: 0.041s, Erase: 0.357s, Program: 0.120s, Verify: 0.000s, Restore: 0.007s)Download successful
Secure Boot: SPU: set SRAM region 30 as Non-SecureSecure Boot: SPU: set SRAM region 31 as Non-SecureSecure Boot: configure peripheralsSecure Boot: MSP_NS 200265f0Secure Boot: prepare to jump to Non-Secure image***** Booting Zephyr OS v1.13.99-ncs2 *****The AT host sample started***** BUS FAULT ***** Precise data bus error BFAR Address: 0x4002a514***** Hardware exception *****Current thread ID = 0x2000031cFaulting instruction address = 0x6f74Fatal fault in essential thread! Spinning...
Reset and power cycle leads to the same result. Immediate output is always "Bus Fault".
Now I tried to reprogram the at_client. But it seems like flashing another application is not possible. The output is the following:
(...)Preparing target for downloadExecuting script TargetInterface.resetAndStop()Reset: Halt core after reset via DEMCR.VC_CORERESET.Reset: Reset device via AIRCR.SYSRESETREQ.Downloading ‘zephyr.elf’ to J-LinkProgramming 78.3 KB of addresses 00040000 — 0005397bProgramming 0.4 KB of addresses 0005397c — 00053b23J-Link: Flash download: Bank 0 @ 0x00000000: Skipped. Contents already matchDownload successful
The only thing I can do is re-flashing the secure_boot sample. After that, the device starts to run the at_client
It seems like there is a problem when flashing the mqtt_client sample.
Is anybody experiencing similar problems?
If you are going to use the latest updates in the master branch to nrf, you should also make sure that you are in the master branches to the other repos and update them to the latest:
cd <sourcecode_root>\ncs\zephyr ; git checkout master ; git pull
cd <sourcecode_root>\ncs\mcuboot ; git checkout master ; git pull
cd <sourcecode_root>\ncs\nrf ; git checkout master ; git pull
cd <sourcecode_root>\ncs\nrfxlib ; git checkout master ; git pull
Unfortunately, there is an issue with building using SES with the latest master branch (I can assure you that we are working on fixing this).
Workaround:In the meantime you can build the application via the terminal, where the board name for a non-secure project has changed to “nrf9160_pca10090ns”.
Here’s the way to generate/compile a project from terminal:
mkdir build && cd build
cmake .. -DBOARD=nrf9160_pca10090ns -GNinja
- If your build folder exists, you might need to clear it (delete the content) first.
(use ninja to compile and/or ninja flash to compile and flash to the kit)
Note that you also need to build/flash the secure_boot sample again to be sure that everything is on the right memory area.
Please note that when building for secure_boot you need to use this command instead:
cmake .. -DBOARD=nrf9160_pca10090 -GNinja
(note that it does not have the ns at the end ["non-secure"])
It should look something like this:
I must apologize for the inconvenience this may have caused.
I followed the 7 steps above but cannot flash because of this error:
FileNotFoundError: [Errno 2] No such file or directory: 'nrfjprog': 'nrfjprog'
I ran pip3 install --user pynrfjprog and retried but it made no difference. Any suggestions?
You are missing the nRF command Line Tools.
Please download it and it should work.