Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: robikod - 27 Ocak 2022, 09:36:21

Başlık: Flash Memory
Gönderen: robikod - 27 Ocak 2022, 09:36:21
Merhabalar,
Yazılımımda herhangi kod güncelleme datası geldiğinde bootloader adresine jump etmek istiyorum.Stm32'ye reset attığımızda başlangıç adresi olarak, 0x8000000 adresinden başlıyor. Ben bunu değiştirmek istiyorum. Değiştirmek istediğim adres ise şu 0x8005000. Bunun için flash .ld dosaysı ve Vtor offset değerlerini değiştirdim ancak işlemci her resetin sonucunda 0x8000000 adresinden başlıyor. Bu adresi değiştirebiliyor muyuz ?
Başlık: Ynt: Flash Memory
Gönderen: e-zeki - 27 Ocak 2022, 11:43:47
bootloader'i mi başlatacaksınız o adreste yoksa normal kodunuzu mu?
normal kodunuzu oradan başltacaksanız derleme adresinin de değişmesi gerekiyor diye hatırlıyorum uzun zaman önce yapmıştım (Keil için options for target->target memory areas kısmında başlangıç adresini de değiştirmeniz gerek)
Eğer bootloader'ı 0x80000000 den başlatıyorsanız aynı şekilde jump kodunuzla 0x8005000'e atlamanız gerek.
yok bootloader'ı o adrese koyuyorsanız bootloader koşarken resetlememeniz gerek çünkü işlemci her zaman 0x80000000 de kod var mı yok mu kontrol ederek gelecektir. işlemcinin kendi gömülü bootloader ayarlarını değiştirirseniz belki olabilir o konuda da benim bilgim yok.
Başlık: Ynt: Flash Memory
Gönderen: robikod - 27 Ocak 2022, 11:52:05
Alıntı yapılan: e-zeki - 27 Ocak 2022, 11:43:47bootloader'i mi başlatacaksınız o adreste yoksa normal kodunuzu mu?
normal kodunuzu oradan başltacaksanız derleme adresinin de değişmesi gerekiyor diye hatırlıyorum uzun zaman önce yapmıştım (Keil için options for target->target memory areas kısmında başlangıç adresini de değiştirmeniz gerek)
Eğer bootloader'ı 0x80000000 den başlatıyorsanız aynı şekilde jump kodunuzla 0x8005000'e atlamanız gerek.
yok bootloader'ı o adrese koyuyorsanız bootloader koşarken resetlememeniz gerek çünkü işlemci her zaman 0x80000000 de kod var mı yok mu kontrol ederek gelecektir. işlemcinin kendi gömülü bootloader ayarlarını değiştirirseniz belki olabilir o konuda da benim bilgim yok.

Cihazın resetten sonraki başladığı adresi değiştirmek istiyorum. 0x8000000 den başlamasın da mesela 0x8000500 den başlasın
Başlık: Ynt: Flash Memory
Gönderen: volkanunal - 27 Ocak 2022, 12:05:06
https://engineeringvolkan.wordpress.com/2021/05/16/stm32-uzaktan-gomulu-yazilim-guncelleme/ bu yazı dizisinden geriye doğru gitmek belki faydalı olabilir.
Başlık: Ynt: Flash Memory
Gönderen: robikod - 27 Ocak 2022, 14:35:07
Alıntı yapılan: volkanunal - 27 Ocak 2022, 12:05:06https://engineeringvolkan.wordpress.com/2021/05/16/stm32-uzaktan-gomulu-yazilim-guncelleme/ bu yazı dizisinden geriye doğru gitmek belki faydalı olabilir.

Açıkcası ben bu işlemlerin hepsini yapıyorum hali hazırda. Sormak istediğim şey STM32 nin reset adresini değiştirebiliyor muyuz, sorusuydu ancak bu sorunun cevabını araştırıp öğrendim. Malesef STm32 nin start adresini değiştiremiyoruz. Sadece jump edeceğimiz kodun, herhangi bir adreste çalıştırılabilmesini sağlayabiliyoruz.
Başlık: Ynt: Flash Memory
Gönderen: volkanunal - 27 Ocak 2022, 16:44:18
Start adresin değiştilemeyeceği konusunda ki bilgiyi nereden aldınız acaba ? Kaynak var mıdır ?
Başlık: Ynt: Flash Memory
Gönderen: z - 27 Ocak 2022, 20:14:49
Reset aninda boot pinlerinin lojik durumlarina gore boot adresi (Vektor tablo adresi) degisir. Ancak bunu kafaniza gore herhangi bir adres yapamazsiniz.

Ancak fiziksel boot adresini boot pinleriyle degistirmis olsaniz dahi o adresler gene 0x0000000'a aynalanir.
Olasi durumlar;

0x08000000
0x1FFFB000
0x1FFFF000
0x20000000

Bunlardan hangisini secerseniz secin 0x00000000 adresinde aynalanmis halini goruruz.