STM32F103XXX Flash programlama - Protection

Başlatan z, 26 Mart 2014, 14:27:02

z

Inceleyeyim.

Peki burada adi gecen readout protection ne anlama geliyor? Level 0,1,2 ile alakasi varmi?

Madem boyle kolayca koruma kaldirilabiliyor o zaman ne amacla kullaniliyor?

PM0042 sayfa 23 de oylesine deginilmis FLASH_OBR registerinde  4,3,2 bitleri ne anlama geliyor? 
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

#16
4. bit st-by moda girdiğinde watch dog timer tarafından reset atılabilir aktif eder.
3. bit stop moda girildiğinde watch dog timer tarafından reset atılabilir aktif eder.
2. bit reset sonrasında siz kurulumu yapmadan önce watch dog timer ı default ayarlarında aktif eder.*

* Sanıyorum 2 sn idi. program koşmaya başladıktan 2 saniye içerisinde IWDT'yi ya kendi donanımınıza göre initalize edin yada reload yapın.

Hocam korumayı kaldırmak kolay St-link/target/CTRL+B.

Daha öncede söyledik level-2 kaldırılamaz level-1 kaldırılsa bile kod silineceği için çalınamaz.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

ST-Link-Utility i ilk kez kullaniyorum. Target menude option bytes seceneginde BOR level diye bir secenek var.

Bu ne anlama geliyor?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

#18
Islemcinin dusuk voltaj reset korumasi hocam brown out reset cip klasmanina gore voltaj seviyeleri degisebilir. ornegin level-1 e alirsaniz AVdd 1.8 voltun altina dustugunde reset atar bunu kurarken suna dikkat etmemiz gerekir system_stm32fxx dosyasinda core voltajinin altinda secmemeliyiz cunku core regulatoru her zaman calismasi gerekiyor.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

STM32F1 ailesinde Level 0-1-2 koruma yok galiba.

ST-Link-Utility de Read Out Protection penceresinde sadece enable ve disable seçeneklleri var.

Zaten helpde de  STM32F0, F2,F3,F4 ve L1 de Level 0,1,2 olduğundan bahsedilmiş.

Bu durumda STM32F1 serisindeki korumanın adı nedir level kaça denk düşüyor?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

Bilemiyorum hocam ayrıntılı araştırmak gerekir. Bu options byte ile ilgili bilgiler her yerden çıkabiliyor. Bende STM32L kullanıyorum F serisi hakkında tecrübem hiç yok diyebilirim.

http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

magnetron

ben ST' nin "flash loader demo " programıyla USART 1 ile

F103 'ün içine kod atıyorum

eğer bu programla read out protection enable edersem

tekrar kod atmak veya içinden çekmek istediğimde

bu işlemci read out protected diye mesaj veriyor ve korumayı kaldırmadan hiçbir işlem yaptırmıyor

korumayı kaldırınca da içindeki kodu siliyor

z

#22
STM32F10x serisinde protection ayarlama islerini cipin icindeki koda yaptirmak istiyorum.

Yalniz bu sikintili bir islem. Kod oldu olmadi olmadiysa sil bir daha dene mantigiyla program yazmaya korkuyorum.

Gerci STM32F1 serisinde sanki level 2 koruma yok gibi. Yani cipi cope atma durumumuz sanirim yok.

Gene de emin degilim.

Kod ile korumalari aktif etmek icin ornek programiniz varmi?

mesaj birleştirme:: 31 Mart 2014, 23:30:23

AN4246 Uygulama notu STM32L1 icinmis.

STM32F1 icin benzer bir dokuman ariyorum. Belki de yoktur.

Varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#23
PM0075 dokumanında 20.sayfada Table 8. option byte organization da

0x1FFF F800
0x1FFF F804
0x1FFF F808
0x1FFF F80C

adreslerinde option byte  değerlerinin saklandığından bahsedilmiş.

Benim işlemcimde bu adreslerde sırsıyla aşağıdaki değerler var.

0x00FF 5AA5
0x00FF 00FF
0x00FF 00FF
0x00FF 00FF

Öte yandan FLASH_OBR adında bir register var. Bu registerde 0x03FF FFFC değeri okuyorum.

Şimdi flashdaki bu 4 adresdeki veriler ne? FLASH_OBR registerinden okuduğum değer ne?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

#24
FLASH_OBR registerının default degerini okumuşsunuz şunlar seçili;

ST-BY mod reset özelliği->Açık
STOP mod reset özelliği -> Açık
Software WDT kontrolü -> Açık
Read protect  ->  Kapalı
Options byte error ->  Yok

Okudugunuz diğer byte lar options byte'ın block korumasını seçen registerlar hocam belirli block alanlarını korumaya almanızı sağlıyorlar.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

#25
Bugünlerde iyice aptallaştım. Dokümanda yazmış zaten.

0x1FFF F800 da 0x00FF5AA5 yazıyordu.

1) 23 ... 16 bitler FF   
2) 7..0 bitler A5 

0x1FFF F804 da 0x00FF 00FF yazıyordu.

3) 23 ... 16 bitler FF   
4) 7..0 bitler FF

0x1FFF F808 da 0x00FF 00FF yazıyordu.

5) 23 ... 16 bitler FF   
6) 7..0 bitler FF

Şimdi

1) deki 0xFF değerini   9...2 bitlerine
2) deki 0xA5 değeri (0xA5 olduğu için 0) (0xA5 olmasaydı 1 olarak) 1 bitine
3) deki 0xFF değerini 25...18 bitlerine
4) deki 0xFF değerini 17...10 bitlerine

31...0 bitleri bu kurala göre dizelim.

000000 - 11111111 -  11111111 -  11111111 - 00 

0000 0011 1111 1111 1111 1111 1111 1100  = 0x03FF FFFC

Bu değeri de hatırlarsak FLASH_OBR değerinde okumuştum.

Bu durumda option registerden okunan değerin nasıl oluşturulacağı belli oldu.

Artık ayrı bir toola gerek kalmadan işlemciye kendi kendini programlatıp korumayı devreye alamamız için neden kalmadı.





Bana e^st de diyebilirsiniz.   www.cncdesigner.com