Group,
Sorry for the newbie post here but I am just getting started w/ the FRDM-KL25Z board and am trying to understand something:
What is the significance of the 2 USB ports on the board? I see one of them can be used for debugging and loading of code. However, what happens in a production design that needs a single USB port to connect to a computer where the computer is acting as the host? How do you then load code into the board for initial rollout and upgrades?
Thanks for the response. Looks like the header is the way to go. Better to be safe than sorry. Do you have a preference on which one you use and why?
Thanks!
Typically, I use the 2x5 (2 mm) header with SWD, as it uses less pins, so I have more pins available on the microcontroller.
See Using the FRDM-K64F with CodeWarrior | MCU on Eclipse
I use the 'standard' header, but if space is a concern, I have seen designs with a smaller header and then using an adapter.
Erich,
I apologize. My question should have read which one, P&E Multilink or a Segger J-Link, do you use and why.
Thanks for the other response though. Your blog posts are VERY helpful! :smileyhappy:
Ed
Hi Ed,
I'm using both the P&E Multilink (Universal), and as well the P&E tracelink (see First Steps with the P&E Tracelink | MCU on Eclipse) and the Segger J-Link. Both the Multilink and the J-Link are very valuable to me. I use the Multilink Universal because I can use the same device for multiple processor families (PowerPC, S08, ColdFire, ARM) and costs less than the J-Link (not comparing educational versions here). The J-Link has more features (e.g. 'unlimited flash' breakpoints, an extra (usually paid) feature), but costs somewhat more, but 'only' supports ARM, but pretty much every ARM licensee as far as I can tell. Both solutions are good ones, and it is up to your requirements which one you choose. My recommendation is to use both, so you always have a backup in case you have a problem :-). And have more than one of each: It is a bad day if your development is blocked because of broken tools.
To initially program the board you either need the microcontroller programmed with a programming adapter (or a socket where the microcontroller gets programmed before soldered on the board). Usually you populate a programming header (typically a 2x5 pin header) on the board. On the FRDM-KL25Z board this is J6 (see Completing the FRDM-KL25Z Board | MCU on Eclipse). After that, if you want to update the board, you would need a bootloader (e.g. through USB). There are many different ways to do this, I'm using a simple serial (as well over USB CDC) bootloader as the one described in Serial Bootloader for the Freedom Board with Processor Expert | MCU on Eclipse
To be clear, if I design my own board using the KL25 chip family, I will need something connecting to the J6 header to program initially or have the supply house pre-program them and then, I could use USB as you've described for future updates, correct?
In addition, I could just populate the J6 header in my own design and update there, correct?
Yes, you need a JTAG/SWD header like J6 to program the device with a JTAG/SWD programmer like the P&E Multilink or a Segger J-Link. You do not need that if you are pre-programming your devices (e.g. by the one who populates the board) with a bootloader firmware. But I would only rely on that programming method if you are +100% sure that your bootloader is rock solid and the bootloader either has the ability to upgrade itself. In any case I recommend that you have the footprint on your board, so later on you can access your device with a debugger.
Having your own JTAG/SWD (J6 style) header on your board is the way to go in my view.