Công cụ phát triển ARM Cortex-M3?


36

Tôi đang dự định chuyển sang kiến ​​trúc NXP Cortex M3 và tôi hơi lạc lõng giữa các công cụ phát triển hiện có.

Keil là đắt tiền và tôi không biết nếu nó có giá trị nó. Bất cứ ai đã thử một số trình biên dịch có thể cho bất kỳ lời khuyên?

Tôi tìm thấy trình biên dịch này http://www.code-red-tech.com/red-suite-2.php nó có vẻ tốt và không đắt tiền. Bất cứ ai đã thử nó hoặc biết về nó có thể cho tôi thêm thông tin?


Đó là trình biên dịch được cung cấp với các bảng LPCXpresso và sử dụng gcc với IDE Eclipse. Các công cụ Rowley CrossWorks tốt hơn nhiều.
Leon Heller

2
Bằng cách nào họ tốt hơn? Tôi hỏi vì tôi có bảng LPCXpresso và các công cụ dường như hoạt động tốt nên tôi tự hỏi làm thế nào các công cụ khác tốt hơn?
John Burton

Chúng ta không thể làm điều này một CW?
stevenvh

Hầu hết các khả năng nên được xem xét lại vào năm 2012 kể từ khi Microsoft Visual Studio 2012 hỗ trợ ARM là mục tiêu hạng nhất.

Đối với các dự án nhỏ, phiên bản dùng thử của trình biên dịch Keil là miễn phí.
Simon Richter

Câu trả lời:


17

Gần đây tôi đã chơi với một STM32 (cũng là Cortex M3) trong thời gian rảnh rỗi và sử dụng bản phân phối GCC của CodeSourcery, đã hoạt động khá tốt.

Một đồng nghiệp đã từng làm việc với ARM micros chuyên nghiệp trong quá khứ nói với tôi rằng anh ta hài lòng với công cụ IAR, mặc dù tôi không biết chi phí là như thế nào hoặc hỗ trợ của Cortex là như thế nào.


1
IAR là một công ty chuyên về trình biên dịch theo như tôi có thể nói. Tôi sử dụng chúng trong công việc và họ có một số đặc quyền, và một vài nhược điểm. Tôi thấy sự hỗ trợ của họ khá tuyệt vời, chúng tôi sử dụng MSP430, nhưng dường như họ bao quát mọi bộ xử lý tôi tìm kiếm.
Kortuk

16

Tôi sử dụng trình biên dịch chéo CodeSourcery (Lite) cho Linux để lập trình cho Vi điều khiển TI Stellaris . Chúng hoạt động với bất kỳ Cortex-M3 nào. Chúng hoàn toàn miễn phí, với các tệp nhị phân cho Windows và Linux.

Đây là một công thức ngắn (Debian / Ubuntu) để cài đặt:

Tải xuống toolchain (bất kỳ phiên bản nào cũng được, nhưng tôi sử dụng phiên bản này)

Cài đặt Môi trường chạy thi hành Java (đối với trình cài đặt bị nguyền rủa)

sudo apt-get install sun-java6-jre ia32-libs

cài đặt, dựng lên

chmod 755 arm-2009q3-68-arm-none-eabi.bin
./arm-2009q3-68-arm-none-eabi.bin -i console

Thêm thư mục bin trình biên dịch chéo vào PATH của bạn

echo 'export PATH=$PATH:~/CodeSourcery/Sourcery_G++_Lite/bin/' >> ~/.bashrc 
. ~/.bashrc 

Để tải mã và gỡ lỗi, bạn sẽ cần OpenOCD và gdb hoặc một trong các GUI.

Bạn cũng sẽ cần một bộ chuyển đổi JTAG .


Tôi cũng sử dụng các công cụ CodeSourcery trong một trong các lớp của mình, với bộ công cụ phát triển Stellaris LM-3s6965. Wiki của chúng tôi (liên kết đến toolchain) có ở đây: claymore.engineer.gvsu.edu/egr326/ triệt (Xem hướng dẫn cài đặt MacOS X bên dưới.) Bộ này đi kèm với bản demo giới hạn thời gian của các công cụ GUI của họ, nhưng lệnh công cụ dòng không giới hạn.
Kevin Vermeer

