Bagaimana saya mengembangkan untuk penemuan STM32 di Linux? [Tutup]

26

Saya memiliki papan penemuan STM32 dan ingin dapat memprogramnya di Linux.

Apa cara termudah untuk melakukan ini?

Gordon Williams
sumber
Saya menginstal Codesourcery di LinuxhUbuntu dan sedikit ditumpuk: PATH baik-baik saja tetapi program tidak muncul di dasboard atau pusat perangkat lunak. Mungkin itu Ubuntu saya akan berubah entah bagaimana tetapi tidak tahu caranya. Jika Anda punya ide, silakan tulis. Terima kasih. Tom
Tom Rert
1
@ TomRitzmann PeterJ benar, tolong jangan gunakan jawaban untuk mengajukan pertanyaan. Selain itu, masalah perangkat lunak di luar topik di sini, SuperUser adalah tempat yang tepat.
clabacchio

Jawaban:

12

Cara mudah untuk memprogram dan men-debug papan STM32 Discovery (atau STM32 menggunakan programmer ST-Link) adalah dengan menggunakan proyek 'stlink' https://github.com/texane/stlink (namun OpenOCD juga tampaknya populer)

ST Nucleo board juga muncul sebagai perangkat flash USB, jadi bahkan tidak perlu stlink- cukup salin file ke sana.

Ada beberapa halaman bagus tentang cara mengembangkan untuk penemuan STM32 di Linux, seperti http://gpio.kaltpost.de/?page_id=131 dan http://torrentula.to.funpic.de/2012/03/22/ pengaturan-stm32f4-arm-development-toolchain / dan http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

Namun saya menemukan tautan terakhir yang paling berguna. Ini menunjukkan bagaimana membangun proyek STM32 ST apa adanya - Satu-satunya perubahan adalah menambahkan Makefile-nya, yang sepertinya solusi sempurna.

Pada versi terbaru dari Ubuntu, ada paket yang dapat Anda instal yang berisi kompiler ARM:

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

Perhatikan bahwa prosesor semuanya sedikit berbeda. STM32F0..4 semuanya akan memerlukan flag compiler yang berbeda, dan skrip linker akan sedikit berbeda untuk masing-masing (walaupun hanya karena perubahan RAM dan ukuran Flash).

Sunting: jika Anda ingin memulai dengan sangat cepat, Anda juga dapat melihat http://www.espruino.com . Ini adalah penerjemah JavaScript yang berjalan pada STM32 itu sendiri, jadi setelah Anda memasang 'stlink' sehingga Anda dapat mem-flash ke papan, Anda dapat mengunduh gambar dari situs itu, mem-flash-nya, dan kemudian terhubung dengan aplikasi terminal dan mulai pemrograman.

Gordon Williams
sumber
Berikut adalah daftar papan Penemuan STM32x yang didukung oleh OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (cari "penemuan" menggunakan peramban Anda)
rbaleksandar
8

Jika Anda lebih menyukai editor teks dan Makefiles daripada menggunakan GUI, Anda bisa melakukan:

  • Instal toolchain yang menyediakan arm-none-eabi-gcc. Di Archlinux, Anda memerlukan komunitas / arm-none-eabi-binutils, arm-none-eabi-gcc dan arm-none-eabi-newlib (dan arm-none-eabi-gdb jika Anda ingin men-debug) semua dari komunitas repo, atau https://launchpad.net/gcc-arm-embedded (Yang dapat ditemukan di Archlinux 'AUR sebagai gcc-arm-none-eabi-bin).
  • Putuskan, apakah dan perpustakaan apa yang ingin Anda gunakan untuk mengakses perangkat keras. Dari atas kepala saya, ada tiga opsi umum:
    1. Tidak ada Anda menulis semuanya dari awal. Tidak direkomendasikan untuk pemula.
    2. STM32Cube : AC lib disediakan oleh ST sendiri.
    3. Libopencm3 : Lib sumber terbuka mendukung cukup banyak inti korteks-m oleh vendor yang berbeda.
    4. STM32PLUS : A C ++ lib. Namun, saya tidak bisa mengatakan lebih banyak tentang itu karena saya belum mengujinya.
  • Buat atau salin proyek pertama Anda.
    1. Tanpa lib, tulis makefile Anda sendiri, skrip linker, kode startup dan jalankan makefile sederhana. Semoga berhasil ;)
    2. Dengan STM32Cube: Unduh dan instal STM32CubeMX . Setelah membuka ritsleting file * .exe sebenarnya hanya file java dan Anda dapat menjalankannya menggunakan "java -jar filename.exe". Instalasi membutuhkan sudo. Setelah selesai, buat proyek dan hasilkan kode untuk "Truestudio". Itu akan memberi Anda titik awal dengan skrip linker, kode startup, beberapa fungsi utama yang sepele (dan makefile jika saya ingat dengan benar). Sebenarnya, bahkan jika Anda tidak menggunakan lib STM32Cube, STM32CubeMX sangat bagus untuk menghitung nilai-nilai untuk pohon jam dan memvalidasi jika Anda dapat mengkonfigurasi chip seperti yang Anda pikirkan.
    3. Dengan libopencm3: Dapatkan contoh libopencm3 , temukan contoh yang cocok dengan papan Anda dan gunakan ini sebagai titik awal. Contoh-contoh harus siap dijalankan. Cukup ketik "make". Kemudian gunakan contoh itu sebagai titik awal untuk pengembangan Anda sendiri.
    4. Dengan STM32Plus: Saya tidak tahu. Maaf.
  • Bawa proyek Anda ke dewan. Baik digunakan

    1. Bootloader serial: stm32flash berfungsi dengan baik.
    2. Port debug: Anda dapat menggunakan openocd untuk berbicara dengan adaptor debugging yang disediakan di papan tulis. Openocd bagus, tetapi dokumentasi tidak selalu yang terbaik. Jika ragu, bergabunglah dengan saluran irc openocd. Orang-orang di sana sangat baik.
  • Kode dalam editor teks dan gunakan alat baris perintah. Tutorial ini akan memberikan banyak tips.

