Перейти к содержанию
    

Отключение BSL

Привет всем. Использую МК MSP430F249. В даташите указано следующее:

(9) The address 0xFFDE is used as bootstrap loader security key (BSLSKEY). A 0xAA55 at this location disables the BSL completely. A

zero disables the erasure of the flash if an invalid password is supplied.

(10) The interrupt vectors at addresses 0xFFDE to 0xFFC0 are not used in this device and can be used for regular program code if

necessary.

 

Правильно ли я понял, что в пункте 9 говорится о том, что если по адресу 0xFFDE записать значение 0xAA55, то BSL в микроконтроллере отключится полностью, а если записать значение 0x0000, то при запросе по BSL с неправильным паролем, будет стерта вся флешь память? Если так, то при записи 0xFFDE следует, что если прожечь JTAG, то записать новую программу в память МК не удастся никогда. Я правильно понимаю?

 

И еще вопрос. В пункте 10 говорится, что адреса 0xFFDE - 0xFFC0 не используются под вектора прерываний в данном МК и могут быть использованы для кода программы. Но ведь может получится так, что по адресу 0xFFDE запишется какое-то "не нужное" значение (0xAA55 или 0x0000). Или компилятор отслеживает данные казусы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или компилятор отслеживает данные казусы?

Компилятору точно по барабану.

Если только целенаправленно в скрипте линкера не залочить.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но ведь может получится так, что по адресу 0xFFDE запишется какое-то "не нужное" значение (0xAA55 или 0x0000). Или компилятор отслеживает данные казусы?

Если под компилятором подразумевается IAR EW430, то 1) нет - случайно не запишется и 2) нет - компилятор специально не отслеживает.

Если посмотреть конфигурацию памяти для линкера IAR в файле lnk430f249.xcl, то можно увидеть, что область Flash, в которой находится ячейка с адресом 0xFFDE, не используется ни под размещение констант, ни под размещение кода. А резервируется лишь под вектора прерываний.

// -------------------------------------

// Interrupt vectors

//

 

-Z(CODE)INTVEC=FFC0-FFFF

-Z(CODE)RESET=FFFE-FFFF

Поскольку в MSP430F249 нет периферии, использующей вектор по адресу 0xFFDE, то компилятор сам по себе разместить "что-то не то" туда не сможет. Так что "испортить" ячейку памяти по адресу 0xFFDE сможет лишь программист :rolleyes:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы. Если вас не затруднит, ответьте на вопросы этого абзаца:

Правильно ли я понял, что в пункте 9 говорится о том, что если по адресу 0xFFDE записать значение 0xAA55, то BSL в микроконтроллере отключится полностью, а если записать значение 0x0000, то при запросе по BSL с неправильным паролем, будет стерта вся флешь память? Если так, то при записи 0xFFDE следует, что если прожечь JTAG, то записать новую программу в память МК не удастся никогда. Я правильно понимаю?
Изменено пользователем d7d1cd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы. Если вас не затруднит, ответьте на вопросы этого абзаца:

Не совсем правильно. Вот цитата из MSP430 Programming Via the Bootstrap Loader User's Guide (slau319f.pdf).

BSL versions 2.00 and higher have enhanced security features. These features are controlled by the flash

data word located beneath the interrupt vector table addresses (for example, for the MSP430F2131,

address 0xFFDE). If this word contains:

• 0x0000: The flash memory is not erased if an incorrect BSL password has been received by the target.

• 0xAA55: The BSL is disabled. This means that the BSL is not started with the default initialization

sequence shown in Section 1.3.

• All other values: If an incorrect password is transmitted, the entire flash memory address space is

erased automatically.

- Когда 0x0000, то BSL не будет стирать Flash при неправильно введенном пароле.

- Когда 0xAA55, то BSL отключен. Это означает, что BSL не стартует при обычной процедуре его инициализации (и при пережженом в JTAG fuse штатных способов доступа к Flash-памяти МК не будет).

- Любое другое значение (отличное ото 0x0000 или 0xAA55) при неправильном вводе пароля доступа вызывает автоматическое стирание всей Flash (т.е. если вы сами ничего не пропишете, то в "секретной" ячейке Flash будет значение 0xFFFF и BSL будет стирать всю Flash-память в отсутствии корректного пароля доступа).

Я специально отметил слово "штатный" способ доступа. Ведь никто не мешает вам реализовать нештатный доступ к Flash (из своей пользовательской программы) с помощью какой-то необычной конфигурации состояний входных сигналов (которых в обычных условиях работы прибора быть не должно) или подачей через любой доступный интерфейс одной-единственной уникальной команды - стереть всю Flash. В таком случае, запустив свою нештатную процедуру стирания Flash-памяти, вы вновь активируете BSL и сможете потом загрузить новую программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...