Добрый день.
Имеется dsPIC33FJ64GP206. Память разбита на Boot Segment (0x0200..0x07FF, уровень безопасности - High, защита от записи включена) и General Segment (уровень безопасности - Standard). В Boot Segment лежит загрузчик и, соответственно, п/п записи/чтения Flash.
Загрузчик и п/п работы с Flash полностью отлажены и работают.

В какой-то момент потребовалось писать в Flash непосредственно из основной программы, т.е. из GS в GS. Однако при попытке стирания страницы возникает прерывание Address Error Trap. Основная пикантность ситуации в том, что п/п работы с Flash находятся в BS, т.е. фактически запись в Flash производится из BS, также как и при работе загрузчика. Эта проблема возникает и при стандартном уровне безопасности BS. Если убрать BS, то запись работает.

Кто-нибудь сталкивался с такой проблемой? Может я что-то упустил (в Errat-ах ничего похожего не описано)?

Примечание.
Я в курсе, что при высоком уровне безопасности BS переход в него из GS возможен только на первые 32 команды. Поэтому из GS вызываются не сами п/п работы с Flash, а "обертки", расположенные в начале BS. Т.е. начало листинга BS выглядит след. образом:
Код
Line  Address  Opcode      Label                   Disassembly              

   257   0200   0407A8 IAP_ReadLatch  goto ReadLatch                        
   258   0202   000000                nop                                    
   259   0204   04079C IAP_WriteLatch goto WriteLatch                        
   260   0206   000000                nop                                    
   261   0208   0407DA IAP_ReadPage   goto ReadPage                          
   262   020A   000000                nop                                    
   263   020C   04073C IAP_WritePage  goto WritePage                        
   264   020E   000000                nop                                    
   265   0210   0407B0 IAP_ErasePage  goto ErasePage                        
   266   0212   000000                nop                                    
   267   0214   040782 IAP_VerifyPage goto VerifyPage                        
   268   0216   000000                nop                                    
   269   0218   4787E4 _monitor       add.w w15,#4,w15                      
   270   021A   210D2E                mov.w #0x10d2,w14