Доброго времени суток.
Кристалл С8051f360.
При переносе проекта на новую версию компайлера не удается правильно разместить область для процедур самопрограммирования. Описанные в .... .bialix.com/tools/keil/faq/ метод для LX51 не понимает определения CODE_SELFUPDATE (C:0x7000-С:0x77ff). Проглатывает только CODE_SELFUPDATE (C:0x7000) но при этом все функции линкер начинает размещать с адреса 0х7000. Область Flash памяти программ, начиная с адреса С:0 занята только вызовами процедур прерывания (которые о же "улетают" на адрес 0x7000 и выше) и STARTUP.
"Шаманство" типа #pragma class (code = CODE) // generates CODE_SELFUPDATE class ... все процедуры кроме перепрошивальщика
#pragma userclass (code = SELFUPDATE) // generates CODE_SELFUPDATE class
void MY_Upgrade_Code (void) ....
Не помогает.
Может быть кто то ту уже разобрался с этим в этой версии? В Keil-овских доках пока ни чего толкового не нашел.
|