linux4sam / at91bootstrap

Second level bootloader for Microchip SoC (aka AT91)
https://www.linux4sam.org/linux4sam/bin/view/Linux4SAM/AT91Bootstrap4
112 stars 232 forks source link

AT91SAM9G45 boot hang / bricked #161

Open Happytec opened 1 year ago

Happytec commented 1 year ago

Hi,

We are using an AT91SAM9G45 processor in one of our products. We have a lot of problems with this product being bricked, which we can fix pretty easily in house by disconnecting the backup battery. This seems to be a known issue on said processor.

Now we have started to research this problem and we have found a way to reproduce something that looks like the same behaviour by switching the unit off while still in the AT91Bootstrap phase (say 1 out of 3 reboots) and to a lesser extent while booted further than AT91Bootstrap (say 1 out of 100 times). Also we noticed that the problem does not occur with the older version of the bootloader, 1.16 (the version showing this problem is 3.8.7). Some of the differences we found between these versions are:

Seems unrelated, but the old version does not enable the PIT timer

Leaving the internal RC running: improves the rate of bricked units from 1 out of 3 into about 1 out of 5, not such a huge improvement

Leaving the external reset disabled: improves the rate of bricked units from 1 out of 3 into about 1 out of 25, a significant improvement but still not near as good as the old AT91bootstrap version

A combination of both aforementioned changes: rate of bricked units remains at 1 out of 3, very strange.

Enabling the internal RC and leaving the external oscillator disabled: rate of bricked units improves to 1 out of 1150, a immense improvement, but we are reluctant to actually use this as we want to use the RTC if possible. Also, the problem still isn't solved completely.

We introduced the new bootstrap version to our products to enable ECC, but so far it seems to have caused more issues than it has solved. Is there a known issue with version 3.8.7 that we need to know about? If so, which version or patch might fix this? Could anybody point me into the right direction?

Thanks!