Arm code protection?

Başlatan Ramiz, 25 Aralık 2013, 21:34:38

tekosis

teşekkür ederim hocam.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

halil82ist

Merhaba ;

bir sorum olacak stm32f030 serisi kullanıyorum . stlink programından code project yapabiliyorum fakat çok uğraştırıyor . ben beceremiyor olabilirim . microchip deki gibi program içine yazabileceğimiz bir kod varmı ? ilk mesajlarda var ama bana hal library olan lazım . bu işin kolay yolunu bilen bir arkadaş yardımcı olursa çok sevinirim . kolay gelsin .

oyhan

#47
Merhabalar
STM32F030f4 kullanıyorum. Aşağıdaki kodu main rutini içine koydum. Fakat kod protect sağlanamıyor. ST LINK ile bunu sağlıyorum.
Ancak programlayıcı ile değilde kodun içinde bunu çözmek istediğim için epey uğraştım. Fakat bir hata yapıyorum sanırm.
Yardımcı olabilir misiniz?

int main(void)
{
	unsigned char Value1=0, Value10=0, i=0;
  unsigned short charNu=0,  zaman;
	
  	
	#if READ_PROTECT  == 1
	 if (OB->RDP != (uint32_t)(((uint32_t)((uint32_t)((uint8_t)~(OB_RDP_Level_1)) << 16)) | ((uint32_t)OB_RDP_Level_1)))
   { 		
			FLASH_OB_Unlock (); 
  	    FLASH_OB_RDPConfig(OB_RDP_Level_1);
			FLASH_OB_Launch();		
			FLASH_OB_Lock (); 
	 }			
	#endif	
	 
	CPU_Init();
.
.
.
.
}	
 
BİRLİKTEN KUVVET DOĞAR:

yucatar

Alıntı yapılan: X-Fi - 25 Aralık 2013, 22:02:41Stm32 M3 serisi için söylüyorum options byte isimli bir register var. Kendi bloğumda bu konuyla ilgili bir başlık açmıştım. OB registera stdlibrary desteği de bulunuyor bitleri değiştirerek kod içerisinden read veya write protect yapabiliyorsunuz. Tek dez avantajı bu registerı değiştirdiğinizde işlemci resetleniyor. Bir kere ayarlayıp ayarlıysa dokunamanız gerekiyor aşağıdaki kod buna bir örnek. M4 serisinde de böyle bir dez avantaj varmı bilmiyorum farklılık gösterebilir. Bunun haricinde ST-link programı ile de bağlantı sağlayıp bu ayarları değiştirebiliyorsunuz.

#if READ_PROTECT  == 1
	 if (OB->RDP != (uint32_t)(((uint32_t)((uint32_t)((uint8_t)~(OB_RDP_Level_1)) << 16)) | ((uint32_t)OB_RDP_Level_1)))
   { 		
			FLASH_OB_Unlock (); 
  	    FLASH_OB_RDPConfig(OB_RDP_Level_1);
			FLASH_OB_Launch();		
			FLASH_OB_Lock (); 
	 }			 
#endif	 

Ek bir bilgi daha vermek lazım stm32 serilerinde RPD_Level_2 yi aktif ederseniz geri dönüşü olmayan bir yola girmiş olursunuz. Dikkatli kullanın.

STM32F030C8 işlemci için bu şekilde mi yapılması lazım?

if(OB->RDP != (uint16_t)(((uint16_t)((uint16_t)((uint8_t)~(OB_RDP_Level_1))<<8))|((uint16_t)OB_RDP_Level_1)))