Pindahkan pemrograman tersemat dari Keil ke Linux

9

Saat ini saya menggunakan Keil untuk mengembangkan papan penemuan STM32. Proyek saya hampir selesai, dan saya ingin pindah ke lingkungan gedung berbasis Linux. Saya telah menggunakan alat flashing yang telah dikonfigurasikan sebelumnya dan driver STLink untuk windows untuk mem-flash board, dan saya mendapat keil untuk mengekspor file bin, yang saya berhasil flash pada mesin Linux saya menggunakan qSTLink2 . Sejauh ini bagus.

Sekarang saya terjebak pada proses memindahkan seluruh proyek. Secara khusus:

Bagaimana cara port file .uvproj saya ke makefile, sambil mengambil hal-hal seperti file startup 'startup_stm32l1xx_md.s' ke akun?

Lg102
sumber
Saya belum pernah menggunakan STM32 khususnya di bawah lingkungan build Linux GCC, tetapi Anda mungkin akan menemukan GCC membutuhkan file startup yang berbeda. Anda mungkin lebih baik menemukan proyek sederhana yang sudah berfungsi dan kemudian menambahkan kode Anda ke sana.
PeterJ
Cara yang sulit, tidak diragukan lagi.
Ignacio Vazquez-Abrams
Bisakah saya menggunakan file .o saat ini yang dibuat oleh Keil menggunakan MDK-ARM, mengabaikan kompilasi untuk satu file itu sekarang, dan menautkannya secara statis?
Lg102
Seperti yang sudah ditulis PeterJ. Ini akan menggunakan file startup yang berbeda dengan label dan semantik yang berbeda. Seharusnya tidak ada cara untuk menyimpan file startup_stm32l1xx_md.o Keil. Apakah Anda tidak memiliki sumber startup_stm32l1xx_md.s untuk itu?
pemain
Ya, tapi sepertinya berorientasi pada MDK-ARM (atau lebih tepatnya klaim header). Saya sudah menggantinya dengan yang lain . Saya tidak yakin apa perbedaan antara kepadatan menengah dan tinggi.
Lg102

Jawaban:

11

Sudah selesai. Saya pikir saya akan membagikan hasil saya sehingga orang lain dapat menggunakannya. Terima kasih atas waktu Anda, semuanya.


Saya menggunakan rantai alat ARM ini untuk membangun proyek saya, dan perpustakaan texane / stlink , yang dilengkapi dengan ./st-flashalat, untuk mem-flash biner ke STM32L1 saya. Sementara texane / stlink dilengkapi dengan GDB, saya menemukan saya bisa menyelesaikan proses pembangunan + flashing tanpa GDB.

Makefile saya akhirnya tampak seperti ini. Itu tidak terlalu cantik atau abstrak, tapi itu menyelesaikan pekerjaan.

all:
    arm-none-eabi-gcc -T stm32l1xx.ld -mthumb -mcpu=cortex-m3 -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER startup_stm32l1xx_md.s system_stm32l1xx.c main.c [ sources ] -lm --specs=nosys.specs -o Project.elf

Di mana:

  • arm-none-eabi-gcc
    Toolchain ARM
  • -T stm32l1xx.ld
    Dokumen tautan
  • -mthumb -mcpu=cortex-m3
    Katakan pada GCC ini untuk M3
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    Menentukan untuk Driver Periferal Standar
  • startup_stm32l1xx_md.s
    Dokumen startup yang berorientasi GCC.
  • system_stm32l1xx.c main.c [ sources ]
    Daftar file sumber saya
  • -lm
    Untuk Math.h( L ib M ath)
  • --specs=nosys.specs
    Jangan gunakan panggilan sistem seperti _exit.
  • -o Project.elf
    Nama keluaran
Lg102
sumber
1
Dari mana stm32l1xx.ldfile itu berasal?
mengamuk
3

Ada toolchain Gnu ARM (arm-none-eabi), dan seharusnya openOCD bekerja dengan gdb (walaupun saya belum bisa mewujudkannya di bawah Win7 - openOCD terhubung ke papan STM32F4disco OK, tetapi gdb memiliki masalah menyambung ke openOCD ).

Lakukan penggalian di sekitar sini dan Anda akan menemukan tautan ke toolchain, openOCD, dan proyek sampel yang menyertakan sumber startup.

markt
sumber