I have problem with updating program to distant arm system. I found some bugs in program but we sold couple product and is expensive to go and change code directly, I want to update using server-controller communication. I had idea two application image written in another places in memory(new one and old) and if some flag is set to execute first and if not to execute second. And when I want do update if flag is set - write program in first memory location and if is not to write to second memory location. Does anybody knows how to solve this problem and does anybody has example code for this?
I'm using ARM LPC2378, and for developing Keil bord MCU2300
If you haven't provided any way in your current software to do field updates your options would seem to be limited to going out there, or sending a replacement board.
The concept of splitting firmware in to multiple pieces is not new, you could have a boot loader capable of accepting updates, and an application portion which the boot loader checks and jumps too.
It's not clear if you have network connectivity for your device, or how you plan on delivering firmware updates.
You could write a boot loader that's capable of downloading new software via the internet, or via a serial port and and terminal program. If the board has an SD card slot you could send firmware updates on those, and have the boot loader look for new firmware on that.
Perhaps you should have thought about this a little earlier in development, and picked up some books on embedded systems, and looked at how other devices you use effect firmware updates.
If you have JTAG access, you could always send a device like this, in stand-alone mode, with your firmware uploaded on to it.
www.segger.com/flasher-arm.html
Hi !
This video can help You, at least how to design programs where frequent updates are required. In this case one core program (run-time system) is installed on remote machines with ARM. It enables updating native code and data segments "on-hot".
www.djukic-soft.com/.../MetaEdit_DVMEx_DSM_RTS.wmv
This video illustrates complete proces of building native code for ARM boards. From the point of modeling tool, target platform is not relevant. It can be ARM or Intel based, in some cases also FPGA.
Back to Your idea with flags: Yes, a lot of flags are required in order to update code on remote machine. Some of such flags are parts of:
1) task scheduling; 2) dynamic linker; 3) communication protocols etc.
Best regards, Djuka