Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: halil82ist - 15 Şubat 2017, 09:46:14

Başlık: Kod koruma hakkında (stm32f0 ve hal library için )
Gönderen: halil82ist - 15 Şubat 2017, 09:46:14
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 ?
Başlık: Ynt: Kod koruma hakkında (stm32f0 ve hal library için )
Gönderen: 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 .



Başlık: Ynt: Kod koruma hakkında (stm32f0 ve hal library için )
Gönderen: kralsam - 17 Şubat 2017, 07:53:57
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ı)
Başlık: Ynt: Kod koruma hakkında (stm32f0 ve hal library için )
Gönderen: kantirici - 17 Şubat 2017, 08:32:27
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.
Başlık: Ynt: Kod koruma hakkında (stm32f0 ve hal library için )
Gönderen: halil82ist - 17 Şubat 2017, 08:48:56
 İşlemci ye program atarken daha programlama kablosunu sökmeden kod korumaya geçiyor .  Bir daha da okunmuyor .değerler kalıcı .