Kod koruma hakkında (stm32f0 ve hal library için )

Başlatan halil82ist, 15 Şubat 2017, 09:46:14

halil82ist

Merhaba ;

Stm32 f0 işlemcisi kullanıyorum . stlink ten kod koruma yapmak uğraştırıyor . program dosyası içinde nasıl yapılabileceği hakkında yardımcı olabilirmisiniz ? koay gelsin ?

halil82ist

merhaba ;

Sorunu çözdüm . Takılan arkadaş olursa uğraşmasın diye paylaşıyorum .

void kodkoruma ()
{
   HAL_FLASH_Unlock();
   HAL_FLASH_OB_Unlock();
   if(HAL_TIMEOUT==HAL_FLASHEx_OBErase())
   {
      HAL_FLASH_OB_Lock();
      HAL_FLASH_Lock();   
   }
   else
   {
   HAL_FLASH_OB_Lock();
   HAL_FLASH_Lock();
   HAL_FLASH_OB_Launch();   
   }
}

bu fonksiyonu ilk açılışta bir kere çağırıyorum . birde stm32f0xx_hal_flash_ex.c hal library standart dosyasının içindeki HAL_StatusTypeDef HAL_FLASHEx_OBErase fonksiyonunu şu şekilde değiştiriyorum .

HAL_StatusTypeDef HAL_FLASHEx_OBErase(void)
{
  uint8_t rdptmp = OB_RDP_LEVEL_0;
  HAL_StatusTypeDef status = HAL_ERROR;

  /* Get the actual read protection Option Byte value */
  rdptmp = FLASH_OB_GetRDP();
  if (rdptmp==OB_RDP_LEVEL_1)
   {
      status= HAL_TIMEOUT;
      return status ;
   }   
   rdptmp=OB_RDP_LEVEL_1;
  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);

program çalışmaya başlayınca kod koruma aktif oluyor .




kralsam

Alıntı yapılan: halil82ist - 16 Şubat 2017, 18:29:18
merhaba ;

Sorunu çözdüm . Takılan arkadaş olursa uğraşmasın diye paylaşıyorum .

void kodkoruma ()
{
   HAL_FLASH_Unlock();
   HAL_FLASH_OB_Unlock();
   if(HAL_TIMEOUT==HAL_FLASHEx_OBErase())
   {
      HAL_FLASH_OB_Lock();
      HAL_FLASH_Lock();   
   }
   else
   {
   HAL_FLASH_OB_Lock();
   HAL_FLASH_Lock();
   HAL_FLASH_OB_Launch();   
   }
}

bu fonksiyonu ilk açılışta bir kere çağırıyorum . birde stm32f0xx_hal_flash_ex.c hal library standart dosyasının içindeki HAL_StatusTypeDef HAL_FLASHEx_OBErase fonksiyonunu şu şekilde değiştiriyorum .

HAL_StatusTypeDef HAL_FLASHEx_OBErase(void)
{
  uint8_t rdptmp = OB_RDP_LEVEL_0;
  HAL_StatusTypeDef status = HAL_ERROR;

  /* Get the actual read protection Option Byte value */
  rdptmp = FLASH_OB_GetRDP();
  if (rdptmp==OB_RDP_LEVEL_1)
   {
      status= HAL_TIMEOUT;
      return status ;
   }   
   rdptmp=OB_RDP_LEVEL_1;
  /* Wait for last operation to be completed */
  status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);

program çalışmaya başlayınca kod koruma aktif oluyor .




Bu fonksiyon aktif olana kadar okunması mümkün olmayacak mı? Bana yeterli test edemedin gibi geliyor.(Örn: Resetten hemen sonrası)

kantirici

Mcu ilk çalışmaya başladıktan sonra "kodkoruma"  fonksiyonu işletilince ye kadar mcu dışarıdan müdahaleye açık kalacaktır. Bu durumda ise  veriler okunabilir.

halil82ist

 İşlemci ye program atarken daha programlama kablosunu sökmeden kod korumaya geçiyor .  Bir daha da okunmuyor .değerler kalıcı .