Hi,
So after (a long) investigation I think I can explain what happens, but I don't know how to correct since it may come from the kernel sources (I'm not kernel developper).
If I dump device-tree values before starting any application the device-tree (DT) is not corrupted.
If I start an application that requires quite a lot of memory (such as net-snmp with V3 and encryption/authentication enabled) the device tree becomes corrupted.
It seems that applications that requires quite a lot of memory are overwritting DT values.
So I configure my GPIOs before DT corruption and everything works fine.
But this is not really a solution.
So I think that the DT area is not protected from a kernel point of vu, so the memory used by the DT is overwritten when kernel needs more memory.
I don't know if the issue comes from the kernel itself or from uClinux stuffs.
Does someone has any idea ?
Best regards
PS : the more strange behaviour is that with a 16MB RAM the DT needs more applications running to be corrupted, with a 32MB RAM the DT is corrupted after the first application launched?