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

 
 
> IAP программирование Option Bytes (STM32F1)
Alt.F4
сообщение Jan 15 2015, 07:31
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Здравствуйте.

Никак не получается программно изменить Option Bytes.
Использую примеры ST, но они не работают (по адресам 0x1FFF F800 - 0x1FFF F80F ничего не меняется):
FLASH_Unlock();
FLASH_EnableWriteProtection(FLASH_WRProt_Pages0to1 |FLASH_WRProt_Pages2to3);
NVIC_SystemReset();


Если перед записью добавить FLASH_EraseOptionBytes(), то каким-то чудесным образом включается защита от чтения и даже последующая FLASH_ReadOutProtection(DISABLE) не помогает ее выключить.

Может кто-то сталкивался с подобным?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alt.F4
сообщение Jan 16 2015, 14:24
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Код
/**
  * @brief  Erases the FLASH option bytes.
  * @note   This functions erases all option bytes except the Read protection (RDP).
  * @note   This function can be used for all STM32F10x devices.
  * @param  None
  * @retval FLASH Status: The returned value can be: FLASH_ERROR_PG,
  *         FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT.
  */
FLASH_Status FLASH_EraseOptionBytes(void)
{
  uint16_t rdptmp = RDP_Key;

  FLASH_Status status = FLASH_COMPLETE;

  /* Get the actual read protection Option Byte value */
  if(FLASH_GetReadOutProtectionStatus() != RESET)
  {
    rdptmp = 0x00;  
  }

  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation(EraseTimeout);
  if(status == FLASH_COMPLETE)
  {
    /* Authorize the small information block programming */
    FLASH->OPTKEYR = FLASH_KEY1;
    FLASH->OPTKEYR = FLASH_KEY2;
    
    /* if the previous operation is completed, proceed to erase the option bytes */
    FLASH->CR |= CR_OPTER_Set;
    FLASH->CR |= CR_STRT_Set;
    /* Wait for last operation to be completed */
    status = FLASH_WaitForLastOperation(EraseTimeout);
    
    if(status == FLASH_COMPLETE)
    {
      /* if the erase operation is completed, disable the OPTER Bit */
      FLASH->CR &= CR_OPTER_Reset;
      
      /* Enable the Option Bytes Programming operation */
      FLASH->CR |= CR_OPTPG_Set;
      /* Restore the last read protection Option Byte value */
      OB->RDP = (uint16_t)rdptmp;
      /* Wait for last operation to be completed */
      status = FLASH_WaitForLastOperation(ProgramTimeout);

      if(status != FLASH_TIMEOUT)
      {
        /* if the program operation is completed, disable the OPTPG Bit */
        FLASH->CR &= CR_OPTPG_Reset;
      }
    }
    else
    {
      if (status != FLASH_TIMEOUT)
      {
        /* Disable the OPTPG Bit */
        FLASH->CR &= CR_OPTPG_Reset;
      }
    }  
  }
  /* Return the erase status */
  return status;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alt.F4   IAP программирование Option Bytes (STM32F1)   Jan 15 2015, 07:31
- - Сергей Борщ   Цитата(Alt.F4 @ Jan 15 2015, 09:31) Никак...   Jan 15 2015, 08:40
- - Alt.F4   Хочется использовать стандартную библиотеку, чтобы...   Jan 15 2015, 09:42
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 15 2015, 11:42) Хочет...   Jan 15 2015, 10:54
- - Alt.F4   Да, в доке написано, что при стирании Option Bytes...   Jan 16 2015, 11:37
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 13:37) функц...   Jan 16 2015, 12:32
|- - adnega   Цитата(Alt.F4 @ Jan 16 2015, 14:37) Да, в...   Jan 17 2015, 11:34
- - ViKo   А как запрограммировать Option Bytes средствами са...   Jan 16 2015, 12:43
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 14:43) средств...   Jan 16 2015, 12:53
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 15:53) ...   Jan 16 2015, 13:48
- - Alt.F4   ЦитатаПоздравляю, вы нашли брешь в защитеЭто скоре...   Jan 16 2015, 12:55
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 14:55) Это с...   Jan 16 2015, 13:52
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 16:52) ...   Jan 16 2015, 13:56
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 15:56) Я задал...   Jan 16 2015, 14:32
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 17:32) ...   Jan 16 2015, 14:39
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 16:39) Какой S...   Jan 16 2015, 14:41
||- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 17:41) ...   Jan 16 2015, 15:07
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 16:39) От попа...   Jan 16 2015, 14:56
- - Alt.F4   Интересную вещь еще заметил, если стоит защита от ...   Jan 16 2015, 14:50
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 16:50) Это т...   Jan 16 2015, 15:11
- - ViKo   И что теперь, не стереть flash?! Шо за хня...   Jan 16 2015, 15:28
- - ViKo   А если создать в своей программе функцию стирания ...   Jan 16 2015, 17:02
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 19:02) Жду сов...   Jan 16 2015, 21:22
|- - toweroff   Цитата(ViKo @ Jan 16 2015, 20:02) А если ...   Jan 17 2015, 00:57
|- - ViKo   Цитата(toweroff @ Jan 17 2015, 03:57) есл...   Jan 17 2015, 06:36
- - ViKo   Пошарил по Интернету... какая, однако, мощная защи...   Jan 16 2015, 22:08
- - Alt.F4   ЦитатаПопробуйте после этого временно сбросить пит...   Jan 17 2015, 16:17
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 17 2015, 18:17) В дру...   Jan 19 2015, 13:20
- - Alt.F4   Сергей Борщ, не угадали, когда флэш стирается или ...   Jan 19 2015, 22:04
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 20 2015, 00:04) Кстат...   Jan 19 2015, 23:31
- - Alt.F4   По всей видимости мне надо видео снять, как эта ма...   Jan 20 2015, 07:08
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 20 2015, 09:08) По вс...   Jan 20 2015, 08:25
- - Alt.F4   ЦитатаСнимите. Только шагайте не по исходнику, а п...   Jan 20 2015, 15:52
- - Alt.F4   Если кому-нибудь интересно, то продолжение здесь.   Jan 21 2015, 19:33


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

 


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


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