Làm cách nào để phát triển STM32 trên Linux? [đóng cửa]


26

Tôi có một bảng khám phá STM32 và muốn có thể lập trình nó trên Linux.

cách dễ nhất để làm điều này là gì?


Tôi đã cài đặt Codourcery trên LinuxhUbfox và một chút được xếp chồng lên nhau: PATH vẫn ổn nhưng chương trình không xuất hiện trên dasboard hoặc trung tâm phần mềm. Có thể đó là Ubuntu tôi sẽ thay đổi bằng cách nào đó nhưng không biết làm thế nào. Nếu bạn có một ý tưởng, xin vui lòng viết. Cảm ơn bạn. Tom
Tom Rert

1
@TomRitzmann PeterJ đã đúng, vui lòng không sử dụng câu trả lời để đặt câu hỏi. Hơn nữa, các vấn đề phần mềm không đúng chủ đề ở đây, SuperUser là nơi thích hợp.
clabacchio

Câu trả lời:


12

Một cách dễ dàng để lập trình và gỡ lỗi bảng STM32 Discovery (hoặc bất kỳ STM32 nào sử dụng trình lập trình ST-Link) là sử dụng dự án 'stlink' https://github.com/texane/stlink (tuy nhiên OpenOCD cũng có vẻ phổ biến)

Bảng ST Nucleo cũng xuất hiện dưới dạng thiết bị flash USB, do đó, thậm chí không cần stlink- chỉ cần sao chép tệp qua chúng.

Có một số trang hay về cách phát triển để phát hiện STM32 trên Linux, chẳng hạn như http://gpio.kaltpost.de/?page_id=131http://torrentula.to.funpic.de/2012/03/22/ thiết lập-up-the-stm32f4-arm-Development-toolchain /http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

Tuy nhiên tôi tìm thấy liên kết cuối cùng hữu ích nhất. Nó cho thấy cách xây dựng các dự án STM32 của ST như hiện tại - Thay đổi duy nhất là thêm Makefile của anh ấy, có vẻ như là một giải pháp hoàn hảo.

Trên các phiên bản gần đây của Ubuntu, có một gói bạn có thể cài đặt chứa trình biên dịch ARM:

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

Lưu ý rằng tất cả các bộ xử lý là một chút khác nhau. STM32F0..4 tất cả sẽ cần các cờ trình biên dịch khác nhau và tập lệnh liên kết sẽ hơi khác nhau cho mỗi (mặc dù chỉ thực sự do kích thước RAM và Flash thay đổi).

Chỉnh sửa: nếu bạn muốn bắt đầu thực sự nhanh chóng, bạn cũng có thể xem tại http://www.espruino.com . Đó là trình thông dịch JavaScript chạy trên chính STM32, vì vậy khi bạn đã cài đặt 'stlink' để bạn có thể flash vào bảng, bạn có thể tải xuống một hình ảnh từ trang web đó, flash nó và sau đó kết nối với một ứng dụng đầu cuối và bắt đầu lập trình.


Dưới đây là danh sách các bảng Khám phá STM32x được hỗ trợ bởi OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (tìm kiếm "khám phá" bằng trình duyệt của bạn)
rbaleksandar 15/08/2015

8

