Цитата(MALLOY2 @ Dec 16 2008, 11:52)

там обсуждают глюки JLink в этой тиматике (IAR 5.20 && Rev.Z) позиция ST похоже такая - фиг что мы вам раскажем

И это тоже...
Если покопаться поглубже, то можно найти причину нашего обсуждения:
1. Проблема всего в одной инструкции, причем не у ST, а у всех кортексов
2. Workaround for Cortex-M3 CPU errata. Errata present in some Cortex-M3 cores can cause data corruption when overlapping registers are used in LDRD instructions. The compiler avoids generating these problematic instructions when the -mfix-cortex-m3-ldrd or -mcpu=cortex-m3 command-line options are used. The Sourcery G++ runtime libraries have also been updated to include this workaround.
Т.е. новые компилеры знают про эту ошибку и будут генерить нормальный код. Кейл эту проблему у себя победил и ...
3. Для ознакомления
http://www.keil.com/support/docs/3442.htm4. Чтобы окончательно стало понятно почему у некоторых так, а у других по другому
1) This limitation does not affect the STM32 code execution when fetching
from embedded FLASH (standard use of the product).
2) The limitation may affect the STM32 code execution when fetching from:
- Embedded RAM
- External memory (via FSMC for the STM32 High Density ). This applies
to applications requiring large amount of code (more than the embedded Flash size ).
Я не имею нормального отладчика, поэтому юзаю компорт, а программа запускается из флэши и данная ошибка у меня не воспроизводится, у тех, кто юзает отладчики и ...читай выше... могут возникать проблемы.
ЗЫЖ To finish, as the limitation is based on asynchronous event (interrupt) on a specific code sequence (LDRD) not executed from STM32 embedded flash, there is very limited chance to get end-customer application fault.
Nevertheless, all our Compilers partners (Keil, IAR, GNU CodeSourcery, Hitex etc..) already provide a "Detection" tool for code deployed in the field with previous/old revisions of compilers that may generate this sequence
Сообщение отредактировал Sanek_spb - Dec 16 2008, 10:02