Programming a chip without Visual Studio


I will like to ask if anyone know how to program a GHI module without using visual studio ?

I will like my co-workers/users to update the program without the need to install visual studio and also releasing my source code.

Is for production, we plan to give continue update and support for the product but not releasing source code to the users.

does anyone know how to do it ?
with thanks.

I wonder if this is an IFU question.

If you have a USB connection, you can try MFDeploy.

Mfdeploy, fez config it even in field update. You have many options.

As already said, MFDeploy or FEZConfig are the tools you need to write a program to a NETMF device.

This is the workflow:

You develop/test/deploy you program with Visual Studio over USB (I think there is no alternative to VS here, but the Express Versions will work here as well)

Once you program is ready, you deploy it to the device with VS, do a final test

Use MFDepoly or FEZConfig to read the application hex file from the device.
This is necessary because the final linking of you program is done on the device during deployment with VS)

Now you have the application hex file on your computer, all you need to do is giving MFDeploy or FEZConfig and the hex file to the people who wants to update the device.

An alternative way is to use IFU (InFieldUpdate)
By this you can handle the update process from your device itself
Step 1 to 3 are the same.
You have to implement a way to transfer the hex file to you device in your application.
This can be done by SD card, Ethernet, serial, …
Then you load the file to memory, and call a couple of methods from the GHI library to update the application.
This works also for the firmware hex files.
Only the boot loader can not be updated by this method.


I am not sure, maybe they also need the USB driver for the device. Or will winusb be installed by windows?

You’re right.
You need FEZCofig or MFDeploy, and of course the GHI USB drivers installed.

But if you use IFU, then you don’t need any of these installed.
You could for example detect if an USB stick is connected to USB host, or a SD card is inserted.
If it contains a new hex file, you could initiate the update.

Or you write the file to the device by FTP.

Or you send it over Ethernet to opened TCP server socket on device.

IFU is more work in the first place, but finally it makes updates more easy, because no drivers are needed on the updating computer, which is in some scenarios not necessary either (USB Stick, …).

but IFU bears one risk:
If you get a bug into the IFU part of your device software, that prevents updates, you can not fix this bug with an new IFU update. You need to update these devices with MFDeploy/FEZConfig then one time.
I think this happened to a Palm device once. To be able to apply any updates, the Palm owners had to open the case and push some internal buttons to boot it in loader mode, and then use a special software to update it.

Doesn’t IFU only work for updates once you have some initial code loaded. I would think for production use the chips will be blank. Great for providing new updates to end users though.

Reading this sentence:

I guess the question is about both topics:
Initial software upload for production, and software updates for users.


Thanks all for the replies.

I guess a USB based MFDeploy should work for now.

Btw, if I custom a my product using the STM32F405VG chip, how do I flash my code into a new blank chip ? Do i need a special programmer ? any GHI bootloader need ?

Sorry, I am really new to this.

4.2 is open source and 4.3 can be licensed!

1 Like

I took the chip number from FEZ Cerbuino Bee (STM32F405VG-168 Mhz 32-bit Cortex-M4)

I am using Cerbuino Bee, we had developed our circuit and code based on it. Unfortunately, the board size is too big for our application, hence we need to transfer the circuit design onto a small board.

How can i program the initial bootloader or code into a blank STM32F405VG-168 Mhz 32-bit Cortex-M4 ?

Does GHI sell the chip alone without the board ?

Just take the firmware from the 4.2 sdk. That is all you need.