ARM Cortex-M3 개발 도구?


36

NXP Cortex M3 아키텍처로 마이그레이션 할 계획이며 기존 개발 도구간에 약간의 손실이 있습니다.

Keil은 비싸고 그만한 가치가 있는지 모르겠습니다. 컴파일러를 사용해 본 사람이 있다면 조언을 해줄 수 있습니까?

나는이 컴파일러 http://www.code-red-tech.com/red-suite-2.php를 발견했습니다 . 그것을 시도하거나 그것에 대해 알고있는 사람이 더 많은 정보를 줄 수 있습니까?


LPCXpresso 보드와 함께 제공되는 컴파일러이며 Eclipse IDE와 함께 gcc를 사용합니다. Rowley CrossWorks 도구가 훨씬 좋습니다.
레온 헬러

2
그들은 어떤면에서 더 낫습니까? LPCXpresso 보드가 있고 도구가 제대로 작동하는 것 같아서 다른 도구가 어떻게 더 나은지 궁금합니다.
John Burton

이것을 CW로 만들 수 없습니까?
stevenvh

Microsoft Visual Studio 2012는 ARM을 1 급 대상으로 지원하므로 대부분의 가능성을 2012 년에 다시 고려해야합니다.

소규모 프로젝트의 경우 Keil 컴파일러의 평가판은 무료입니다.
Simon Richter

답변:


17

나는 최근 여가 시간에 STM32 (또한 Cortex M3)를 가지고 놀았으며 GCC의 CodeSourcery 배포판을 사용하여 잘 작동했습니다.

과거에 ARM 마이크로와 전문적으로 작업 한 동료는 비용이 어떤지 또는 Cortex 지원이 어떤지 모르겠지만 IAR 툴체인에 만족한다고 말했습니다.


1
IAR은 내가 말할 수있는 한 컴파일러 전문 회사입니다. 나는 직장에서 사용하고 특전과 몇 가지 단점이 있습니다. 나는 그들의 지원이 상당히 뛰어나다는 것을 알았습니다. 우리는 MSP430을 사용하지만 찾는 모든 프로세서를 다루는 것 같습니다.
Kortuk

16

Linux 용 CodeSourcery (Lite) 크로스 컴파일러를 사용하여 TI Stellaris Microcontrollers 를 프로그래밍합니다 . 그들은 모든 Cortex-M3과 함께 작동합니다. Windows 및 Linux 용 바이너리가있는 완전 무료입니다.

설치하는 간단한 레시피 (Debian / Ubuntu)는 다음과 같습니다.

툴체인 다운로드 (모든 버전에서 사용되지만이 버전을 사용함)

JRE (Java Runtime Environment) 설치

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

설치

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

PATH에 크로스 컴파일러 bin 디렉토리 추가

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

코드를로드하고 디버그하려면 OpenOCD 와 gdb 또는 GUI 중 하나가 필요합니다.

JTAG 어댑터 도 필요합니다 .


또한 Stellaris LM-3s6965 dev 키트와 함께 클래스 중 하나에서 CodeSourcery 도구를 사용합니다. Wiki (툴체인 링크)는 다음과 같습니다. claymore.engineer.gvsu.edu/egr326/… (아래의 MacOS X 설치 지침도 참조하십시오.)이 키트에는 GUI 도구에 대한 시간 제한 데모가 있지만 명령은 선 도구는 제한되지 않습니다.
Kevin Vermeer 1

9

이 중 하나를 사용하기 시작했습니다 (MBED 개발자 보드). 저에게 가장 큰 장점은 C 또는 C ++로 코드를 작성할 수 있고 USB를 통한 간단한 연결과 매끄러운 온라인 개발 환경 (로컬 툴 설치가 전혀 필요하지 않음)이었습니다.

http://mbed.org/

오프닝 박스 5 분 후 나는 다음과 같은 샘플 깜빡이는 프로그램 (내장 세계의 'hello world')을 가지고 있었다.

#include "mbed.h"

DigitalOut myled(LED1);

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

그게 다야! 위의 완전한 프로그램입니다!

ARM Cortex M3, 임베디드 프로젝트 (100mhz, 256k 플래시 및 32k 램)를위한 빠르고 많은 메모리를 기반으로합니다. 온라인 개발 도구에는 매우 훌륭한 라이브러리와 많은 예제가 있으며 매우 활발한 포럼이 있습니다. MBED 등에 장치를 연결하는 데 많은 도움

임베디드 시스템 (ARM 7/9, Renases M8 / 16 / 32, Coldfire, Zilog, PIC 등)에 대한 많은 경험이 있지만 여전히 심각한 기능을 수행하면서 쉽게 잡을 수있는 상쾌한 시스템을 발견했습니다.