9

Tôi đã bắt đầu sử dụng một trong số này (bảng nhà phát triển MBED). Điểm bán hàng lớn đối với tôi là tôi có thể viết mã bằng C hoặc C ++, kết nối đơn giản với USB và môi trường phát triển trực tuyến mượt mà (không cần cài đặt công cụ cục bộ nào cả!).

http://mbed.org/

Năm phút sau khi mở hộp, tôi đã có một chương trình mờ mẫu ('thế giới xin chào' của thế giới bị che chở) chạy như sau:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

Đó là nó! Trên đây là chương trình hoàn chỉnh!

Nó dựa trên ARM Cortex M3, bộ nhớ nhanh và nhiều cho các dự án nhúng (100 mhz, flash 256k và ram 32k). Các công cụ phát triển trực tuyến có một thư viện rất tốt và nhiều ví dụ và có một diễn đàn rất tích cực. Rất nhiều trợ giúp về kết nối thiết bị với MBED, v.v.

Mặc dù tôi có nhiều kinh nghiệm với các hệ thống nhúng (ARM 7/9, Renase M8 / 16/32, Coldfire, Zilog, PIC, v.v.) Tôi vẫn thấy đây là một hệ thống dễ làm mới để nắm bắt trong khi có khả năng nghiêm trọng.

Sau khi ban đầu chơi với nó trên một chiếc bánh mì cơ bản, tôi đã mua một bảng cơ sở từ những người này: http://www.embeddedartists.com/products/lpc े o / xpr_base.php? PHPSESSID = lj20urpsh9isa0c8ddcfmmn207. Thiết bị này có một đống thiết bị I / O (bao gồm OLED nhỏ và gia tốc kế 3axis). Từ cùng một trang, tôi cũng đã mua một trong những bo mạch xử lý LCPExpresso rẻ, ít năng lượng / bộ nhớ hơn MBED nhưng hoàn hảo cho các công việc nhỏ hơn (vẫn làm hỏng bộ xử lý PIC / Atmega). Bảng cơ sở hỗ trợ cả LCPExpresso và MBED. Mua bảng xử lý LCPExpress cũng cho tôi một trình gỡ lỗi JTAG đính kèm và một nỗ lực phát triển ngoại tuyến (bộ công cụ phát triển dựa trên GCC / Eclipse của Code Red). Điều này phức tạp hơn nhiều so với môi trường phát triển MBED trực tuyến nhưng là một sự tiến bộ hợp lý sau khi bạn đã đạt được sự thành công với MBED.

Với tham chiếu đến điểm ban đầu của tôi, bộ điều khiển MBED có khả năng cao hơn bộ điều khiển LPCExpresso BUT đơn giản hơn nhiều để sử dụng và tìm hiểu.


Ngoài ra còn có dự án gcc4mbed tuyệt vời của Adam Green cho phép bạn biên dịch ngoại tuyến (với chi phí kích thước mã lớn hơn): github.com/adamgreen/gcc4mbed
Kevin Chen

9

mã nguồn cung cấp lite là tốt, hoặc sử dụng emdebian. hoặc tự cuộn, nó khá dễ dàng trừ khi bạn cần một thư viện C hoặc gcc đầy đủ thì vẫn có thể thực hiện được nhưng khó hơn một chút. Lúc đầu, bạn không cần trình biên dịch có khả năng thumb2, ngón tay cái sẽ làm khi bạn tìm kiếm một toolchain mà bạn thích.

llvm là một cái tốt khác (sử dụng clang không llvm-gcc !!), tôi biết rằng cánh tay đang trở nên tốt hơn mọi lúc, phiên bản 27 tạo mã nhanh hơn gcc hiện tại cho một thử nghiệm cụ thể. Tôi đã tìm thấy một lỗi ở phía ngón tay cái khi làm việc trên trình giả lập ngón tay cái của tôi (thumbulator.blogspot.com) đã được khắc phục kịp thời. Phần tốt nhất về llvm là mặc định là trình biên dịch chéo, không cần thêm kinh nghiệm hoặc xây dựng kinh nghiệm. Trong vài năm tới, tôi thấy họ cắt sâu hơn vào gcc và chuyển gcc bằng cách biên dịch chéo / nhúng.

