Keil uVision MDK-Lite, STM32F072B-Keşif kartı ve flash API


10

MDK-Lite Sürüm 5.23 bir STMicroelectronics STM32F072B-Disco "Discovery" kurulu ile kullanıyorum ve Discovery örnekleri tarafından sağlanan Flash örneği kullanmaya çalışıyorum.

Bu kartı ve araç zincirini diğer örnekler için kullandım ve bazı SPI ve GPIO çalışmalarını kodladım. IDE şampiyon gibi çalışıyor. Ancak, bu özel proje için sıfırlama düğmesini indirip kullanarak kodu oluşturabilir ve çalıştırabilirim. HAL_FLASHEx_Erase () rutinini kullandığımda hata ayıklayıcıyı projede kullanamıyorum. Bu rutini yürüttüğümde IDE "Hedefe erişilemiyor. Hata ayıklama oturumunu kapatma" iletişim kutusunu görüntüler.

Değeri için, bir programlama hatası olmadığını biliyorum çünkü kodu indirir ve ardından sıfırlama düğmesine basarak kodu çalıştırırsam çalışacaktır. Ben aynı hata ayıklayıcı bir TI kurulu ile kullandım ve flaş programlamak ve de flaş rutinleri yürütmek mümkün. Ben kod saklandığı yerde flash bölümünü silmiyorum eminim, bu yüzden bu değil.

Main.'de bu çizginin üzerine çıkarsam. C

if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)

sonra hata ayıklama oturumunu bırakır. Bunun yerine aynı satıra adım atar ve sonra flaş silme rutinindeki çağrıların her birine adım atarsam, o zaman çalışır ve sonunda rutinden dışarı adım atar ve kodun geri kalanında hata ayıklayabilirim.


Emin değilsiniz, ancak CMSIS-DAP'ın USB tarafı güç çevrimi yapılmış olabilir. Bu kart, harici hata ayıklama bileşenleri için oldukça karmaşık bir güç dağıtımına sahiptir. Hedefe erişilemiyor muhtemelen DAP bağlantısı (seri kablo ile) kesilmiş demektir.
Sean Houlihane

Hata ayıklayıcı olarak Yerleşik ST-LINK / V2'den mi bahsediyoruz?
Bence Kaulics

Bir kod görüntüsünü paylaşabiliyorsanız, başkası doğrulayabilir (ve donanım sorunlarını ekarte edebilir). Sadece bir M7 tahta var ...
Sean Houlihane

Bence Kaulics, stm32f072B-disko kartında yerleşik olan hata ayıklayıcı. ST-Link Hata Ayıklayıcısı ve ST-LINK / V2 olan bir Keil ULINK2 hata ayıklayıcısı değil. Ben Keil usb bağlı hata ayıklayıcı birini var ama bir şerit kablo ile tahtaya bağlanır. Karttaki mini usb ST-Link konnektörünü kullanıyorum, şerit kablo konnektörü kullanmıyorum. Kart ayrı bir güç kaynağından değil, mini-usb konektöründen güç alır.
netskink

1
Kod örneği ile ilgili. Örnek, STMicro'nun keşif repotu ile sağlanır. Projenin ST repot içindeki yolu Projects / STM32F072B-Discovery / Örnekler / FLASH / FLASH_EraseProgram'dır. Bu dizinde MDK-ARM projesi kullanıyorum. HAL_FLASHEx_Erase ()
netskink

Yanıtlar:


7

Benim tahminim, bu bir düzeyde bir güç kaynağı. Harici raylar veya güç raylarının yerleşik anahtarlaması.

Senaryoyu açıklığa kavuşturmak için, donanım sıfırlandıktan sonra hata ayıklama iyi çalışır, ancak hedefiniz bir flaş bloğunu sildiğinde hata ayıklama bağlantısı kesilir mi?

Hata ayıklama, kodun düzgün çalışmasını umursamaz - kilitleme durumunda olabilirsiniz ve hata ayıklamanın durdurulması yine de çalışmalıdır. CPU tarafında hata ayıklamayı kilitleyen tek şey, kilitlenmemiş bir AHB erişimi. Bu, sorunun STM32F7 ve yerleşik USB-SWD arayüz çipi (ayrıca bir STM32, sanırım) arasındaki SWD arayüzü ile olduğu anlamına gelir. Bu cihaz, kartı ilk kez kullandığımda kafamı karıştıran bazı yerleşik güç rayı anahtarlamasına sahip.

Flaş silme işleminin cihazın geçerli boşluğunu artıracağını belirtmek gerekir - harici PSU'nuz işe hazır mı ve bir alternatif kullanabilir misiniz?

Düzenleme: Söz konusu kodun üzerinden adım atma hata ayıklayıcı çökmesine neden olur görüşlerinizi dayanarak, tek adım değil, ben senin sorunun bu soru ile ilgili olduğunu düşünüyorum .

Adım atma, bir kesme noktası (ve durma durumu için yoklama) kullanılarak uygulanırken, donanımda tek adım desteklenir. Bu hala hata ayıklayıcının neden karıştığını açıklamıyor, ancak flaş denetleyicisi etkinken hata ayıklayıcının koda (flaştan) erişmeye çalışmasının mümkün olmasına izin veriyor.

Bu gözlemlere dayanarak , silme işleminden sonra bir kesme noktası belirlemenizi ve bu senaryoyu tetiklemekten kaçınmanızı öneririm .


Doğru, iyi çalışıyor ama bir bloğu sildiğimde hata ayıklayıcıya usb bağlantısı düşüyor. Güçsüz bir usb hub kullanıyordum, bu yüzden bu mantıklı görünüyordu; ancak, doğrudan bilgisayara bağlanmak ve farklı bir hub kullanmak aynı sonucu verir.
netskink

Flaş erişimini yaparken kod çalıştırıyorsanız, AHB'yi bir süreliğine kilitlersiniz. Bu senaryoda adım atmanın dağınık olabileceğini düşünüyorum. stackoverflow.com/questions/3445598 daha fazlası var.
Sean Houlihane
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.