App Header Failed
Posted: Thu Jul 31, 2014 7:23 am
What exactly does "App Header Failed" (followed by "No Valid App") mean, when displayed by the Monitor?
Background (details obscured for confidentiality reasons):-
I have a project of some 600 individual units, each contains a MOD5282 module on a custom main processor card. There are two variants with different I/O cards added, I'll call these VAR1 (approx. 400) and VAR2 (approx. 200). They've been running happily for several years.
The application software on each is 85% the same on each variant, only about 15% of the software is different between the two variants.
Each unit can access an FTP server which can contain new application software. To do an application software update we upload new .s19 files into the server then reboot the units, they look for new software at startup and re-program themselves if required. I use the ReadS19ApplicationCodeFromStream to do this. This has been working very well, we've done 3 or 4 software updates over 18 months like this.
For the previous update to the one I'm currently having trouble with, we needed to use to save some user data so we decided to use the UserParameters Flash area. A complication is that we are also already using the SNMP library which also uses this area to store some config data. So I wrote some new functions to wrap both the SNMP data and our own data together. All seemed OK on bench testing so we rolled this version out to all the units. This was over a year ago and used version 2.6.0 of the Netburner Tools and Libraries.
Now we're doing another update to code unrelated to the UserParameters stuff. Now we're at Tools version 2.6.3. Again bench testing seemed OK so we remotely updated about 12 VAR1 units and 6 VAR2 units). The VAR1 units updated OK but all the VAR2 units dropped out to the Monitor after self-reprogramming, displaying "App Header Failed/No Valid App". Note, the units appear to programme OK, reboot then fail. Obviously this requires a site visit to fix, uploading the new code using MTTTY; when we do this, all works OK.
So I'm trying to find out what's going on, what's different between the code for VAR1 and VAR2 (the code lengths are different). Also are there any relevant differences between 2.6.0. and 2.6.3? I suspect a problem around my UserParameters reading/writing code, so I'll be looking in detail here. We do a SaveUserParameters after re-programming is complete, just before a ForceReboot; if this is a problem, why does it work OK for some variants and not others?
Now it may be that we have to visit all 200 rogue units to manually program them to the latest version. However I would like to know what is happening so that we can make sure it doesn't happen again!
Meanwhile I wondered if anyone had any helpful thoughts.
Background (details obscured for confidentiality reasons):-
I have a project of some 600 individual units, each contains a MOD5282 module on a custom main processor card. There are two variants with different I/O cards added, I'll call these VAR1 (approx. 400) and VAR2 (approx. 200). They've been running happily for several years.
The application software on each is 85% the same on each variant, only about 15% of the software is different between the two variants.
Each unit can access an FTP server which can contain new application software. To do an application software update we upload new .s19 files into the server then reboot the units, they look for new software at startup and re-program themselves if required. I use the ReadS19ApplicationCodeFromStream to do this. This has been working very well, we've done 3 or 4 software updates over 18 months like this.
For the previous update to the one I'm currently having trouble with, we needed to use to save some user data so we decided to use the UserParameters Flash area. A complication is that we are also already using the SNMP library which also uses this area to store some config data. So I wrote some new functions to wrap both the SNMP data and our own data together. All seemed OK on bench testing so we rolled this version out to all the units. This was over a year ago and used version 2.6.0 of the Netburner Tools and Libraries.
Now we're doing another update to code unrelated to the UserParameters stuff. Now we're at Tools version 2.6.3. Again bench testing seemed OK so we remotely updated about 12 VAR1 units and 6 VAR2 units). The VAR1 units updated OK but all the VAR2 units dropped out to the Monitor after self-reprogramming, displaying "App Header Failed/No Valid App". Note, the units appear to programme OK, reboot then fail. Obviously this requires a site visit to fix, uploading the new code using MTTTY; when we do this, all works OK.
So I'm trying to find out what's going on, what's different between the code for VAR1 and VAR2 (the code lengths are different). Also are there any relevant differences between 2.6.0. and 2.6.3? I suspect a problem around my UserParameters reading/writing code, so I'll be looking in detail here. We do a SaveUserParameters after re-programming is complete, just before a ForceReboot; if this is a problem, why does it work OK for some variants and not others?
Now it may be that we have to visit all 200 rogue units to manually program them to the latest version. However I would like to know what is happening so that we can make sure it doesn't happen again!
Meanwhile I wondered if anyone had any helpful thoughts.