Tôi đã thử công cụ mã màu đỏ một lần với bảng lpc े o, kết quả cuối cùng là tôi chắc chắn không bao giờ sử dụng mã màu đỏ và đang tranh luận về việc có nên đưa vào danh sách đen lpc hay không. ymmv. Nếu bạn phải sử dụng một công cụ trả tiền, tôi sẽ chỉ sử dụng keil vì chúng được mua bởi arm và một phần của gói là trình biên dịch rvct. Tất nhiên, mã nguồn cũng là một nhà trả tiền nếu bạn không đáp ứng các giới hạn nhỏ hoặc chọn để nhận hỗ trợ, vì gcc nó có sự hỗ trợ tốt nhất cho đến nay trong tất cả các trình biên dịch. Cách đây không lâu, khi tôi có thể dùng thử chúng, các công cụ của cánh tay đã thổi bay gcc về chất lượng của mã được sản xuất. gcc tăng và giảm một số phiên bản của 3.x tạo ra mã tốt hơn 4.x, chúng dường như không được cải thiện trên mỗi bản phát hành, nhưng chúng đã hoặc có lẽ mã nguồn đã thêm hỗ trợ ngón tay cái cách đây không lâu, điều mà các phiên bản 3.x không làm được / sẽ không có.


If you have to use a pay for tool I would go with keil only because they were bought by arm- Bạn đã thử trình biên dịch Keil chưa? Tôi đã không ấn tượng với các công cụ Keil 8051 ít nhất. Họ cảm thấy như khủng long so với đối thủ cạnh tranh dựa trên GCC hoặc bộ LLVM / Clang, IMHO.
Morten Jensen

8

Tôi sử dụng phần mềm Rowley để phát triển ARM và MSP430:

http://www.rowley.co.uk

Nó là tuyệt vời. Cortex-M3 được hỗ trợ.


1
Tôi đang thử phiên bản dùng thử và tôi nghĩ rằng đó sẽ là lựa chọn của tôi. nó hoàn thành tài liệu tốt và không đắt lắm (giấy phép cá nhân với giá 150 đô la)
mba7

Bộ công cụ Rowley là tuyệt vời và sự hỗ trợ là tuyệt vời.
Radian


5

Tôi đã thành công khá tốt khi sử dụng trình biên dịch / gỡ lỗi IAR cho sự phát triển ARM của mình. Họ cung cấp các công cụ phát triển tương đối ổn định hoàn chỉnh với môi trường Embedded C ++ (có vẻ hơi hiếm). - Tùy thuộc vào kích thước cơ sở mã của bạn, họ cũng cung cấp phần mềm / phần mềm KickStart tuyệt vời với các phiên bản giới hạn kích thước mã của các công cụ của họ.


4

IAR là tuyệt vời, và nếu bạn đang làm các dự án nhỏ, có một phiên bản khởi động giới hạn kích thước mã 32K miễn phí. Nâng cấp kích thước tuy nhiên hơi đắt tiền tôi tin. Chúng cũng đi kèm với hàng tấn dự án ví dụ tốt, thường là một số cho mỗi họ bộ xử lý.


2
Vâng, họ đã cắt giảm trường học của tôi một thỏa thuận tốt, nó vẫn còn hàng ngàn sau khi giảm giá 95%.
Kortuk

4

Tôi đã dành vài ngày qua để nhận được chuỗi công cụ CodeSourcery GNU được thiết lập đầy đủ cho micro EFM32G trên OS X. Thật đáng giá. So với nhiều trình gỡ lỗi dựa trên GUI mà tôi đã thử (chủ yếu dựa trên Eclipse); Makefiles, GCC và GDB là một giấc mơ trở thành sự thật; cộng với tất cả hoạt động từ thiết bị đầu cuối Linux hoặc Mac của tôi.

Phần duy nhất hút là bộ điều hợp J-Link được tích hợp trong bo mạch. Chương trình Windows và Linux GDBServer của J-Link là nguồn đóng. Tệ hơn nữa, phiên bản Linux còn RẤT NHIỀU phía sau. Vì vậy, để GDB hoạt động, tôi phải chạy một hình ảnh Windows VMWare với mục đích duy nhất là chạy GDBServer (vì Linux bị hỏng).

