I have the issue, that my application no available anymore after a certain time. app list command does not show it.
After first I download it into the module. It starts and works well. After few days, I dont know when
app list command does list it. It is not available. It seems the legato system removes the app.
What is wrong?
I using legato 18.6.3 / WP76.
You need to type this after you download the app.
BTW, you can check if the system âmark-goodâ by the following:
root@swi-mdm9x28-wp:~# legato status
Systems installed:
6 [good] â current
Legato framework is running.
It is possible to get rollbacks even after an application is marked good.
The only way to completely remove the possibility of your app being removed is to compile a new âmaster firmwareâ which includes your app.
That whole page is worth a read if you are planning on spending much time with Legato.
Otherwise the important information is here:
They change their terminology a bit between base and master firmware, but I believe that if you perform an update with a .cwe file it wonât be rolled back.
Personally I create a .spk file which includes a slightly customized linux + legato + my app which updates everything all at once. Using this approach I have never had a rollback, but when I started out having apps rollback that were marked good was a massive headache for me.
Hi Shib,
it is possible to disable rollback?
I have modules on the field. When I tested my application, every thinks works well. Now the modules are on the field, and they have rollback.
On the documentation is motioned âWhen an application or system is installed the system is monitored for problems. If too many errors are encountered, the whole system is rolled back to where it was before the update occurred.â
How can I check if the errors are encountered?
I donât think it is possible to disable rollback, and it would be ill advised.
Once you have a reliable base firmware, install that with a .spk before sending the units out in the field.
Once in the field, rely on probation periods and rollbacks, it is the best way to ensure reliable long term deployment while still allowing firmware changes.
Iâm not sure what the best way would be to detect whether a rollback has occurred, perhaps interrogating the app version or system index?
Hi Shib,
in the meantime I created my .spk file will with all components also my application.
When I use the swiflash, everything works well, my application also installed and works.
When I use fdt2.exe on windows, it seems my application doesât be flashed and doesnât be installed. âapp listâ doesnât list it.
Do you know why?
I use a linux VM so I donât have any experience with fdt2.exe.
There is an application note for it which goes in to the command syntax, the only thing that I can think of trying is to add the -force argument.
If you let me know the command you tried I might be able to suggest something else.
Hi AE_1,
Try greping for your app name in syslog. I suspect your application canât start properly by the framework.
If your application uses resources that arenât available at startup, then Legato wonât start it.
BR,
Chris
The app would still be present in the app list though, even if it has failed to start.
He mentioned that the app is installed and runs when using swiflash.
my application started proberly by framework. I tested is, it works very well.
But on the field rollback happens. I blieve what shib mentioned. Even when you have application marked as good, rollback happens.
I havenât looked in to the Legato source on this for a while, so I donât remember the specifics.
If you grep âsysStatus_MarkBadâ you can find some more information in the source code.
sysStatus_MarkBad is the name of the function that marks the current system as bad.
//--------------------------------------------------------------------------------------------------
/**
* Mark the system "bad".
*/
//--------------------------------------------------------------------------------------------------
void sysStatus_MarkBad
(
void
)
//--------------------------------------------------------------------------------------------------
{
file_WriteStrAtomic(CurrentStatusPath, "bad", 0644 /* rw-r--r-- */);
}
If you want to emulate this from the command line, execute the command:
If not, are you using any of the following:
⢠GPIOs: 36, 37, 38, 40, 41
⢠ADC2 and ADC3
Could you please supply the âlegato versionâ? If youâve manually installed your application the Legato version should append â_modifiedâ. If rollback has occurred, then you wonât see this.
Iâm wondering if youâre experiencing the faultLimit. This occurs when a resource that is no longer available is trying to be accessed by your application and the faultAction kicks in too often, resulting in the framework killing your application.
Could you provide a log from a device that is experiencing the rollback?