Linux'ta STM32 keşfi için nasıl geliştiririm? [kapalı]


26

Bir STM32 keşif kartım var ve onu Linux'ta programlamak istiyorum.

Bunu yapmanın en kolay yolu nedir?


Codesourcery'i LinuxhUbuntu'ya yükledim ve biraz üst üste koydum: PATH tamam, ancak program dasboard veya yazılım merkezinde görünmüyor. Belki bir şekilde değiştirebileceğim Ubuntu'dur, ama nasıl olduğunu bilmiyorum. Bir fikriniz varsa, lütfen yazın. Teşekkür ederim. Tom
Tom Rert

1
@ TomRitzmann PeterJ haklı, lütfen soru sormak için cevap kullanmayın. Dahası, burada yazılım sorunları konu dışı, SuperUser doğru yer.
clabacchio

Yanıtlar:


12

STM32 Keşif kartını (veya bir ST-Link programcısı kullanarak herhangi bir STM32'yi) programlamanın ve hata ayıklamanın kolay bir yolu 'stlink' projesini https://github.com/texane/stlink kullanmaktır (ancak OpenOCD de popüler görünüyor)

ST Nucleo board'ları ayrıca bir USB flaş aygıtı olarak da görünür, bu yüzden gerek yok stlink- dosyayı kopyalayın.

Linux'ta STM32 keşfi için nasıl geliştirileceği hakkında http://gpio.kaltpost.de/?page_id=131 ve http://torrentula.to.funpic.de/2012/03/22/ gibi bazı iyi sayfalar var ayarlama-stm32f4-arm-geliştirme-alet zinciri / ve http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

Ancak son bağlantıyı en yararlı buldum. ST'nin STM32 projelerini olduğu gibi yapmayı gösterir - Tek değişiklik mükemmel bir çözüm gibi görünen Makefile'ını eklemektir.

Ubuntu'nun son sürümlerinde, bir ARM derleyicisi içeren yükleyebileceğiniz bir paket var:

sudo apt-get install gcc-arm-none-eabi

İşlemcilerin hepsinin biraz farklı olduğunu unutmayın. STM32F0..4'ün hepsinin farklı derleyici bayraklarına ihtiyacı olacak ve linker betiği her biri için biraz farklı olacaktır (gerçekte sadece RAM ve Flash boyutlarının değişmesine rağmen).

Düzenleme: çok hızlı bir şekilde başlamak istiyorsanız, http://www.espruino.com adresine de bakabilirsiniz . STM32 üzerinde çalışan bir JavaScript tercümanıdır, bu yüzden 'stlink' kurulduktan sonra panoya yanıp sönebilir, o siteden bir görüntü indirebilir, onu çalıştırabilir ve ardından bir terminal uygulamasına bağlanabilirsiniz. programlamaya başla.


OpenOCD tarafından desteklenen STM32x Keşif tahtalarının bir listesi: github.com/openrisc/openOCD/tree/master/tcl/board (tarayıcınızı kullanarak "bulma" için arama yapın)
rbaleksandar

8

Bir GUI kullanmak yerine metin düzenleyicileri ve Makefiles hakkında daha fazlaysanız, şunları yapabilirsiniz:

  • Kol-none-eabi-gcc sağlayan bir alet zinciri takın. Archlinux'da topluluğun / kol-yok-eabi-binutils, kol-yok-eabi-gcc ve kol-yok-eabi-newlib'e (ve hata ayıklamak isterseniz kol-yok-eabi-gdb'ye) ihtiyacınız olacak. repo veya https://launchpad.net/gcc-arm-embedded (Hangi Archlinux 'AUR'da gcc-arm-none-eabi-bin olarak bulunur).
  • Donanıma erişmek için hangi kitaplığı kullanmak isteyip istemediğinize karar verin. Başımın üstünden üç ortak seçenek var:
    1. Yok. Her şeyi sıfırdan yazıyorsun. Yeni başlayanlar için tavsiye edilmez.
    2. STM32Cube : ST'nin kendisi tarafından sağlanan AC lib.
    3. Libopencm3 : Farklı tedarikçiler tarafından çok sayıda korteks-m çekirdek destekleyen açık kaynaklı bir lib.
    4. STM32PLUS : Bir C ++ lib. Ancak, daha fazla söyleyemem çünkü test etmedim.
  • İlk projenizi oluşturun veya kopyalayın.
    1. Bir lib olmadan, kendi makefile, linker betiğini, başlangıç ​​kodunu yaz ve basit bir makefile çalıştır. İyi şanslar ;)
    2. STM32Cube ile: İndir ve yükleyin STM32CubeMX . Bir kez unzipped * .exe dosyası aslında sadece bir java dosyasıdır ve "java-jar filename.exe" programını kullanarak çalıştırabilirsiniz. Kurulum sudo gerektiriyor. Tamamlandığında, bir proje oluşturun ve "Truestudio" kodunu oluşturun. Bu size bir linker betiği, başlangıç ​​kodu, bazı önemsiz ana işlevler (ve doğru hatırlıyorsam makefile) ile bir başlangıç ​​noktası vermelidir. Aslında, STM32Cube lib'i kullanmasanız bile, STM32CubeMX, saat ağacının değerlerini hesaplamak ve çipi düşündüğünüz şekilde yapılandırabiliyorsanız doğrulamak için mükemmeldir.
    3. Libopencm3 ile: libopencm3 örneklerini alın, panonuzla eşleşen bir örnek bulun ve bunu başlangıç ​​noktası olarak kullanın. Örnekler çalışmaya hazır olmalıdır. Sadece "make" yazın. O zaman bu örneği kendi gelişiminiz için bir başlangıç ​​noktası olarak kullanın.
    4. STM32Plus ile: Bilmiyorum. Üzgünüm.
  • Projenizi tahtaya taşıyın. Ya kullanın

    1. Seri bootloader: stm32flash harika çalışıyor.
    2. Hata ayıklama bağlantı noktası: Kartta sağlanan hata ayıklama adaptörüyle konuşmak için openocd kullanabilirsiniz . Openocd harika, ancak dokümantasyon her zaman en iyisi değil. Şüphe durumunda, openocd irc kanalına katılın. Oradaki insanlar gerçekten çok hoş.
  • Bir metin editöründe kodlayın ve komut satırı araçlarını kullanın. Bu eğitimde pek çok ipucu verilecek.

Keyfini çıkarın


5

Eclipse , GCC ve OpenOCD bir alet zinciridir . Bu tarafından önerilir EMCU-IT ve başka bilgiler de burada . Bu sayfalar ayrıca FreeRTOS.org gibi bir RTOS kullanmanızı da tavsiye eder , ancak bu size bağlıdır.

Linux'taki STM32 örneklerini derlemede yardım için buraya gidin . Bu bağlantı, çağrılabilecek örnekler için bir makefile işaret eder.

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

Birkaç küçük kod düzeltmesi de belgelenmiştir ancak projenin çoğu birlikte çalışmalıdır.

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
Teşekkürler! Bu bağlantıları daha önce görmemiştim. Farklı keşif panolarının çok farklı yapı bayrakları olmasına rağmen, bir yerlerde daha kesin bir rehber olmadığına şaşırdım.
Gordon Williams

Evet, ST çok ucuz bir tahta yaptı ve onları binlerce verdi, ve STM32'nin kendisi de F4'e kadar harika bir çip, ama onları programlamak popoda çok büyük bir acı. Sürücüleri inanılmaz derecede zayıf bir şekilde belgelenmiştir ve iyi adlandırılmamıştır ve birlikte ücretsiz olarak iyi oynayan bir IDE ve takım zinciri bulmak çok kolay değildir.
hak8 veya

1

Https://github.com/JorgeAparicio/bareCortexM ile başarılı oldum (ayrıca bağlantılı blog yazılarına bakın). Kodumda hata ayıklama ifadeleri eklemek veya çipin içinde neler olup bittiğini tahmin etmek yerine kodda tek bir adım atabilir veya cihaz hafızasına göz atabilirim.

BareCortexM projesi, Cortex M serisi ile, özellikle STM32 ile bir işletim sistemi olmadan C ++ ile geliştirme için bir Eclipse şablonudur. Openocd, gcc kullanmak üzere yapılandırılmıştır ve bazı keşif kartlarını içeren birkaç hedefe flaş ve hata ayıklamak için komut dosyaları vardır. Talimatları izleyerek ve önerilen Eclipse eklentilerini yükleyerek Ubuntu'da STM32VLDISCOVERY cihazımı kullanabildim.

Önerildiği gibi eclipse şablonunu, aynı yazarın STM32 donanımı için libstm32pp C ++ şablon kütüphanesiyle birleştirdim. libstm32pp CMSIS için şaşırtıcı derecede tamamen değiştirilmesi ve benzeri şeyler söylüyorlar sağlayan bir programlama modeli ile sık sık eleştirilen STM32 sürücülerini sağlar PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)ve PINB::setLow()ya PINB::setHigh()dolayı C ++ şablonlara tüm çoğunlukla derlenmiş satır içi. Kurulum çok güzel.