Ồ và trên hết là không hoạt động chính xác, máy chủ GDB dựa trên Linux của J-Link liên kết với 127.0.0.1 và chỉ nghe các gói với điều đó như là định mệnh; vì vậy việc gây rối với iptables và chuyển tiếp là cần thiết để khiến nó kết nối từ một máy từ xa. Nực cười; Segger cần có được hành động của họ với nhau.


Tôi đồng ý jlink là một nỗi đau hoàng gia trên Linux, nhưng tôi nghĩ bạn có thể làm cho nó hoạt động bằng LD_LIBRARY_PATH. Ngoài ra, bạn có thể khắc phục sự cố địa chỉ liên kết, bằng cách sử dụng chuyển tiếp SSH hoặc bằng cách sử dụng LD_PRELOAD hoặc tương tự để bọc các cuộc gọi mạng và thay đổi địa chỉ mạng. Nhưng thật thảm hại khi các công cụ đắt tiền khó làm việc hơn các công cụ rẻ tiền như ST-LINK mà trình điều khiển mở hoàn toàn đã được thiết kế ngược.
Chris Stratton

4

Tôi sử dụng QtCreator và GNU Tools ARM Embedded. Hoạt động tốt.

Ưu điểm:

  • Hoàn toàn miễn phí (và nguồn mở)
  • QtCreator là một C ++ IDE hiện đại tuyệt vời với việc hoàn thành mã làm việc, siêu liên kết biểu tượng, tái cấu trúc, v.v.
  • QtCreator hỗ trợ gỡ lỗi kim loại trần (có - bạn có thể đặt đồ họa điểm dừng, mã bước và kiểm tra các biến). (Yêu cầu liên kết JTAG hoặc SWD với MCU của bạn, nhưng điều này gần như không khó như tôi nghĩ.)
  • Không dựa trên Eclipse hoặc Eclipse.

Nhược điểm:

  • Hỗ trợ từ xa rất mới và tôi đã có khá nhiều vấn đề với nó - cuối cùng đã khắc phục được với sự giúp đỡ tuyệt vời của tác giả trong danh sách gửi thư của QtCreator.
  • Có lẽ khó thiết lập hơn một chút so với Keil hoặc mã màu đỏ.

Khi mọi thứ được thiết lập chính xác, tôi có thể nhấp để tạo điểm dừng trong mã của mình và sau đó nhấp vào nút "gỡ lỗi". Nó sẽ biên dịch, flash, thực thi và tạm dừng trên điểm dừng trong khoảng 5 giây (và đồng thời khiến bạn nổi giận nếu bạn phải quay lại Arduino "IDE").

Tôi đang làm một hướng dẫn về cách thiết lập điều này với một chip ARM khác - nRF51822 dựa trên Cortex-M0.


5
Có lẽ đáng để thêm một chút chi tiết về những gì bạn thích, một vài tính năng hay, v.v để làm cho câu trả lời hữu ích hơn.
PeterJ

Bạn có thể cung cấp một phác thảo thô ??
Scott Seidman


1

Tôi sử dụng arm-eabi-gcc và toolchain đi kèm với nó được cài đặt thông qua tập lệnh summon arm tool . Kịch bản thiết lập môi trường để thực hiện công việc kim loại trần trên ARM. Nó là nguồn mở và miễn phí và tất cả những thứ đó và đã hoạt động đáng tin cậy đối với tôi. Tôi cũng đã sử dụng IAR cho việc này, và nó chắc chắn tốt hơn ở chỗ nó cho phép bạn gỡ lỗi thân thiện hơn nhiều và thực hiện mọi thứ theo cách IDE, nhưng nói chung tôi cảm thấy thoải mái hơn với gcc, nếu không vì lý do nào khác vì tôi không phải thanh toán chi phí cho bất cứ ai.

(Tôi chưa bao giờ thực sự tìm ra cách sử dụng gdb cho bất cứ điều gì, nhưng tôi chưa bao giờ thực sự quen với việc sử dụng trình gỡ lỗi hoặc dù sao cũng có sẵn, vì vậy tôi không chắc mình có đủ khả năng để đánh giá bit đó hay khô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.