Nếu bạn thích dùng trình soạn thảo văn bản và Makefiles thay vì sử dụng GUI, bạn có thể làm:

  • Cài đặt một chuỗi công cụ cung cấp arm-none-eabi-gcc. Trên Archlinux, bạn sẽ cần cộng đồng / arm-none-eabi-binutils, arm-none-eabi-gcc và arm-none-eabi-newlib (và arm-none-eabi-gdb nếu bạn muốn gỡ lỗi) từ cộng đồng repo, hoặc https://launchpad.net/gcc-arm-embedded (Có thể tìm thấy trong Archlinux 'AUR dưới dạng gcc-arm-none-eabi-bin).
  • Quyết định, nếu và thư viện nào bạn muốn sử dụng để truy cập phần cứng. Từ đỉnh đầu của tôi, có ba lựa chọn phổ biến:
    1. Không ai. Bạn viết mọi thứ từ đầu. Không khuyến khích cho người mới bắt đầu.
    2. STM32Cube : AC lib được cung cấp bởi chính ST.
    3. Libopencm3 : Một lib nguồn mở hỗ trợ khá nhiều lõi cortex-m của các nhà cung cấp khác nhau.
    4. STM32PLUS : Một lib C ++. Tuy nhiên, tôi không thể nói nhiều hơn về nó vì tôi đã không thử nó.
  • Tạo hoặc sao chép dự án đầu tiên của bạn.
    1. Nếu không có lib, hãy viết makefile của riêng bạn, tập lệnh liên kết, mã khởi động và chạy makefile đơn giản. Chúc may mắn ;)
    2. Với STM32Cube: Tải xuống và cài đặt STM32CubeMX . Sau khi giải nén tệp * .exe thực sự chỉ là một tệp java và bạn có thể chạy nó bằng cách sử dụng "java -jar filename.exe". Việc cài đặt cần sudo. Khi hoàn tất, tạo một dự án và tạo mã cho "Truestudio". Điều đó sẽ cung cấp cho bạn một điểm khởi đầu với một tập lệnh liên kết, mã khởi động, một số chức năng chính tầm thường (và một tệp thực hiện nếu tôi nhớ chính xác). Trên thực tế, ngay cả khi bạn không sử dụng lib STM32Cube, STM32CubeMX rất tốt để tính toán các giá trị cho cây đồng hồ và xác thực nếu bạn có thể định cấu hình chip theo cách bạn nghĩ.
    3. Với libopencm3: Lấy các ví dụ libopencm3 , tìm một ví dụ phù hợp với bảng của bạn và sử dụng nó làm điểm bắt đầu. Các ví dụ nên sẵn sàng để chạy. Chỉ cần gõ "làm". Sau đó sử dụng ví dụ đó làm điểm khởi đầu cho sự phát triển của chính bạn.
    4. Với STM32Plus: Tôi không biết. Lấy làm tiếc.
  • Nhận dự án của bạn để hội đồng quản trị. Hoặc là sử dụng

    1. Bộ tải khởi động nối tiếp: stm32flash hoạt động rất tốt.
    2. Cổng gỡ lỗi: Bạn có thể sử dụng openocd để nói chuyện với bộ điều hợp gỡ lỗi được cung cấp trên bảng. Openocd là tuyệt vời, nhưng tài liệu không phải lúc nào cũng tốt nhất. Khi nghi ngờ, hãy tham gia kênh irc openocd. Những người ở đó thực sự tốt đẹp.
  • Mã trong trình soạn thảo văn bản và sử dụng các công cụ dòng lệnh. Hướng dẫn này sẽ cung cấp rất nhiều lời khuyên.

Thưởng thức


5

Eclipse , GCCOpenOCD là một chuỗi công cụ. Đó là khuyến nghị của EMCU-IT và có thêm thông tin ở đây . Các trang đó cũng khuyên bạn nên sử dụng RTOS như FreeRTOS.org , nhưng điều đó tùy thuộc vào bạn.

Và để được trợ giúp biên dịch các ví dụ STM32 trong Linux, hãy vào đây . Liên kết đó trỏ đến một tệp thực hiện cho các ví dụ có thể được gọi với

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

Một vài sửa lỗi mã nhỏ cũng được ghi lại, nhưng hầu hết các dự án nên làm việc với

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

1
Cảm ơn! Tôi đã không nhìn thấy những liên kết trước đó. Tôi ngạc nhiên không có một hướng dẫn dứt khoát hơn ở đâu đó mặc dù các bảng khám phá khác nhau có các cờ xây dựng khác nhau một cách tinh tế.
Gordon Williams