기본 브레드 보드에서 처음 플레이 한 후 다음 사람들로부터베이스 보드를 구입했습니다 .. 여기에는 I / O 장치 더미 (미니어처 OLED 및 3 축 가속도계 포함)가 있습니다. 같은 사이트에서 MBED보다 저렴하고 전력 / 메모리는 적지 ​​만 소규모 작업에 적합한 LCPExpresso 프로세서 보드 중 하나를 구입했습니다 (여전히 PIC / Atmega 프로세서의 허물어 짐). 베이스 보드는 LCPExpresso와 MBED를 모두 지원합니다. LCPExpress 프로세서 보드를 구입하면 JTAG 디버거와 오프라인 개발 환경 (Code Red의 GCC / Eclipse 기반 개발 키트)도 제공됩니다. 이것은 온라인 MBED 개발 환경보다 훨씬 복잡하지만 MBED에 익숙해지면 논리적으로 진행됩니다.

MBED 컨트롤러가 LPCExpresso 컨트롤러보다 훨씬 더 유능하다는 사실을 필자의 원래 요점을 참조하면 BUT는 사용 및 학습이 훨씬 간단합니다.


또한 더 큰 코드 크기를 희생하여 오프라인으로 컴파일 할 수있는 Adam Green의 뛰어난 gcc4mbed 프로젝트가 있습니다 : github.com/adamgreen/gcc4mbed
Kevin Chen

9

코드 소스 라이트가 좋거나 emdebian을 사용하십시오. 전체 C 또는 gcc 라이브러리가 필요하지 않으면 여전히 쉽지만 조금 더 어렵습니다. 처음에는 thumb2 가능 컴파일러가 필요하지 않습니다. 원하는 툴체인을 검색 할 때 thumb이 필요합니다.

llvm은 또 다른 좋은 것입니다 (llvm-gcc가 아닌 clang 사용 !!), 팔 쪽이 항상 좋아지고 있음을 알고 있습니다. 버전 27은 특정 테스트를 위해 현재 gcc보다 빠른 코드를 생성했습니다. 엄지 손가락 에뮬레이터 (thumbulator.blogspot.com)에서 작업 할 때 엄지 손가락에 버그가 발견되었습니다. llvm의 가장 좋은 점은 기본적으로 크로스 컴파일러이며 추가 작업이나 건물 경험이 필요하지 않다는 것입니다. 앞으로 몇 년 동안 나는 그들이 교차 컴파일 / 임베디드하여 gcc를 더 깊이 파고 들고 gcc를 전달하는 것을 볼 수 있습니다.

나는 lpcxpresso 보드로 한 번 코드 레드 도구를 사용해 보았습니다. 결국 결과는 절대 코드 레드를 절대 사용하지 않으며 lpc를 블랙리스트에 올릴 것인지에 대한 토론입니다. ymmv. 도구 비용을 지불 해야하는 경우 팔로 구입하고 패키지의 일부가 rvct 컴파일러이기 때문에 keil과 함께 갈 것입니다. 물론 코드 소스는 라이트 제한을 충족하지 않거나 지원을 선택하면 gcc이므로 모든 컴파일러 중 최고의 지원을받습니다. 얼마 전부터 메타웨어와 팔 도구를 사용하여 코드 품질까지 gcc를 날려 버렸습니다. gcc는 3.x의 일부 버전이 4.x보다 더 나은 코드를 생성합니다. 각 릴리스에서 개선되는 것으로 보이지는 않지만, 얼마 전에 코드 소스에 thumb2 지원이 추가되었거나 코드를 추가하지 않았을 수도 있습니다. / 없어요.


If you have to use a pay for tool I would go with keil only because they were bought by arm-Keil 컴파일러를 사용해 보셨습니까? 나는 Keil 8051 도구에 적어도 감동하지 않았습니다. 그들은 GCC 기반 경쟁이나 LLVM / Clang 제품군 인 IMHO에 비해 공룡처럼 느껴집니다.
Morten Jensen

8

ARM 및 MSP430 개발에 Rowley 소프트웨어를 사용합니다.

http://www.rowley.co.uk

훌륭합니다. Cortex-M3이 지원됩니다.


1
시험판을 사용하려고하는데 그것이 나의 선택이 될 것이라고 생각합니다. 문서화가 잘되어 있고 비용이 많이 들지 않습니다. (개인 라이센스 150 $)
mba7 2009

Rowley 툴셋은 훌륭하고 지원은 우수합니다.
Radian


5

ARM 개발에 IAR 컴파일러 / 디버그 체인을 사용하여 상당히 성공했습니다 . 임베디드 C ++ 환경을 갖춘 비교적 안정적인 개발 도구를 제공합니다. -코드베이스 크기에 따라 코드 크기 제한 도구를 갖춘 훌륭한 하드웨어 / 소프트웨어 "킥 스타트 키트"도 제공합니다.


4

IAR은 우수하며 소규모 프로젝트를 수행하는 경우 무료 32K 코드 크기 제한적인 킥 스타트 에디션이 있습니다. 그러나 크기 업그레이드는 약간 비쌉니다. 또한 각 프로세서 제품군마다 여러 가지 좋은 예제 프로젝트가 제공됩니다.


2
예, 그들은 제 학교를 많이 삭감했습니다. 95 %의 가격 인하 후에도 여전히 수천 명이었습니다.
Kortuk

4

지난 며칠 동안 OS X에서 EFM32G 마이크로에 대한 CodeSourcery GNU 툴체인을 완전히 설정하는 데 보냈습니다. 그만한 가치가있었습니다. 내가 시도한 많은 GUI 기반 디버거와 비교할 때 (주로 Eclipse 기반); Makefiles, GCC 및 GDB는 꿈이 실현됩니다. 또한 모두 내 Linux 또는 Mac 터미널에서 작동합니다.

짜증나는 유일한 부분은 보드에 내장 된 J-Link 어댑터입니다. J-Link의 Windows 및 Linux GDBServer 프로그램은 비공개 소스입니다. 더 나쁜 것은 Linux 버전이 훨씬 뒤떨어져 있다는 것입니다. 따라서 GDB가 작동하려면 GDBServer를 실행하는 것이 유일한 목적인 Windows VMWare 이미지를 실행해야합니다 (Linux가 손상 되었기 때문에).

J-Link의 Linux 기반 GDB 서버는 127.0.0.1에 바인딩하고 dest로 패킷을 수신합니다. 따라서 원격 컴퓨터에서 연결하려면 iptables를 엉망으로 만들고 전달해야합니다. 어리석은; Segger는 함께 행동해야합니다.


나는 jlink가 Linux에서 왕성한 고통이라고 동의하지만 LD_LIBRARY_PATH를 사용하여 작동시킬 수 있다고 생각합니다. 또한 SSH 전달을 사용하거나 LD_PRELOAD 또는 이와 유사한 기능을 사용하여 네트워크 호출을 랩핑하고 네트워크 주소를 변경하여 바인딩 주소 문제를 해결할 수 있습니다. 그러나 완전히 개방 된 드라이버가 리버스 엔지니어링 된 ST-LINK와 같은 저렴한 도구보다 값 비싼 도구가 작동하기 어려운 경우에는 한심한 일입니다.
Chris Stratton

4

QtCreator 및 GNU Tools ARM Embedded를 사용합니다. 잘 작동합니다.

장점 :

  • 완전 무료 (오픈 소스)
  • QtCreator는 작업 코드 완성, 심볼 하이퍼 링크, 리팩토링 등을 갖춘 훌륭한 최신 C ++ IDE입니다.
  • QtCreator는 Bare Metal 디버깅을 지원합니다 (예-중단 점, 단계 코드 및 변수를 그래픽으로 배치 할 수 있음). (JTAG 또는 SWD가 MCU에 연결되어 있어야하지만 생각만큼 어렵지는 않았습니다.)
  • Eclipse 또는 Eclipse 기반이 아닙니다.

단점 :

  • 베어 메탈 지원은 매우 새롭고 상당히 많은 문제가있었습니다. 결국 QtCreator 메일 링리스트의 저자의 탁월한 도움으로 극복하십시오.
  • Keil 또는 코드 레드보다 설정하기가 약간 더 어려울 수 있습니다.

모든 것이 올바르게 설정되면 클릭하여 코드에 중단 점을 만든 다음 "디버그"버튼을 클릭 할 수 있습니다. 약 5 초 후에 중단 점에서 컴파일, 플래시, 실행 및 일시 중지됩니다 (그리고 Arduino "IDE"로 돌아 가야하는 경우 동시에 분노하게됩니다).

다른 ARM 칩으로 Cortex-M0 기반 nRF51822로 설정하는 방법에 대한 자습서를 작성 중입니다.


5
답변을 더 유용하게 만들기 위해 몇 가지 좋은 기능 등 원하는 것을 더 자세하게 추가하는 것이 좋습니다.
PeterJ

대략적인 개요를 제공 할 수 있습니까?
Scott Seidman 1


1

arm-eabi-gcc 및 소환 팔 툴체인 스크립트 를 통해 설치된 툴체인을 사용 합니다. 이 스크립트는 ARM에서 베어 메탈 작업을 수행하기위한 환경을 설정합니다. 그것의 무료 및 오픈 소스와 그 모든 것이 안정적으로 요구됩니다. 나는 또한 이것을 위해 IAR을 사용했으며, 훨씬 더 친절한 디버깅과 IDE 방식으로 일을 수행 할 수 있다는 점에서 더 낫습니다. 그러나 다른 이유로 아무런 이유가 없다면 gcc에 더 편안합니다. 누구에게나 비용을 정당화 할 필요는 없습니다.

(나는 gdb를 사용하는 방법을 실제로 연구 한 적이 없지만 디버거를 사용하거나 어쨌든 사용할 수있는 것에 익숙하지 않았으므로 그 비트를 판단 할 자격이 있는지 확실하지 않습니다.)


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.