<div dir="ltr">PS: One more thing for people that may be using a SEGGER or nRF51822 or similar. If you want your firmware to be flashed every time you start debugging, add "load" to the initial commands like this:<div>

<br></div><div><div style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">mon speed 10000<br></div><div style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">mon endian little<br>mon flash download = 1<br>

mon flash device = NRF51822<br>mon reset 0</div></div><div style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">load</div><div style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br>
</div>
<div style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px"><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 18 June 2014 14:45, Tim Hutt <span dir="ltr"><<a href="mailto:tdhutt@gmail.com" target="_blank">tdhutt@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Oh wow, that finally did the trick! Everything works! So in summery here were the things that I wish I had known/need to be fixed:<div>

<br></div><div>1. You need to build a gdb with arm and python support. There is a Makefile in the QtCreator repo which will download all the code and build it for you nicely.</div>
<div>2. But first you need to change the targets to "targets=arm-none-eabi" and the hard-coded arch on line 113 to "arm-none-eabi".</div><div>3. If using QBS you must have "application" in your "type" property. It might need to be first; I'm not sure. But it doesn't work if "application" is implicitly built - it must be explicitly listed.</div>


<div>4. You must disable QML debugging in the run configuration or you'll get an empty error dialog when debugging and it won't work.</div><div>5. You must use the appropriate "monitor" commands in the device configuration, otherwise breakpoints won't do anything:</div>

<div class="">
<div><br></div><div><span style="color:rgb(80,0,80);font-family:arial,sans-serif;font-size:13px">mon speed 10000</span><br></div><div><span style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">mon endian little</span><br style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">


<span style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">mon flash download = 1</span><br style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif"><span style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">mon flash device = NRF51822</span><br style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">


<span style="font-size:13px;color:rgb(80,0,80);font-family:arial,sans-serif">mon reset 0</span><br></div><div><br></div></div><div>6. You must enable "<span style="font-family:arial,sans-serif;font-size:13px">Use asynchronous mode to control the </span><span style="font-family:arial,sans-serif;font-size:13px">inferior" or QtCreator will crash when you pause execution or set breakpoints while it's running.</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px">7. You probably want to disable "</span><span style="font-family:arial,sans-serif;font-size:13px">Show a message box </span><span style="font-family:arial,sans-serif;font-size:13px">when receiving a signal" or you'll get a pointless dialog every time you pause execution.</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Phew! Well, now that it works I'm pretty happy! That was a lot of effort though with more than a few Qt Creator bugs. I guess BareMetal is pretty new. Thanks very much for writing it Tim and thanks everyone for your help!</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Hopefully at some point I will have time to put this in a nice tutorial form on the Qt wiki, but I guess this email will be searchable by google at least. Here's some keywords: Nordic nRF51822 nRF51422 ARM Cortex SEGGER Qt Creator  QBS debug GDB.</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Cheers,</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br>


</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Tim</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">PS: I don't think I ever solved the --datadirectory problem, but I'll leave that for now.</span></div>


</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On 18 June 2014 14:29, Tim Sander <span dir="ltr"><<a href="mailto:tim@krieglstein.org" target="_blank">tim@krieglstein.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Tim<br>
<br>
Am Mittwoch, 18. Juni 2014, 11:12:48 schrieben Sie:<br>
<div>> Oh wow I finally got it to work! The key was to use the initialisation<br>
> commands provided by Nordic (who make the nRF51822)!:<br>
><br>
> mon speed 10000<br>
><br>
> mon endian little<br>
><br>
> mon flash download = 1<br>
><br>
> mon flash device = NRF51822<br>
><br>
> mon reset 0<br>
><br>
><br>
> However, I have no discovered a segfault in QtCreator! It crashes<br>
> ("qtcreator.exe has stopped working") if you do either of:<br>
><br>
><br>
> 1. Manually pause program execution.<br>
><br>
> 2. Add a breakpoint while the program is running.<br>
</div>I guess thats a Windows problem, but that can be omitted if you *enable*<br>
Tools->Options->Debugger->GDB Extended->"Use asynchronous mode to control the<br>
inferior".<br>
<br>
> So close!<br>
On the mark with the above config change :-).<br>
<div><br>
> On 18 June 2014 10:58, Tim Hutt <<a href="mailto:tdhutt@gmail.com" target="_blank">tdhutt@gmail.com</a>> wrote:<br>
> > The same files is generated in both cases though... If it's checking for<br>
> > the string "application" in the types list, I think that should just be<br>
> > removed. If it's seeing if the "last" build item is an "application", or<br>
> > if<br>
> > any of the explicitly specified types are "application", then I think that<br>
> > should be changed to search the entire build tree for the "application"<br>
> > node.<br>
> ><br>
> > Anyway...<br>
> ><br>
> > I forgot to mention that I also get this error when clicking the debug<br>
> > button:<br>
> ><br>
> > [image: Inline images 1]<br>
> ><br>
> > What is the "inferior"?<br>
> ><br>
> > I also tried using "break main.cpp:51" from the official Gnu ARM Embedded<br>
> > install (which is the one the chip maker recommend so I know it should<br>
> > work). It had the same effect as break-insert did from QtCreator... So<br>
> > maybe it's just that Eclipse (what they use) knows to use monitor setbp<br>
> > instead of break? Or maybe they tell gdb how break should behave?<br>
<br>
</div>You should also *disable* Tools->Options->Debugger->GDB->"Show a message box<br>
when receiving a signal" to get rid of the message box when hitting a<br>
breakpoint.<br>
<br>
Best regards<br>
<span><font color="#888888">Tim<br>
<br>
<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>