реклама на сайте
подробности

 
 
> Отключение BSL
d7d1cd
сообщение Oct 10 2013, 04:53
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем. Использую МК 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). Или компилятор отслеживает данные казусы?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
MrYuran
сообщение Oct 10 2013, 05:54
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(d7d1cd @ Oct 10 2013, 07:53) *
Или компилятор отслеживает данные казусы?

Компилятору точно по барабану.
Если только целенаправленно в скрипте линкера не залочить.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 10 2013, 18:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 10 2013, 09:53) *
Но ведь может получится так, что по адресу 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.gif
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 10 2013, 20:05
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



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


Сообщение отредактировал d7d1cd - Oct 10 2013, 20:06
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 11 2013, 06:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 11 2013, 01:05) *
Спасибо за ответы. Если вас не затруднит, ответьте на вопросы этого абзаца:

Не совсем правильно. Вот цитата из 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 и сможете потом загрузить новую программу.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 21:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01389 секунд с 7
ELECTRONIX ©2004-2016