Vâng, ST đã tạo ra một bảng rất rẻ và đưa chúng đi, hàng ngàn trong số chúng, và bản thân STM32 là một con chip tuyệt vời, cho đến tận F4, nhưng lập trình chúng là một nỗi đau rất lớn ở mông. Các trình điều khiển của họ được ghi lại rất kém, và không được đặt tên tốt, và việc tìm kiếm một IDE và chuỗi công cụ chơi tốt với nhau miễn phí là không quá dễ dàng.
hak8or

1

Tôi đã thành công với https://github.com/JorgeAparicio/bareCortexM (xem thêm các bài đăng trên blog được liên kết). Tôi tin rằng tôi chỉ có thể đơn giản bước qua mã hoặc duyệt bộ nhớ thiết bị thay vì chèn các câu lệnh gỡ lỗi trong mã của mình hoặc đoán những gì đang xảy ra bên trong chip.

Dự án BareCortexM là một mẫu Eclipse để phát triển với dòng Cortex M, đặc biệt là STM32, trong C ++ không có HĐH. Nó được cấu hình để sử dụng openocd, gcc và có các tập lệnh để flash và gỡ lỗi cho một số mục tiêu bao gồm một số bảng khám phá. Bằng cách làm theo các hướng dẫn và cài đặt các trình cắm Eclipse được đề xuất, tôi đã có thể sử dụng STM32VLDISCOVERY của mình trên Ubuntu.

Theo khuyến cáo, tôi đã kết hợp mẫu nhật thực với thư viện mẫu libstm32pp C ++ của cùng tác giả cho phần cứng STM32. libstm32pp cung cấp một sự thay thế hoàn toàn đáng ngạc nhiên cho CMSIS và các trình điều khiển STM32 thường bị chỉ trích với một mô hình lập trình cho phép bạn nói những điều như PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)PINB::setLow()hoặc PINB::setHigh()tất cả được biên dịch nội tuyến chủ yếu do các mẫu C ++. Các thiết lập là rất tốt đẹp.


Tôi không còn đề xuất BareCortexM không rõ ràng; kiểm tra stm32plus tại andybrown.me.uk/wk
joeforker

Vấn đề với trình điều khiển thiết bị như vậy là chúng không hiệu quả. Đối với trình điều khiển thiết bị tốc độ cao phù hợp không lãng phí chu kỳ cpu, bạn cần có một rtos bên dưới để bạn có thể lên lịch phù hợp.
Martin

0

Có lẽ nó sẽ hữu ích cho ai đó: bài viết ngắn của tôi (về tiếng Nga) và dự án đơn giản . Tất cả trong linux và không có những thứ không cần thiết như nhật thực.

Các thư viện được lấy từ trang web ST, makefile - từ một trong nhiều ví dụ về GPL trên internet.


0

Đây là một dự án mẫu nhỏ nhưng sáng tạo để bắt đầu nhanh bằng cách sử dụng bảng STM32F0 Discovery trong Linux hoặc bất kỳ HĐH nào khác:

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

Lưu ý rằng dự án sử dụng ChibiOS - một hệ điều hành thời gian thực nguồn mở và miễn phí, do đó, đây không hẳn là một triển khai xương cốt từ đầu.


0

Tôi sử dụng vim và arm-none-eabi-gcc cùng với tất cả các công cụ phát triển linux thông thường. Linux theo tôi là môi trường phát triển vượt trội cho công việc nhúng cho đến nay. Để gỡ lỗi, tôi sử dụng stlink và arm-none-eabi-gdb.


0

Hãy xem xét platformio . Nếu bạn hoàn toàn thoải mái với dòng lệnh, bạn sẽ thấy rằng platformio làm giảm đáng kể quá trình phát triển. pio initcó thể được sử dụng để thiết lập một dự án. pio runtận dụng chuỗi công cụ để biên dịch. pio run --target uploadgửi mã đến thiết bị. Platformio chăm sóc tải xuống các thành phần toolchain, thư viện, vv khi cần thiết.

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.