Artık bakımsız bareCortexM'yi önermiyorum; En stm32plus kontrol andybrown.me.uk/wk
joeforker

Bu tür aygıt sürücülerinde sorun, verimsiz olmalarıdır. CPU çevrimlerini boşa harcamayın uygun yüksek hızlı aygıt sürücüleri için altında bir rtos gerekir, böylece uygun zamanlama yapabilirsiniz.
Martin,

0

Belki birisi için faydalı olur: kısa makalem (rusça) ve basit bir proje . Hepsi linux ve tutulması gibi gereksiz şeyler olmadan.

ST internet sitesinden makefile adlı kütüphaneler alınmıştır - internetteki birçok GPL örneğinden.


0

İşte Linux veya başka bir işletim sistemi altındaki STM32F0 Discovery anakartını kullanarak hızlı başlangıç ​​için küçük ama yenilikçi bir şablon projesi:

https://github.com/dobromyslov/stm32f0-chibios-template

Projenin ücretsiz ve açık kaynaklı bir gerçek zamanlı işletim sistemi olan ChibiOS'u kullandığına dikkat edin, bu nedenle sıfırdan tam bir kemik uygulaması değildir.


0

Her zamanki linux dev araçlarının yanında vim ve arm-none-eabi-gcc kullanıyorum. Linux bana göre gömülü işler için üstün bir dev ortam. Hata ayıklama için stlink ve arm-none-eabi-gdb kullanıyorum.


0

Platformio düşünün . Komut satırı ile tamamen rahatsanız, platformio'nun geliştirme sürecini oldukça kolaylaştırdığını göreceksiniz. pio initBir proje oluşturmak için kullanılabilir. pio runderlemek için alet zincirini kullanır. pio run --target uploadkodu cihaza gönderir. Platformio, takım zinciri bileşenlerini, kütüphaneleri vb. Gerekliyse indirmeye özen gösterir.

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.