Does debuggable Netduino.IP require JTAG? (if so...why?)

After successfully completing the I2C portion of my project, I’m having intense difficulty with networking/Maple on my N3E (see e.g. Where is Netduino.IP? and System.NullReferenceException on Maple GET Requests ) - so I was wondering…what if I built Netduino.IP myself as part of my project so I could debug etc.? I found a thread about this on the old forums:

and felt confident that it was something I’d be able to do - I’d just need to find a more recent version of everything. So I searched and searched and researched and searched and found:

Cool! I can do that! But…wait, where is the corresponding firmware…? Oh, I have to build it myself? OK… but … oh yikes - I need an ST-Link and a spare JTAG connector? :sweat_smile:

Is this really required or am I missing something? My expectation was that IP-free versions of the firmware would be provided ready-made somewhere and I could just include Netduino.IP in my project and upload both in the “usual” fashion - has something changed that makes this impossible (i.e. since Chris’ initial release seemed to be possible to use w/out getting all fancy)? Thanks in advance - a quick response to this or any of my questions I’ve posted would be massively appreciated given that the Hackster contest ends tonight! :sweat_smile:

PS, it seems like emojis aren’t displayed properly on these forums - everything gets squished: :laughing::straight_ruler::black_square_button:

There are two different types of code in the firmware:

  • Native C/C++ code built with a compiler such as the ARM or Keil compiler
  • Managed code.

A crude way of looking at this is that the managed code uses a native marshalling layer to allow communication between the two types of code.

Netduino.IP is written in C# and this calls into a native library which deals with the communication with the network chips on the various boards.

Native debugging requires the use of the JTAG connector and an adapter.

If you want to debug the managed code then the simplest way is to removed this from the firmware build and just have the marshalling layer deployed with the firmware. You then add the managed sources to your project and deploy them as part of your application.

If you want to have a go you can find the firmware build instructions in the Netduino_SDK repo under the page Building for Network Debugging.


@Nevyn thanks so much for your response! I found the page describing how to build for network debugging, but what I wasn’t clear on is: do I then have to also roll my own “native” firmware and upload via JTAG? Or does that exist somewhere and I can just use MFDeploy? Thanks!! :heart:

Once you have created the firmware files you can deploy them using the Netduino.Updated / Deployment tool.

To start with I copy an existing piece of firmware in the tool. These are placed in directories with the board, firmware name / version.

Then edit the XML file in the directory to reflect the new version number you are using.

Now copy the files from the BuildOutput structure into the directory you have created overwriting the hex files in that directory (some renaming will be required).

Next up plug in the board in DFU mode (holding reset). At this point the board should be recognised by the update tools and you can flash your own firmware.

Hope this clarifies things,