нашел... поиск рулит... (а то я чавой-та на синтаксис х51-го полез

)
#pragma location=0x1FC /* защита от копирования */
const long CodeSecure = 0x87654321;
#pragma required = CodeSecure
Остаются следующие вопросы:
1. В старших моделях (например 2468) это значение нужно записать в регистр CSPR в течение 256 первых тактов. Но как поправить бутлоадер, чтобы он это сделал?
Далее в мануале на эту модель говорится, что, после проверки целостности flash, бут пишет значение ячейки 0x1FC в регистр CSPR и ключевое значение оного блокирует кристалл от дебага и вообще доступа к содержимому. В чем принципиальное отличие этих двух путей? Можно ли во втором случае дорваться к прошивке через вообще что-то (бут, жтаг, ...)?
2. В модели 2478 есть вообще три уровня защиты:
There are three levels of the Code Read Protection.
CRP1 disables access to chip via the JTAG and allows partial flash update (excluding
flash sector 0) using a limited set of the ISP commands. This mode is useful when CRP is
required and flash field updates are needed but all sectors can not be erased.
CRP2 disables access to chip via the JTAG and only allows full flash erase and update
using a reduced set of the ISP commands.
Running an application with level CRP3 selected fully disables any access to chip via the
JTAG pins and the ISP. This mode effectively disables ISP override using P2[10] pin, too.
It is up to the user’s application to provide (if needed) flash update mechanism using IAP
calls or a call to reinvoke the ISP command to enable flash update via UART0.
Что это за "уменьшенный" и "ограниченный" набор команд ISP?
Правильно ли я понимаю, что в третьем варианте, если я не предусмотрю своего механизма обновления, такой чип в случае необходимости перепрошивки нужно будет выкинуть в помойку и впаять новый?
Прошу прощения за назойливость, вызвана пока неопытностью и необходимостью реализации, которая невозможна без понимания физики процесса

Цитата(KRS @ May 19 2009, 01:22)

Главное объяснить линкеру что класть нужно именно туда. И есть еще момент в том что эта константа очень неудачно расположена т.е. надо что бы в этом месте не было кода. Т.е. основной код можно расположить с адреса 0x200. Но тогда остается место между векторами и 0x1FC, там можно, например, разместить обработчик прерывания...
ух, чуть-чуть не успел

я так понимаю, что как раз прагмы и укажут линкеру на то, что там будет только это значение и ничто иное?
Сообщение отредактировал toweroff - May 18 2009, 21:39