I have this very hard to solve problem. My firmware is running perfectly fine, but some builds won't boot. If I then re-order the linking of the C files or just add a printf somewhere it can be solved and then that firmware seems totally stable. Now I have been investigating what happens and it is hanging somewhere in efc_perform_read_sequence. Using vimdiff and the list file I tried to change things while preventing the entire thing to get re-organized and the bug disappearing. So for instance when I disable the instruction cache (by replacing the Enable with Disable in board_init) the problem is solved while the code layout is not changed. Also when I change the wait states in system_init_flash from 6 to 7 or 5 the problem also is gone, again making sure the code is not completely different. Also I tried replacing the first if in efc_perform_read_sequence (that is never true anyway) by the same amount of nops. The code still hangs. But when I move one of the nops below the first FMR assign it fixes the problem. Two nops doesn't but three does fix and also four fixes the problem. So I am really pulling my hair out... is this a timing issue... alignment issue... a bug in ASF regarding the efc_perform_read_sequence? I do BTW disable interrupts before calling this flash_read_unique_id (the method using efc_perform_read_sequence), something I don't see Atmel do in their examples, but from reading the code sounds like good practice since the whole FLASH address space seems to be temporarily relocated. Anyone suggestions where to look for a solution? Thanks!