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 ?
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 .
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ı)
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.
İşlemci ye program atarken daha programlama kablosunu sökmeden kod korumaya geçiyor . Bir daha da okunmuyor .değerler kalıcı .