Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: Ramiz - 25 Aralık 2013, 21:34:38

Başlık: Arm code protection?
Gönderen: Ramiz - 25 Aralık 2013, 21:34:38
Merhaba,

Arm işlemcilerde kod koruma register ı varmı?(ki muhtemelen vardır), Yazdığımız kodları nasıl koruyoruz? Her model mcu için durum aynımı?(aynı familyadan olanlar için. Örneğin CortexM3)

Teşekkürler.
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 25 Aralık 2013, 22:02:41
Stm32 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.
Başlık: Ynt: Arm code protection?
Gönderen: Ramiz - 25 Aralık 2013, 22:13:17
Anlaşılan bu durum markadan, modele göre değişim gösteriyor. Yukarıda paylaştığınız kodu yazılımıma gömünce, sadece yazma yapabiliyorum mcu ya? Doğrumu anlamışım? Birden fazla yazma yapabilirim?

Bu kodu initalize kısmındamı çalıştıracağım?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 25 Aralık 2013, 22:17:43
Alıntı yapılan: Ramiz - 25 Aralık 2013, 22:13:17
Anlaşılan bu durum markadan, modele göre değişim gösteriyor. Yukarıda paylaştığınız kodu yazılımıma gömünce, sadece yazma yapabiliyorum mcu ya? Doğrumu anlamışım? Birden fazla yazma yapabilirim?

Bu kodu initalize kısmındamı çalıştıracağım?

Doğru anlamışsınız. kodu programın herhangi bir yerinde bir kez çağırırsanız. İşlemci resetlenecek ve okuma koruması devreye alınmış olacak.

initalize kısmında çağırmanızda sakınca yok çünkü if şartı sadece koruma aktif değilse sağlanıyor.
Başlık: Ynt: Arm code protection?
Gönderen: z - 25 Aralık 2013, 22:20:31
O kod calismadan koruma devreye girmiyorsa anlami yokki. O kod calisana kadar gecen sure icinde JTAG pinlerinden islemciyi ele gecirir ve okurum kodunu.
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 25 Aralık 2013, 22:21:38
Alıntı yapılan: z - 25 Aralık 2013, 22:20:31
O kod calismadan koruma devreye girmiyorsa anlami yokki. O kod calisana kadar gecen sure icinde JTAG pinlerinden islemciyi ele gecirir ve okurum kodunu.

bu işlemi yaparken üreticimisiniz kullanıcımısınız?
Başlık: Ynt: Arm code protection?
Gönderen: z - 25 Aralık 2013, 22:25:26
Kullaniciyim.

Yalniz simdi farkettim. Her reset islemi ardindan o kod calisacak sandim. Meger değilmis. Sadece 1 kez calismasi yetiyorsa okuyamam tabiki...
Başlık: Ynt: Arm code protection?
Gönderen: Ramiz - 25 Aralık 2013, 22:27:04
Alıntı yapılan: z - 25 Aralık 2013, 22:20:31
O kod calismadan koruma devreye girmiyorsa anlami yokki. O kod calisana kadar gecen sure icinde JTAG pinlerinden islemciyi ele gecirir ve okurum kodunu.

Bu devirde pcb kopyalamaya gerek yok.. Nereye yaptırıldığını öğreniyorsun. Telefonla arıyorsun. Ben o firmadan ayrıldım, yeni adresim şurası diyorsun. Adamların parasını veriyorsun ve onlarda seve seve yapıp, gönderiyorlar pcbleri.. Bu başıma önceden gelmişti. (Ben bununla uğraşacağıma, oturur, daha gelişmiş bir pcb tasarlardım)

E pcb ellere geçtiğine göre, sadece kod koruması kaldı.. Arm mcu da onuda koruyamıyorsak ne anladık biz yaptığımız işten? Adamın amacı zaten kopyalamak. Kartımı kopyaladı. Üzerine malzemeleri dizdi, dizdirdi. Benim cihazımdan bir adet satın aldı, Yazılımımı okudu, kendi ürettiği pcblere yükledi.. Ben üretmek için aylarca uğraştım, o çalmak için 15 dk uğraşmadı..

