Better way to implement firmware upgrade for embedded Linux?

I'm trying to implement function for firmware upgrade in an embedded linux system. Unlike most other embedded systems, the size of memory required for an embedded linux system is often larger. Take our system for example, the size of a complete firmware ( including kernel and ramdisk image. ) is about 5MB. I've tried both way, either

(1)Overwrite flash on the fly, without checksum. (2)Kill some processes,read it to allocated memory, do checksum,and upgrade.

For the first one, it is dangerous because possible link error or network failure. For the second one, I get OOM killer even after I've allocated memory and calculated checksum. Both of them are a little risky for me.

So here is the question: is there better design strategy for firmware upgrade for an embedded linux system?

Reply to
Loading thread data ...

Why do you get OOM killer - what's allocating memory? Also, look at /usr/src/linux/mm/oom_kill.c, for reasons why a given process gets killed.

Reply to
Ian Stirling

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.