Chuyển chương trình nhúng từ Keil sang Linux


9

Tôi hiện đang sử dụng Keil để phát triển cho một bảng khám phá STM32. Dự án của tôi sắp hoàn thành và tôi muốn chuyển sang môi trường xây dựng dựa trên Linux. Tôi đã sử dụng công cụ flash được cấu hình sẵn và trình điều khiển STLink cho các cửa sổ để flash bảng và tôi đã nhận được keil để xuất một tệp bin, mà tôi đã quản lý để flash trên máy Linux của mình bằng qSTLink2 . Càng xa càng tốt.

Bây giờ tôi bị mắc kẹt trong việc di chuyển quá trình xây dựng toàn bộ dự án. Đặc biệt:

Làm cách nào để chuyển .uvproj của tôi sang tệp Makefile, trong khi lấy những thứ như tệp khởi động 'startup_stm32l1xx_md.s' vào tài khoản?


Tôi đã không sử dụng trong STM32 cụ thể trong môi trường xây dựng GCC của Linux, nhưng có lẽ bạn sẽ thấy GCC cần một tệp khởi động khác. Bạn có thể là tốt nhất để tìm một dự án đơn giản đã làm việc và sau đó thêm mã của bạn vào đó.
PeterJ

Cách khó, không nghi ngờ gì.
Ignacio Vazquez-Abrams

Tôi có thể sử dụng tệp .o hiện tại mà Keil đã tạo bằng MDK-ARM không, bỏ qua việc biên dịch cho một tệp đó ngay bây giờ và liên kết nó một cách tĩnh?
Lg102

Như PeterJ đã viết. Nó sẽ sử dụng một tệp khởi động khác nhau với các nhãn khác nhau và ngữ nghĩa khác nhau. Không có cách nào để giữ tệp Keil startup_stm32l1xx_md.o. Bạn không có nguồn startup_stm32l1xx_md.s cho nó?
harper

Tôi làm, nhưng có vẻ như được định hướng tại MDK-ARM (hoặc như vậy là yêu cầu tiêu đề). Tôi đã thay thế nó bằng một cái khác . Mặc dù vậy, tôi không chắc sự khác biệt giữa mật độ trung bình và mật độ cao đòi hỏi gì.
Lg102

Câu trả lời:


11

Xong rồi Tôi hình dung tôi sẽ chia sẻ kết quả của mình để người khác có thể sử dụng nó. Cảm ơn thời gian của bạn, tất cả mọi người.


Tôi đã sử dụng chuỗi công cụ ARM này để xây dựng dự án của mình và thư viện texane / stlink , đi kèm với ./st-flashcông cụ này, để flash nhị phân vào STM32L1 của tôi. Trong khi texane / stlink đi kèm với GDB, tôi thấy tôi có thể thực hiện quá trình xây dựng + flash mà không cần nó.

Makefile của tôi cuối cùng trông như thế này. Nó không đẹp lắm hay trừu tượng, nhưng nó hoàn thành công việc.

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

Trong đó:

  • arm-none-eabi-gcc
    Chuỗi công cụ ARM
  • -T stm32l1xx.ld
    Tài liệu liên kết
  • -mthumb -mcpu=cortex-m3
    Nói với GCC đây là cho một chiếc M3
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    Xác định cho trình điều khiển ngoại vi tiêu chuẩn
  • startup_stm32l1xx_md.s
    Tài liệu khởi nghiệp định hướng GCC.
  • system_stm32l1xx.c main.c [ sources ]
    Danh sách các tập tin nguồn của tôi
  • -lm
    Dành cho Math.h( L ib M ath)
  • --specs=nosys.specs
    Đừng sử dụng các cuộc gọi sytems như thế nào _exit.
  • -o Project.elf
    Tên đầu ra

1
Nơi nào stm32l1xx.ldtập tin đến từ đâu?
cơn thịnh nộ

3

Có một chuỗi công cụ Gnu ARM (arm-none-eabi) và được cho là openOCD hoạt động với gdb (mặc dù tôi không thể làm điều đó xảy ra trong Win7 - openOCD kết nối với bảng STM32F4disco OK, nhưng gdb có vấn đề khi kết nối với openOCD ).

Thực hiện một số hoạt động đào xung quanh đây và bạn sẽ tìm thấy các liên kết đến chuỗi công cụ, openOCD và các dự án mẫu bao gồm nguồn khởi động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.