Flash память К1921ВК01Т

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Ответить
steksor
Сообщения: 3
Зарегистрирован: 28 апр 2017, 14:23
Предприятие: Сумма Технологии

Flash память К1921ВК01Т

Сообщение steksor » 28 апр 2017, 14:37

Несколько вопросов по работе с Flash памятью

1. Flash память. Полное стирание.

Каким образом произойдет стирание Flash памяти, если, согласно п.7.3 ТО на К1921ВК01Т, установить на ножку H2 лог. единицу и после сброса по JTAG или SWD подать команду записи значения 0x00000001 в регистр FLASH_FULL_ERASE ?
Произойдет стирание:
а) основного блока загрузочной Flash ?
б) информационного блока загрузочной Flash ?
в) основого блока пользовательской Flash ?
г) информационного блока пользовательской Flash ?
д) INFO_WORD и биты защиты страниц тоже обнуляться?

2. Flash память. Защищенный блок.

Из защищенного (информационного) блока flash-памяти возможно чтение только при загрузке программы из него? То есть при выполнении программы из основной загрузочной памяти нельзя прочесть содержимое защищенного блока?
В ТО на К1921ВК01Т написано, что в защищенном блоке можно хранить важные данные. Тогда читать эти данные может только программа исполняемая из этого блока?

3. Flash память. Загрузчик.

Т.к. загрузочная Flash память у К1921ВК01Т имеет два блока (основной и защищенный), которые имеют одинаковые начальные адреса (0x0000), исполнение кода из которых зависит от бита BOOT_FROM_IFB регистра INFO_WORD, то возможно ли загрузить в защищенный блок загрузочной памяти бутлоадер, который бы запускался всегда при старте МК, проверял нужно ли перепрошить в основную область загрузочной памяти программу, а затем, без сброса МК переходил к исполнению программы в основную область загрузочной памяти, начиная с адреса 0x0000 ?
Или для этого нужно чтобы исполняемая программа из защищенного блока после загрузки кода в основной блок, установила бит BOOT_FROM_IFB и сбросила МК, чтобы он запустился уже с начала основного блока? Или же бутлоадер, находясь в адресах с 0x0000 – 0x1FFF защищенного блока, может перейти к исполнению программы в основной блок только начиная с адреса 0x2000? Тогда память 0x0000 – 0x1FFF основного блока не будет являться частью исполняемой программы?

bkolbov
Сообщения: 86
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: Flash память К1921ВК01Т

Сообщение bkolbov » 02 май 2017, 09:31

Здравствуйте!
steksor писал(а):
28 апр 2017, 14:37
1. Flash память. Полное стирание.

Каким образом произойдет стирание Flash памяти, если, согласно п.7.3 ТО на К1921ВК01Т, установить на ножку H2 лог. единицу и после сброса по JTAG или SWD подать команду записи значения 0x00000001 в регистр FLASH_FULL_ERASE ?
Произойдет стирание:
а) основного блока загрузочной Flash ?
б) информационного блока загрузочной Flash ?
в) основого блока пользовательской Flash ?
г) информационного блока пользовательской Flash ?
д) INFO_WORD и биты защиты страниц тоже обнуляться?
а)б)в)г)д) - да, произойдет. Сотрется полностью все.
steksor писал(а):
28 апр 2017, 14:37
2. Flash память. Защищенный блок.

Из защищенного (информационного) блока flash-памяти возможно чтение только при загрузке программы из него? То есть при выполнении программы из основной загрузочной памяти нельзя прочесть содержимое защищенного блока?
В ТО на К1921ВК01Т написано, что в защищенном блоке можно хранить важные данные. Тогда читать эти данные может только программа исполняемая из этого блока?
Да, читать любые данные из информационного блока основной flash-памяти возможно только при загрузке из него. При выполнении программы из основной загрузочной памяти нельзя прочесть содержимое защищенного блока.
steksor писал(а):
28 апр 2017, 14:37
3. Flash память. Загрузчик.

Т.к. загрузочная Flash память у К1921ВК01Т имеет два блока (основной и защищенный), которые имеют одинаковые начальные адреса (0x0000), исполнение кода из которых зависит от бита BOOT_FROM_IFB регистра INFO_WORD, то возможно ли загрузить в защищенный блок загрузочной памяти бутлоадер, который бы запускался всегда при старте МК, проверял нужно ли перепрошить в основную область загрузочной памяти программу, а затем, без сброса МК переходил к исполнению программы в основную область загрузочной памяти, начиная с адреса 0x0000 ?
Нет, так не получится.
steksor писал(а):
28 апр 2017, 14:37
Или для этого нужно чтобы исполняемая программа из защищенного блока после загрузки кода в основной блок, установила бит BOOT_FROM_IFB и сбросила МК, чтобы он запустился уже с начала основного блока? Или же бутлоадер, находясь в адресах с 0x0000 – 0x1FFF защищенного блока, может перейти к исполнению программы в основной блок только начиная с адреса 0x2000? Тогда память 0x0000 – 0x1FFF основного блока не будет являться частью исполняемой программы?
Да, основную исполняемую программу необходимо линковать с учетом того, что она будет начинать исполняться с адреса 0x00002000. Либо, как вы написали, можно устанавливать BOOT_FROM_IFB в конце работы бутлоадера и сбрасывать МК (только сброс по питанию или внешний сброс подойдут в этом случае), но при этом основная программа должна обратно записать нуль в этот бит, чтобы мк при старте всегда сперва заходил в бутлоадер.

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость