Narzędzia programistyczne ARM Cortex-M3?


36

Planuję migrację do architektury NXP Cortex M3 i jestem trochę zagubiony między istniejącymi narzędziami programistycznymi.

Keil jest drogi i nie wiem, czy warto. Każdy, kto próbował jakiegoś kompilatora, może udzielić porady?

Znalazłem ten kompilator http://www.code-red-tech.com/red-suite-2.php, który wydaje się dobry i niedrogi. Ktoś, kto próbował lub wiedział o tym, może dać mi więcej informacji?


Jest to kompilator dostarczany z płytami LPCXpresso i używa gcc z Eclipse IDE. Narzędzia Rowley CrossWorks są znacznie lepsze.
Leon Heller,

2
W jaki sposób są lepsze? Pytam, bo mam płytę LPCXpresso, a narzędzia wydają się działać dobrze, więc zastanawiam się, jak inne narzędzia są lepsze?
John Burton,

Czy nie możemy zrobić z tego CW?
stevenvh

Większość możliwości należy ponownie rozważyć w 2012 r., Ponieważ Microsoft Visual Studio 2012 obsługuje ARM jako cel pierwszej klasy.

W przypadku małych projektów wersja próbna kompilatora Keil jest bezpłatna.
Simon Richter

Odpowiedzi:


17

W wolnym czasie gram ze STM32 (także Cortex M3) i korzystam z dystrybucji CodeSourcery GCC, która całkiem dobrze się sprawdziła.

Kolega, który w przeszłości profesjonalnie pracował z mikroprocesorami ARM, powiedział mi, że jest zadowolony z zestawu narzędzi IAR, chociaż nie wiem, jaki jest koszt i jakie jest wsparcie dla Cortex.


1
IAR jest firmą specjalizującą się w kompilatorach, o ile mi wiadomo. Używam ich w pracy i mają pewne zalety i kilka wad. Uważam, że ich obsługa jest całkiem doskonała, używamy MSP430, ale wydaje się, że obejmują one każdy procesor, na który patrzę.
Kortuk

16

Korzystam z kompilatorów krzyżowych CodeSourcery (Lite) dla systemu Linux do programowania mikrokontrolerów TI Stellaris . Działają z dowolnym Cortex-M3. Są całkowicie bezpłatne, z plikami binarnymi dla systemu Windows i Linux.

Oto krótki przepis (Debian / Ubuntu) do zainstalowania:

Pobierz zestaw narzędzi (wystarczy dowolna wersja, ale używam tego)

Zainstaluj środowisko Java Runtime Environment (dla przeklętego instalatora)

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

zainstalować

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

Dodaj katalog bin kompilatora między ścieżkami do PATH

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

Do załadowania kodu i debugowania potrzebujesz OpenOCD i gdb lub jednego z GUI.

Będziesz także potrzebował adaptera JTAG .


Korzystam również z narzędzi CodeSourcery w jednej z moich klas z zestawem deweloperskim Stellaris LM-3s6965. Nasze wiki (link do toolchain) znajduje się tutaj: claymore.engineer.gvsu.edu/egr326/… (Zobacz także instrukcje instalacji MacOS X poniżej.) Zestaw zawiera ograniczoną czasowo wersję demonstracyjną narzędzi GUI, ale polecenie narzędzia liniowe nie są ograniczone.
Kevin Vermeer

9

Zacząłem używać jednego z nich (płyta programisty MBED). Dużą zaletą dla mnie było to, że mogłem kodować w C lub C ++, proste połączenie z USB i sprytne środowisko programistyczne online (wcale nie jest wymagana instalacja lokalnego narzędzia!).

http://mbed.org/

Pięć minut po otwarciu pudełka miałem przykładowy mrugający program („witaj świecie” w świecie, który się pojawił) z następującymi programami:

#include "mbed.h"

DigitalOut myled(LED1);

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

To jest to! Powyżej znajduje się pełny program!

Opiera się na ARM Cortex M3, szybkiej i dużej ilości pamięci dla projektów osadzonych (100 MHz, 256k flash i 32k RAM). Internetowe narzędzia programistyczne mają bardzo dobrą bibliotekę i wiele przykładów oraz bardzo aktywne forum. Dużo pomocy w podłączaniu urządzeń do MBED itp

Mimo że mam duże doświadczenie z systemami wbudowanymi (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC itp.), Wciąż uważam, że jest to bardzo łatwy w obsłudze system, z którym mogę sobie poradzić, mając jednocześnie poważne możliwości.

Po początkowej zabawie z podstawową płytką ścienną kupiłem płytę podstawową od tych facetów: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. To ma stos urządzeń I / O (w tym miniture OLED i 3-osiowy akcelerometr). Z tej samej strony kupiłem także jedną z płyt procesorowych LCPExpresso, która jest tania, mniej energii / pamięci niż MBED, ale idealna do mniejszych zadań (wciąż hamuje bzdury procesorów PIC / Atmega). Płyta główna obsługuje zarówno LCPExpresso, jak i MBED. Kupując płytę procesorową LCPExpress, dostałem też dołączony debugger JTAG i środowisko deweloperskie offline (zestaw deweloperski oparty na GCC / Eclipse firmy Code Red). Jest to o wiele bardziej skomplikowane niż internetowe środowisko programistyczne MBED, ale jest logicznym postępem po zdobyciu doświadczenia w korzystaniu z MBED.

Odnosząc się do mojego pierwotnego punktu, no no, że kontroler MBED jest znacznie bardziej wydajny niż kontroler LPCExpresso, ALE jest o wiele prostszy w użyciu i nauce.


Istnieje również doskonały projekt Adama Greena gcc4mbed, który pozwala na kompilację offline (kosztem większego rozmiaru kodu): github.com/adamgreen/gcc4mbed
Kevin Chen

9

kod źródłowy lite jest dobry lub użyj emdebian. lub stwórz własną, jest to dość łatwe, chyba że potrzebujesz pełnej biblioteki C lub gcc, to nadal jest wykonalne, ale trochę trudniejsze. na początku nie będziesz potrzebować kompilatora obsługującego thumb2, thumb zrobi to, gdy będziesz szukać łańcucha narzędzi, który ci się podoba.

lvv jest kolejnym dobrym (użyj clang, a nie llvm-gcc !!), wiem, że strona ramienia jest coraz lepsza, wersja 27 produkowała szybszy kod niż bieżący gcc dla konkretnego testu. Znalazłem błąd po stronie kciuka podczas pracy z emulatorem kciuka (thumbulator.blogspot.com), który został natychmiast naprawiony. Najlepsze w llvm jest to, że domyślnie jest to kompilator krzyżowy, nie wymaga dodatkowej pracy ani doświadczenia w budowaniu. W ciągu następnych kilku lat widzę, jak wnikają głębiej w gcc i przekazują gcc do kompilacji krzyżowej / osadzania.

Próbowałem raz narzędzie z kodem czerwonym na płycie lpcxpresso, końcowy wynik jest taki, że zdecydowanie nigdy nie używam kodu z kodem i zastanawiam się, czy też nie umieścić na czarnej liście lpc. ymmv. Jeśli musisz użyć narzędzia do płacenia, wybrałbym keil tylko dlatego, że zostały zakupione ręcznie, a częścią pakietu jest kompilator rvct. Oczywiście kodu źródłowego jest również domem odpłatnym, jeśli nie spełniasz limitów lite lub zdecydujesz się uzyskać wsparcie, ponieważ gcc ma najlepsze wsparcie ze wszystkich kompilatorów. Nie tak dawno temu, kiedy mogłem wypróbować je metaware, a narzędzia ramienia zdmuchnęły gcc aż do jakości wytworzonego kodu. gcc jest w górę i na dół niektóre wersje 3.x produkują lepszy kod niż 4.x, nie wydają się poprawiać w każdym wydaniu, ale niedawno dodały obsługę thumb2, co nie jest możliwe w wersjach 3.x / nie będzie.


If you have to use a pay for tool I would go with keil only because they were bought by arm- Czy próbowałeś kompilatorów Keil? Przynajmniej nie byłem pod wrażeniem narzędzi Keil 8051. Czują się jak dinozaury w porównaniu z konkurencją opartą na GCC lub pakietem LLVM / Clang, IMHO.
Morten Jensen

8

Używam oprogramowania Rowley do programowania ARM i MSP430:

http://www.rowley.co.uk

To jest świetne. Cortex-M3 jest obsługiwany.


1
Próbuję wersji próbnej i myślę, że to będzie mój wybór. jest kompletnie dobrze udokumentowany i niezbyt drogi (licencja osobista za 150 $)
mba7

Zestaw narzędzi Rowley jest świetny, a wsparcie jest doskonałe.
Radian


5

Miałem całkiem niezły sukces przy użyciu kompilatora / łańcuchów debugowania IAR do mojego rozwoju ARM. Oferują one stosunkowo stabilne narzędzia programistyczne wraz ze środowiskiem Embedded C ++ (co wydaje się dość rzadkie). - W zależności od rozmiaru bazy kodu, oferują również świetne oprogramowanie / zestawy „KickStart Kits” z ograniczonymi rozmiarami wersji swoich narzędzi.


4

IAR jest doskonały, a jeśli wykonujesz małe projekty, dostępna jest bezpłatna edycja kickstart w rozmiarze 32K. Uaktualnienia rozmiaru są jednak nieco drogie. Są również wyposażone w mnóstwo dobrych przykładowych projektów, zwykle kilka dla każdej rodziny procesorów.


2
Tak, znacznie obniżyli moją szkołę, wciąż było ich tysiące po obniżce ceny o 95%.
Kortuk

4

Ostatnie kilka dni spędziłem na kompletnym skonfigurowaniu zestawu narzędzi CodeSourcery GNU dla EFM32G micro na OS X. Warto było. W porównaniu z wieloma debuggerami opartymi na GUI, których próbowałem (głównie w środowisku Eclipse); Makefiles, GCC i GDB to spełnienie marzeń; plus wszystko działa z mojego terminala Linux lub Mac.

Jedyne, co jest do bani, to adapter J-Link wbudowany w płytkę. Program GDBServer dla systemu Windows i Linux J-Link jest zamkniętym źródłem. Co gorsza, wersja Linux jest DUŻO za nią. Aby GDB działał, muszę uruchomić obraz Windows VMWare, którego jedynym celem jest uruchomienie GDBServer (ponieważ Linux jest zepsuty).

Poza tym, nie działając poprawnie, oparty na Linuksie serwer GDB J-Link łączy się z 127.0.0.1 i nasłuchuje TYLKO pakietów z tym jako dest; więc potrzebne są bałagany w iptables i przekazywanie, aby połączyć się ze zdalną maszyną. Śmieszny; Segger musi zebrać się w sobie.


Zgadzam się, że jlink to królewski ból w Linuksie, ale myślę, że możesz sprawić, by działał, używając LD_LIBRARY_PATH. Możesz także rozwiązać problem adresu powiązania, używając przesyłania dalej SSH lub LD_PRELOAD lub podobnego w celu zawijania połączeń sieciowych i zmiany adresu sieciowego. Ale to żałosne, gdy drogie narzędzia są trudniejsze w obsłudze niż tanie, takie jak ST-LINK, dla których całkowicie otwarte sterowniki zostały poddane inżynierii wstecznej.
Chris Stratton

4

Używam QtCreator i GNU Tools ARM Embedded. Działa dobrze.

Zalety:

  • Całkowicie darmowy (i open source)
  • QtCreator to świetny nowoczesny C ++ IDE z działającym uzupełnianiem kodu, hiperłączami symboli, refaktoryzacją itp.
  • QtCreator obsługuje debugowanie od zera (tak - możesz graficznie umieszczać punkty przerwania, kod kroku i sprawdzać zmienne). (Wymaga łącza JTAG lub SWD do MCU, ale nie było to tak trudne, jak myślałem.)
  • Nie oparty na Eclipse ani oparty na Eclipse.

Niedogodności:

  • Obsługa baremetalu jest bardzo nowa i miałem z nią całkiem sporo problemów - w końcu udało mi się ją pokonać dzięki doskonałej pomocy autora z listy mailingowej QtCreator.
  • Może trochę trudniej jest ustawić niż Keil lub kod czerwony.

Gdy wszystko jest poprawnie skonfigurowane, mogę kliknąć, aby utworzyć punkt przerwania w moim kodzie, a następnie kliknąć przycisk „debuguj”. Kompiluje, flashuje, wykonuje i zatrzymuje się na punkcie przerwania za około 5 sekund (i jednocześnie wywołuje wściekłość, jeśli kiedykolwiek będziesz musiał wrócić do Arduino „IDE”).

Pracuję nad samouczkiem, w jaki sposób skonfigurować to z innym układem ARM - nRF51822 na bazie Cortex-M0.


5
Prawdopodobnie warto dodać trochę więcej szczegółów na temat tego, co lubisz, kilka dobrych funkcji itp., Aby odpowiedź była bardziej przydatna.
PeterJ

Czy możesz podać ogólny zarys?
Scott Seidman


1

Używam arm-eabi-gcc i dołączonego do niego zestawu narzędzi za pomocą skryptu przywołania zestawu narzędzi arm . Skrypt konfiguruje środowisko do wykonywania pracy bez systemu operacyjnego na ARM. Jest to darmowy i otwarty program, a wszystko to działało dla mnie niezawodnie. Użyłem do tego również IAR, i na pewno jest to lepsze, ponieważ pozwala ci robić dużo bardziej przyjazne debugowanie i robić rzeczy w sposób IDE, ale ogólnie czuję się bardziej komfortowo z gcc, jeśli nie z innego powodu, ponieważ ja nie musisz nikomu uzasadniać wydatków.

(Nigdy tak naprawdę nie nauczyłem się używać gdb do niczego, ale tak naprawdę nigdy nie byłem przyzwyczajony do używania debuggera lub posiadania go, więc nie jestem pewien, czy mam kwalifikacje, aby oceniać ten kawałek.)


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.