In eclipse and CodeWarrior for MCU10 the usual thing I do is:
- I have a project in my eclipse workspace
- I compile and build it
- I download and flash it to the target for debugging
If I need to program another board with the same binary, then I download it to that board too. Fine. But what if I want to skip point 1 and 2? What if I do not have or want a project? All what I have (and need) is a binary file, and I want is to flash that file to my boar. By pressing a button.
No project, just the naked workspace
Eclipse is very project oriented. But with the release of MCU10.2 it is possible: I can program my boards without a project . All what I need is the binary file I want to flash. Really? Well, close. Some setup is still required.
In the following steps I’m using a new and blank workspace. The same thing can be used with projects in the workspace too. Then things are even easier as I can re-use settings. But here I’m going to do the heavy metal stuff naked, without a project, but with a Magic Wand. Actually, it is a Magic Blue Flash Bolt🙂.
To start, I use the ‘Flash File To Target‘ menu:
This gets me the following dialog:
Oh, and here is it: it ask to create a ‘System’….. OMG!
System, Connection, Target or what the ….?
System? Yeah, that’s a very overloaded term (like many others). I would explain an MCU10 ‘System’ as a combination of ‘Connection’ and ‘Target’:
- The ‘Target‘ specifies the CPU used (e.g. MCF51JM128), with its initialization script (if any) and the memory configuration needed (if any).
- The ‘Connection‘ references a the target, plus it holds the settings how I connect to the target, with the Interface and settings for it, e.g. P&E USB Universal Multilink.
Both the Target and the Connection are listed in the Remote Systems view:
The Flash File to Target needs a Connection. So we need to create a Connection and a Target.
Creating a Connection
Pressing the ‘New…’ button in the Flash File to Target dialog gives me:
Ok this is the Connection. Here I can configure the connection settings, and create a new Target.
Creating the Target
To create the ‘Target’, I’m pressing ‘New…’ in the New Connection dialog:
This is the Target (don’t get confused by the dialog title!!!). Ok, you are confused. But this is really the Target. Here I specify the CPU (MCF51JM128 in my case). Having this defined, it allows me to change further settings:
I do not need any Initialization or Memory configuration, so I keep these with the defaults.
Back to the Connection dialog, I choose to use the P&E connection:
This expands the dialog for the run control specific settings:
Now I have my connection and target created from the ground up.
Next I’m browsing for my binary file to be programmed to the board:
Pressing the ‘Erase and Program’ button does what it says: it does a mass erase of my device and programs it with the file. If I need to erase/protect only part of my device, then Programming part of Flash provides the needed information.
Time to wave the wand (or flash bolt): Progress is reported in a dialog window, and as well in the console view.
At the end, the dialog closes automatically (why? what if I would like to flash the file again?). The completion of the operation is reported in the Console view:
Dissection of what is behind
Ok, things are working. Time to check out what is behind. As there is no project, the settings have to be *somewhere*. I notice that I have an LC for Simple Flash in the list of Launch/Debug configuration:
CodeWarrior is using a pseudo ‘Connect’ configuration to store the information.
Note: While this looks like a normal ‘CodeWarrior Connect’ launch configuration, it will not work as such (if I want to use it directly), as it has no project folder associated.
This launch configuration is stored inside the workspace as a normal file:
.metadata\.plugins\org.eclipse.debug.core\.launches\LC for Simple Flash.launch
So while this is not really a normal launch configuration, it is still useful to know about it.
Using the Flash File to Target menu and button makes it really easy to flash a file to the board without the need for a project. Still, for a naked workspace, some settings are required which take a little time to set up. With knowing the things behind, no magic wand is needed, as long as it creates systems, connections, targets or whatever their names might be😉
Happy Button Flashing🙂