Nikmati

mox
sumber
5

Eclipse , GCC , dan OpenOCD adalah satu toolchain. Ini direkomendasikan oleh EMCU-IT dan ada informasi tambahan di sini . Halaman-halaman itu juga merekomendasikan penggunaan RTOS seperti FreeRTOS.org , tetapi itu terserah Anda.

Dan untuk bantuan dengan mengkompilasi contoh STM32 di Linux buka di sini . Tautan itu menunjuk ke file makefile untuk contoh-contoh yang bisa dipanggil

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

Beberapa perbaikan kode minor juga didokumentasikan, tetapi sebagian besar proyek harus bekerja dengan

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
tertanam.kyle
sumber
1
Terima kasih! Saya belum pernah melihat tautan itu sebelumnya. Saya kagum tidak ada panduan yang lebih pasti di suatu tempat karena papan penemuan yang berbeda memiliki bendera yang berbeda.
Gordon Williams
Ya, ST membuat papan yang sangat murah dan memberikannya, ribuan dari mereka, dan STM32 itu sendiri adalah chip yang luar biasa, sampai F4, tetapi memprogramnya sangat menyebalkan. Driver mereka sangat tidak terdokumentasi dengan baik, dan tidak disebutkan namanya dengan baik, dan menemukan IDE dan rantai alat yang bekerja bersama secara gratis tidak terlalu mudah.
hak8 atau
1

Saya telah sukses dengan https://github.com/JorgeAparicio/bareCortexM (lihat juga posting blog yang terhubung). Saya yakin bahwa saya dapat melakukan langkah-tunggal melalui kode atau menelusuri memori perangkat daripada memasukkan pernyataan debugging dalam kode saya atau menebak apa yang terjadi di dalam chip.

Proyek bareCortexM adalah template Eclipse untuk dikembangkan dengan seri Cortex M, khususnya STM32, dalam C ++ tanpa OS. Ini dikonfigurasi untuk menggunakan openocd, gcc, dan memiliki skrip untuk flash dan debug ke beberapa target termasuk beberapa papan penemuan. Dengan mengikuti petunjuk dan menginstal plugin Eclipse yang direkomendasikan, saya dapat menggunakan STM32VLDISCOVERY saya di Ubuntu.

Seperti yang disarankan, saya telah menggabungkan templat gerhana dengan pustaka templat libstm32pp C ++ penulis yang sama untuk perangkat keras STM32. libstm32pp menyediakan pengganti yang sangat lengkap untuk CMSIS dan driver STM32 yang sering dikritik dengan model pemrograman yang memungkinkan Anda mengatakan hal-hal seperti PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)dan PINB::setLow()atau PINB::setHigh()semua sebagian besar dikompilasi secara inline karena templat C ++. Setupnya sangat bagus.

joeforker
sumber
Saya tidak lagi merekomendasikan bareCortexM yang tidak dirawat; lihat stm32plus di andybrown.me.uk/wk
joeforker
Masalah dengan driver perangkat tersebut adalah bahwa mereka tidak efisien. Untuk driver perangkat berkecepatan tinggi yang tepat yang tidak membuang siklus cpu Anda memerlukan rtos di bawahnya sehingga Anda dapat melakukan penjadwalan yang tepat.
Martin
0

Mungkin itu akan berguna bagi seseorang: artikel pendek saya (tentang bahasa Rusia) dan proyek sederhana . Semua ada di linux dan tanpa hal-hal yang tidak perlu seperti gerhana.

Perpustakaan diambil dari situs web ST, makefile - dari salah satu dari banyak contoh GPL di internet.

Eddy_Em
sumber
0

Berikut ini adalah proyek template yang kecil namun inovatif untuk mulai cepat menggunakan STM32F0 Discovery board di Linux atau OS lainnya:

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

Perhatikan bahwa proyek ini menggunakan ChibiOS - sistem operasi waktu nyata sumber bebas dan terbuka sehingga bukan implementasi yang sederhana dari awal.

Viacheslav Dobromyslov
sumber
0

Saya menggunakan vim dan arm-none-eabi-gcc bersama dengan semua perangkat dev linux yang biasa. Linux menurut pendapat saya lingkungan pengembang yang unggul untuk pekerjaan tertanam sejauh ini. Untuk debugging saya menggunakan stlink dan arm-none-eabi-gdb.

Martin
sumber
0

Pertimbangkan platformio . Jika Anda merasa nyaman dengan command-line, Anda akan menemukan bahwa platformio memudahkan proses pengembangan. pio initdapat digunakan untuk mengatur proyek. pio runmemanfaatkan toolchain untuk dikompilasi. pio run --target uploadmengirim kode ke perangkat. Platformio menangani pengunduhan komponen rantai alat, pustaka, dll. Sesuai kebutuhan.

dat
sumber