Nasıl koruyacağız ARM mcuların yazılımlarını?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 25 Aralık 2013, 22:27:35
Alıntı yapılan: z - 25 Aralık 2013, 22:25:26
Kullaniciyim.

Yalniz simdi farkettim. Her reset islemi ardindan o kod calisacak sandim. Meger değilmis. Sadece 1 kez calismasi yetiyorsa okuymama tabiki...

o zaman çok geç çünkü üretici tarafından program atıldıktan birkaç ms sonra koruma devreye girmiş olacak.

Aynen söylediğiniz gibi olacak.
Başlık: Ynt: Arm code protection?
Gönderen: Ramiz - 25 Aralık 2013, 22:32:30
Alıntı yapılan: X-Fi - 25 Aralık 2013, 22:27:35
o zaman çok geç çünkü üretici tarafından program atıldıktan birkaç ms sonra koruma devreye girmiş olacak.

Aynen söylediğiniz gibi olacak.

Mcu yu ilk kez programladım. Plug and play yaptım. Kodu ilk kez işledi. Hatta azacıkta çalıştı. Enerjiyi kestim. Bir kez daha çalıştırdım bu sefer, ilk start anındada okumaya kapalı olacak? Doğrumu anlamışım?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 25 Aralık 2013, 22:37:15
Alıntı yapılan: Ramiz - 25 Aralık 2013, 22:32:30
Mcu yu ilk kez programladım. Plug and play yaptım. Kodu ilk kez işledi. Hatta azacıkta çalıştı. Enerjiyi kestim. Bir kez daha çalıştırdım bu sefer, ilk start anındada okumaya kapalı olacak? Doğrumu anlamışım?

Hocam doğru anlamışsınız size tek tavsiyem daha çok katalog karıştırmanız olacak. Amacım hazır kod vermek değil yolu anlamanız için paylaştım.
Başlık: Ynt: Arm code protection?
Gönderen: Ramiz - 25 Aralık 2013, 22:44:18
Alıntı yapılan: X-Fi - 25 Aralık 2013, 22:37:15
Hocam doğru anlamışsınız size tek tavsiyem daha çok katalog karıştırmanız olacak. Amacım hazır kod vermek değil yolu anlamanız için paylaştım.

Merhaba, ben şuan öğrenciyim ve internetim sınırlı.. O yüzden her yere girip çıkamıyorum :) İlkbahar aylarında bir ürün tasarlamam gerekli ve şuan bilgi toplamaya çalışıyorum. Projede arm mcu kullanmak istiyorum. Stm32 ye ve pic24 serisine sıcak bakıyorum.

İşin arm kısmında stm libraryleri ile işler çok kolaylaşmış.. Ccs, mikroC gibi birşey olmuş diyebiliriz. Fakat ben halen arm cephesine avr yada pic işlemci kadar hakim değilim..

Yanıtlar için teşekkür ederim.

Ramiz
Başlık: Ynt: Arm code protection?
Gönderen: kimlenbu - 26 Aralık 2013, 13:59:32
ARM Cortex M4 çekirdekli STM32F4 serisinde 2 kademeli kod koruması var. LEVEL 2'yi aktif ettiğinizde JTAG portu kalıcı olarak devre dışı kalıyor.

Datasheetinden alıntı :

Alıntı YapLevel 0: no read protection
When the read protection level is set to Level 0 by writing 0xAA into the read protection
option byte (RDP), all read/write operations (if no write protection is set) from/to the
Flash memory or the backup SRAM are possible in all boot configurations (Flash user
boot, debug or boot from RAM).
• Level 1: read protection enabled
It is the default read protection level after option byte erase. The read protection Level
1 is activated by writing any value (except for 0xAA and 0xCC used to set Level 0 and
Level 2, respectively) into the RDP option byte. When the read protection Level 1 is set:
– No access (read, erase, program) to Flash memory or backup SRAM can be
performed while the debug feature is connected or while booting from RAM or
system memory bootloader. A bus error is generated in case of read request.
– When booting from Flash memory, accesses (read, erase, program) to Flash
memory and backup SRAM from user code are allowed.
When Level 1 is active, programming the protection option byte (RDP) to Level 0
causes the Flash memory and the backup SRAM to be mass-erased. As a result the
user code area is cleared before the read protection is removed. The mass erase only
erases the user code area. The other option bytes including write protections remain
unchanged from before the mass-erase operation. The OTP area is not affected by
mass erase and remains unchanged. Mass erase is performed only when Level 1 is
active and Level 0 requested. When the protection level is increased (0->1, 1->2, 0->2)
there is no mass erase.
• Level 2: debug/chip read protection disabled
The read protection Level 2 is activated by writing 0xCC to the RDP option byte. When
the read protection Level 2 is set:
– All protections provided by Level 1 are active.
– Booting from RAM or system memory bootloader is no more allowed.
– JTAG, SWV (single-wire viewer), ETM, and boundary scan are disabled.
– User option bytes can no longer be changed.
– When booting from Flash memory, accesses (read, erase and program) to Flash
memory and backup SRAM from user code are allowed.
Memory read protection Level 2 is an irreversible operation. When Level 2 is activated,
the level of protection cannot be decreased to Level 0 or Level 1.
Note: The JTAG port is permanently disabled when Level 2 is active (acting as a JTAG fuse). As a
consequence, boundary scan cannot be performed. STMicroelectronics is not able to
perform analysis on defective parts on which the Level 2 protection has been set.
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 26 Aralık 2013, 14:21:57
Hocam söylediğiniz özellik sadece M4'e özel değil, M3 ve M0 lardada 3 level protect bulunuyor.

(http://www.hizliresimyukle.net/u/32/65/16496532_orginal.jpg)
Başlık: Ynt: Arm code protection?
Gönderen: Burak B - 26 Aralık 2013, 20:44:10
Yerinizde olsam ne yaptığınızı bilmiyorsanız Level 2 ve üstünü aktif etmezdim. Aksi halde MCU' yu çöpe atmanız gerekebilir.
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 27 Aralık 2013, 15:42:09
Böyle bir arkadaş tanıyorum. F0 Discovery kitin işlemcisine bir türlü ulaşamıyorum. İçerisindeki program çalışıyor.
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 27 Aralık 2013, 16:16:20
Alıntı yapılan: muhittin_kaplan - 27 Aralık 2013, 15:42:09
Böyle bir arkadaş tanıyorum. F0 Discovery kitin işlemcisine bir türlü ulaşamıyorum. İçerisindeki program çalışıyor.

Hocam söylediğiniz çip arızalanmış. Yüksek voltaj sebebiyle flash adreslerinin hepsi yada birkısmı zarar görebiliyor. level2 koruması daha başka birşey system memory i temizliyor böylece usart,dfu,debug yazılımları siliniyor. Boot0 pini işlevini kaybediyor. Ancak üzerine yeni program atıp koşturabiliyorsunuz.

Bu korumanın amacı kod içerisinde yaptığınız güvenlik açıklarından kaynaklanacak kopyalamaları önlemek, MMU destekli sistemlerin güvenliğini arttırmak için koyulmuş. Örneğin kod içerisinde dış mihraçlar tarafından adres girilebilen bir jump fonksiyonunuz var. Bu fonksiyon system memory e dallanırsa kodu dahili bootloader yardımıyla okuyabilirsiniz bunu önlemek amaçıyla yapılmış. Ancak haberleşme birimleriniz kapalı döngü çalışıyorsa böyle bir güvenliğe ihtiyaç olmaz.

iyi çalışmalar.
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 27 Aralık 2013, 17:52:20
Hocam şu an yeni program felanda atamıyoruz.. hiçbir şekilde STlink le ulaşılamıyor..
Başlık: Ynt: Arm code protection?
Gönderen: z - 27 Aralık 2013, 18:47:29
JTAG/SWD pinlerini kullanmış olabilirmisin?

Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 27 Aralık 2013, 19:09:34
Hocam ne yapildigi belli degil. Option byte yada koruma ile oynadigini soyluyor.
Ben stlink e reset ile baslayarak program yukle dedim. Olmuyor.
Başlık: Ynt: Arm code protection?
Gönderen: F.T - 28 Aralık 2013, 13:56:39
 :D  bu işi çözmek çok zor.ama iyi bozmuşum hocam işin içinden çıkılamayacak gibi.   :D
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 28 Aralık 2013, 14:24:32
Usarttan dahili bootloader'ı dene, bunun için işlemcinin boot 0 pinini high'a çekmen gerekir, sonrasında usart1 üzerinden sanırım program atabilirsin.
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 28 Aralık 2013, 15:11:20
usart la ne kullanayım program olarak
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 28 Aralık 2013, 20:35:28
Alıntı yapılan: muhittin_kaplan - 28 Aralık 2013, 15:11:20
usart la ne kullanayım program olarak

Eskiden Xpde olan Hyper Terminal kullanabilirsin hocam. STM32 usart bootloader Ymodem protekollünü kullanır.
Başlık: Ynt: Arm code protection?
Gönderen: magnetron - 28 Aralık 2013, 21:04:11
ben stm32f103 için

ST 'nin "flash loader demo" programını kullanıyorum

USART  1'den program atıyorum ve read protection enable veya disable yapabiliyorum

yalnız USB-serial adaptör ile çalıştıramadım - illaki eski PC'lerdeki "legacy serial portu" istiyor

veya PCM kartlar var ya laptoplar için onu istiyor
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 28 Aralık 2013, 22:18:26
peki "kod korumasından dolayı" st link ile ulaşamadığım işlemciye ulaşıp içeriğini silip, kod korumasını felan kaldırabilir miyim ?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 28 Aralık 2013, 22:37:08
Alıntı yapılan: muhittin_kaplan - 28 Aralık 2013, 22:18:26
peki "kod korumasından dolayı" st link ile ulaşamadığım işlemciye ulaşıp içeriğini silip, kod korumasını felan kaldırabilir miyim ?

hocam st-link ile ulaşılamayan STM32 olmaz. Debug yapılamayan STM32 olur. Kod koruması varsa bağlantıdan sonra söyler kod koruması var okuyamazsın diye.
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 28 Aralık 2013, 23:32:26
Hocam ulasilamiyor. Stm32f0 disko kit.
Bir resetle basla diyor sonrasinda normal e al diyor. Bir turlu ulasamiyor. Kartin uzerindeki stlink ile baska mcu ya ulasiyorum. Ulasilamayan mcuda en son prog. Calisiyor
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 29 Aralık 2013, 13:24:08
ST 'nin "flash loader demo" programını kullanabilirsin, %100 emin olmamakla birlikte St-link veya j-link ile ulaşama probemi şöyle olabilir,
eğer jtag pinlerini kullanmak için(IO yapmak için) remap registerine yazmışsan, belki bu debuggerlar ile ulaşamıyabilirsin bu durumda dahili bootlader işi çözmesi gerekir, programda bu pinlerdeki remap'i öncelik olarak jtag yaparsan sorunun kalkabilir.   
Başlık: Ynt: Arm code protection?
Gönderen: F.T - 29 Aralık 2013, 13:31:55
 :D muhittin hocam bence kes at   ;)
Başlık: Ynt: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 29 Aralık 2013, 13:46:12
Alıntı yapılan: CLR - 29 Aralık 2013, 13:24:08
ST 'nin "flash loader demo" programını kullanabilirsin, %100 emin olmamakla birlikte St-link veya j-link ile ulaşama probemi şöyle olabilir,
eğer jtag pinlerini kullanmak için(IO yapmak için) remap registerine yazmışsan, belki bu debuggerlar ile ulaşamıyabilirsin bu durumda dahili bootlader işi çözmesi gerekir, programda bu pinlerdeki remap'i öncelik olarak jtag yaparsan sorunun kalkabilir.
konunun bununla alaksi yok
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 29 Aralık 2013, 14:29:41
Senin için alakası olmayabilir, işine yarayacak arkadaşlar için söylüyeyim, sana tavsiye ettikten sonra aklıma takıldı şimdi denedim gerçektende remap yapınca j-link stm32'yi tanıyamadı, 10-15 kez denedim, sonrasında bootloader ile remap'i geri aldım çalıştı,
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 29 Aralık 2013, 15:22:33
Alıntı yapılan: CLR - 29 Aralık 2013, 14:29:41
Senin için alakası olmayabilir, işine yarayacak arkadaşlar için söylüyeyim, sana tavsiye ettikten sonra aklıma takıldı şimdi denedim gerçektende remap yapınca j-link stm32'yi tanıyamadı, 10-15 kez denedim, sonrasında bootloader ile remap'i geri aldım çalıştı,

Yanlış bilgi.

St-link -> settings -> connect under reset seçerseniz pin tanımlaması yapsanız dahi erişim sağlar. Çünkü önce resetliyor.
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 29 Aralık 2013, 16:00:53
St-link'i bilmem, j-link'te denediğim için yazdım
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 29 Aralık 2013, 16:22:03
Alıntı yapılan: CLR - 29 Aralık 2013, 16:00:53
St-link'i bilmem, j-link'te denediğim için yazdım

Hocam bende Powarm tools kullanıyorum sorun yok...

Keil -> Debug -> Connect ->  Under Reset.
Başlık: Ynt: Arm code protection?
Gönderen: muhittin_kaplan - 29 Aralık 2013, 16:44:07
Tanimlama yapsaniz dahi resette tutar vaziyette connect dedikten sonra restten kurtarirsanda baglaniyor
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 29 Aralık 2013, 17:10:49
Denememiş olsam haklısınız ama reset before connect kısmında, hard reset, normal reset, connect under reset tümünü denemiştim zaten,

Bu durumla karşılaşan insanlarda var, Segger'in cevabı çözmemiş aşağıda linkte, scop ile incelemedim belki j-link'te bir bug vardır hard reset yapamıyordur, sadece keil değil j-flash arm içinde de işlemciyi tanımıyor.

http://forum.segger.com/index.php?page=Thread&threadID=509 (http://forum.segger.com/index.php?page=Thread&threadID=509)

Bu durumu bootloader ile çözdüm, 

isterseniz deneyin, eklediğim satır aşağıda, sadece ST lib'e göre değişmeniz gerekiyor,

AfioRegs->mapr.bits.SWJ_CFG=4;
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 29 Aralık 2013, 17:41:05
Söylediğiniz kodu yarın deneyeceğim. Reseter halledilemeyen kalıcı bir sorun olabilir karşılaştığınız.

Benim genelde karşılaştığım durum şu code protect açık iken j-link ram adreslerini okuyamadığı için erişemiyor. Ekranında kod koruması olduğu bilgisii veriyor. J-link ile çalışmak için önce st-link baglayıp korumayı kaldırıyorum tabi içindeki kod siliniyor daha sonra j-link çalışıyor.

İşlemci üzerinde kalıcı değisiklikler yaparsanız st-link gerekebilir. Sizde buna benzer bir sorun yaşadınız anladığım kadarıyla.
Başlık: Ynt: Arm code protection?
Gönderen: CLR - 29 Aralık 2013, 17:46:54
normalde kalıcı durum değil çünkü hem soft reset hemde hard reset çalışıyor, remap yapmadan tüm fonksiyonları ok, resetle dediğimde j-link resetliyor, fakat remap yapınca sanki işlemciyi resetmeden programlaya geçiyormuş gibi bir durum var.
Başlık: Ynt: Arm code protection?
Gönderen: Burak B - 31 Aralık 2013, 09:58:27
Alıntı yapılan: X-Fi - 29 Aralık 2013, 17:41:05
Söylediğiniz kodu yarın deneyeceğim. Reseter halledilemeyen kalıcı bir sorun olabilir karşılaştığınız.

Benim genelde karşılaştığım durum şu code protect açık iken j-link ram adreslerini okuyamadığı için erişemiyor. Ekranında kod koruması olduğu bilgisii veriyor. J-link ile çalışmak için önce st-link baglayıp korumayı kaldırıyorum tabi içindeki kod siliniyor daha sonra j-link çalışıyor.

İşlemci üzerinde kalıcı değisiklikler yaparsanız st-link gerekebilir. Sizde buna benzer bir sorun yaşadınız anladığım kadarıyla.


İki tool ile uğraşma Seggerin JLinkSTM32 toolu var onu kullanıp unlock edebilirsin. En son STM32F2xx ler için bir sorun vardı unlock yaparken. Onu giderdiler şu andaki DLL sürümü v4.80. Firmware derleme tarihide 25 Kasım 2013.
Başlık: Ynt: Arm code protection?
Gönderen: tekosis - 13 Mart 2014, 11:29:00
Alıntı yapılan: X-Fi - 25 Aralık 2013, 22:02:41
Stm32 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.

hocam son söylediğiniz notta geri dönüşü olmaz demişsiniz. bu hiçbir zaman okuyamayacağımız anlamına mı gelir ki benim için mesele olmaz zaten bootloader kullanıyorum. başka problemler de olabilir mi?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 13 Mart 2014, 16:21:20
Evet hiçbir yol ile okuyamaz ve debug yapamazsınız. Sadece program atılabilir. Sistem bootloaderları da silinir.
Başlık: Ynt: Arm code protection?
Gönderen: tekosis - 13 Mart 2014, 21:45:09
hocam sistem bootloaderi dediğiniz program yüklemede kullanılan bootloader mi oluyor? eğer bu şekilde ise ben cihaza ikinci defa yükleme yapabilmek için bir programlayıcı mı almam gerekir?
Başlık: Ynt: Arm code protection?
Gönderen: tekosis - 14 Mart 2014, 19:48:27
hocam bu kodu anlayamadım manıtığını biraz anlatmanız mümkün mü?
Başlık: Ynt: Arm code protection?
Gönderen: X-Fi - 18 Mart 2014, 07:51:01
Evet bootloader silinir program atmak için bir debugger almanız gerekir.

İşlemcinin bootloader ve debug işlemlerini gerşekleştirdiği program kodları 0x1FFFFxxx adresinde tutar. RPD_Level_2 aktif edilince bu flash adresleri silinir. Bu yüzden programın okunması, debug yapılması mümkün olmaz sadece SWD veya JTAG portu ile üzerine program yükleyebilirsiniz.
Başlık: Ynt: Arm code protection?
Gönderen: tekosis - 18 Mart 2014, 12:45:51
teşekkür ederim hocam.
Başlık: Ynt: Arm code protection?
Gönderen: halil82ist - 14 Şubat 2017, 16:38:43
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 .
Başlık: Ynt: Arm code protection?
Gönderen: oyhan - 04 Eylül 2017, 00:40:48
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();
.
.
.
.
}
 
Başlık: Ynt: Arm code protection?
Gönderen: yucatar - 20 Şubat 2024, 09:51:27
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)))


(https://i.ibb.co/xSVHpT5/SDCVSD.png) (https://ibb.co/xSVHpT5)