เครื่องมือพัฒนา ARM Cortex-M3


36

ฉันวางแผนที่จะย้ายไปยังสถาปัตยกรรม NXP Cortex M3 และฉันก็หลงทางเล็กน้อยระหว่างเครื่องมือการพัฒนาที่มีอยู่

Keil นั้นแพงและฉันไม่รู้ว่ามันคุ้มหรือเปล่า ทุกคนที่ลองใช้คอมไพเลอร์สามารถให้คำแนะนำได้บ้าง

ฉันพบคอมไพเลอร์นี้http://www.code-red-tech.com/red-suite-2.phpดูเหมือนว่าดีและไม่แพง ทุกคนที่ลองหรือรู้เกี่ยวกับมันสามารถให้ข้อมูลเพิ่มเติมแก่ฉันได้หรือไม่


มันเป็นคอมไพเลอร์ที่มาพร้อมกับบอร์ด LPCXpresso และใช้ gcc กับ Eclipse IDE เครื่องมือ Rowley CrossWorks นั้นดีกว่ามาก
Leon Heller

2
ในทางใดบ้างที่ดีกว่า ฉันถามเพราะฉันมีบอร์ด LPCXpresso และเครื่องมือดูเหมือนจะทำงานได้ดีดังนั้นฉันจึงสงสัยว่าเครื่องมืออื่น ๆ จะดีกว่าอย่างไร
John Burton

เราไม่สามารถทำสิ่งนี้เป็น CW หรือไม่?
stevenvh

ความเป็นไปได้ส่วนใหญ่ควรได้รับการพิจารณาใหม่ในปี 2555 เนื่องจาก Microsoft Visual Studio 2012 รองรับ ARM เป็นเป้าหมายระดับเฟิร์สคลาส

สำหรับโครงการขนาดเล็กคอมไพเลอร์ Keil รุ่นทดลองใช้งานฟรี
Simon Richter

คำตอบ:


17

ฉันเล่นกับ STM32 (เช่น Cortex M3) เมื่อเร็ว ๆ นี้ในเวลาว่างและใช้การกระจาย CodeSourcery ของ GCC ซึ่งทำงานได้ค่อนข้างดี

เพื่อนร่วมงานที่เคยทำงานกับไมโครสโคป ARM อย่างมืออาชีพในอดีตบอกฉันว่าเขาพอใจกับ toolchain ของ IAR แม้ว่าฉันจะไม่รู้ว่าค่าใช้จ่ายเป็นอย่างไรหรือการสนับสนุนของ Cortex เป็นอย่างไร


1
IAR เป็น บริษัท ที่เชี่ยวชาญด้านคอมไพเลอร์เท่าที่ฉันสามารถบอกได้ ฉันใช้พวกเขาในที่ทำงานและพวกเขามีข้อได้เปรียบและข้อเสียเล็กน้อย ฉันพบว่าการสนับสนุนของพวกเขานั้นยอดเยี่ยมมากเราใช้ MSP430 แต่พวกเขาดูเหมือนจะครอบคลุมโปรเซสเซอร์ทุกตัวที่ฉันค้นหา
Kortuk

16

ผมใช้ CodeSourcery (Lite) ข้ามคอมไพเลอร์สำหรับลินุกซ์โปรแกรมTI Stellaris ไมโครคอนโทรลเลอร์ พวกเขาทำงานกับ Cortex-M3 ใด ๆ มันฟรีโดยสมบูรณ์พร้อมไบนารีสำหรับ Windows และ Linux

นี่เป็นสูตรสั้น ๆ (Debian / Ubuntu) เพื่อติดตั้ง:

ดาวน์โหลด Toolchain (เวอร์ชั่นใดก็ได้ที่จะทำได้ แต่ฉันใช้อันนี้)

ติดตั้ง 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

เพิ่มไดเรกทอรี bin คอมไพเลอร์ข้ามไปยัง PATH ของคุณ

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

ในการโหลดโค้ดและดีบั๊กคุณต้องใช้OpenOCDและ gdb หรือ GUI อย่างใดอย่างหนึ่ง

นอกจากนี้คุณยังจะต้องมีอะแดปเตอร์ JTAG


ฉันยังใช้เครื่องมือ CodeSourcery ในชั้นเรียนของฉันด้วยชุดเครื่องมือ Stellaris LM-3s6965 dev wiki ของเรา (ลิงก์ไปยัง toolchain) อยู่ที่นี่: claymore.engineer.gvsu.edu/egr326/ (ดูคำแนะนำในการติดตั้ง MacOS X ด้านล่างเช่นกัน) ชุดนี้มาพร้อมกับการสาธิตเครื่องมือ GUI ของพวกเขาในเวลา จำกัด แต่คำสั่ง เครื่องมือบรรทัดไม่ จำกัด
Kevin Vermeer

9

ฉันเริ่มใช้หนึ่งในคณะกรรมการพัฒนาเหล่านี้ (MBED Developer Board) จุดขายที่ยิ่งใหญ่สำหรับฉันคือฉันสามารถเขียนรหัสใน C หรือ C ++ การเชื่อมต่อที่ตรงไปตรงมากับ USB และสภาพแวดล้อมการพัฒนาออนไลน์ที่ลื่นไหล (ไม่จำเป็นต้องติดตั้งเครื่องมือในท้องถิ่นเลย!)

http://mbed.org/

ห้านาทีก่อนเปิดกล่องฉันมีโปรแกรมตัวอย่างสั้น ๆ ('สวัสดีโลก' ของโลกที่ปล่อยออกมา) ทำงานต่อไปนี้:

#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 flash & 32k ram) เครื่องมือ dev ออนไลน์มีไลบรารีที่ดีมากและมีตัวอย่างมากมายและมีฟอรัมที่ใช้งานได้ดีมาก ความช่วยเหลือมากมายในการเชื่อมต่ออุปกรณ์กับ MBED ฯลฯ

แม้ว่าฉันจะมีประสบการณ์มากมายเกี่ยวกับระบบฝังตัว (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC ฯลฯ ) ฉันยังคงพบว่ามันเป็นระบบที่ง่ายมากที่จะจับได้ในขณะที่มีความสามารถอย่างจริงจัง

หลังจากเริ่มเล่นกับมันบน breadboard พื้นฐานฉันซื้อกระดานฐานจากพวกเหล่านี้: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. นี่มีกองอุปกรณ์ I / O (รวมถึง miniture OLED และ accelerometer 3axis) จากเว็บไซต์เดียวกันฉันก็ซื้อหนึ่งในบอร์ดตัวประมวลผล LCP Expresso ซึ่งราคาถูกพลังงานน้อยกว่า / หน่วยความจำน้อยกว่า MBED แต่เหมาะสำหรับงานขนาดเล็ก (ยัง hammers crap ออกจากโปรเซสเซอร์ PIC / Atmega) บอร์ดฐานรองรับทั้ง LCPExpresso และ MBED การซื้อบอร์ดตัวประมวลผล LCPExpress ทำให้ฉันมีดีบักเกอร์ JTAG ที่แนบมาและ envoronment dev แบบออฟไลน์ (ชุดพัฒนา dev ของ GCC / Eclipse ตาม Code Red) สิ่งนี้มีความซับซ้อนมากกว่าสภาพแวดล้อม MBED dev ออนไลน์ แต่เป็นความก้าวหน้าแบบลอจิคัลหลังจากที่คุณได้รับประสบการณ์ที่ MBED

จากการอ้างอิงถึงจุดเริ่มต้นของฉันเสียงที่ควบคุม MBED นั้นมีความสามารถมากกว่าคอนโทรลเลอร์ LPCExpresso มากขึ้น แต่การใช้และเรียนรู้ง่ายกว่ามาก


นอกจากนี้ยังมีโครงการ gcc4mbed ที่ยอดเยี่ยมของอดัมกรีนซึ่งช่วยให้คุณสามารถรวบรวมแบบออฟไลน์ (โดยมีขนาดรหัสใหญ่กว่า): github.com/adamgreen/gcc4mbed
Kevin Chen

9

รหัส sourcery lite นั้นดีหรือใช้ emdebian หรือหมุนของคุณเองมันค่อนข้างง่ายเว้นแต่คุณจะต้องใช้ไลบรารี C หรือ gcc เต็มรูปแบบจากนั้นก็ยังสามารถทำได้ แต่ยากขึ้นเล็กน้อย ในตอนแรกคุณไม่ต้องการคอมไพเลอร์ที่สามารถใช้งาน thumb2 ได้ thumb จะทำตามที่คุณค้นหา toolchain ที่คุณชอบ

llvm เป็นอีกสิ่งหนึ่งที่ดี (ใช้เสียงดังกราวไม่ใช่ llvm-gcc !!) ฉันรู้ว่าแขนข้างจะดีขึ้นตลอดเวลารุ่นที่ 27 ผลิตโค้ดได้เร็วกว่า gcc ปัจจุบันสำหรับการทดสอบโดยเฉพาะ ฉันพบข้อผิดพลาดที่ด้านข้างของนิ้วหัวแม่มือเมื่อทำงานกับ thumb emulator (thumbulator.blogspot.com) ซึ่งแก้ไขโดยทันที ส่วนที่ดีที่สุดเกี่ยวกับ llvm คือโดยปริยายคอมไพเลอร์ข้ามไม่จำเป็นต้องมีประสบการณ์การทำงานหรือการสร้างเพิ่มเติม ในอีกไม่กี่ปีข้างหน้าฉันเห็นพวกเขาตัดลึกเข้าไปใน gcc in และผ่าน gcc โดยสำหรับการคอมไพล์ข้าม / ฝังตัว

ฉันลองใช้เครื่องมือโค้ด - แดงครั้งเดียวกับบอร์ด lpcxpresso ผลลัพธ์สุดท้ายคือฉันไม่เคยใช้โค้ด - แดงและกำลังถกเถียงกันว่าจะขึ้นบัญชีดำหรือไม่ YMMV หากคุณต้องใช้จ่ายสำหรับเครื่องมือฉันจะไปกับ keil เท่านั้นเพราะพวกเขาถูกซื้อโดยแขนและส่วนหนึ่งของแพคเกจคือคอมไพเลอร์ rvct แน่นอนว่ารหัส sourcery เป็นค่าใช้จ่ายสำหรับบ้านด้วยเช่นกันหากคุณไม่ได้รับข้อ จำกัด หรือเลือกที่จะรับการสนับสนุนเนื่องจาก gcc นั้นมีการสนับสนุนที่ดีที่สุดจากคอมไพเลอร์ทั้งหมด เมื่อไม่นานมานี้เมื่อฉันสามารถทดลองใช้พวกเขาได้และเครื่องมือของแขนก็เป่า gcc ออกไปจนได้คุณภาพของรหัสที่ผลิตออกมา gcc ขึ้นและลงบางรุ่นของ 3.x ผลิตรหัสที่ดีกว่า 4.x พวกเขาดูเหมือนจะไม่พัฒนาในแต่ละรุ่น แต่พวกเขาทำหรือบางทีรหัสมาเพิ่ม thumb2 สนับสนุนเมื่อไม่นานมานี้ซึ่งรุ่น 3.x ไม่ได้ / เคยมี


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 suite, IMHO
มอร์เทนเซ่น

8

ฉันใช้ซอฟต์แวร์ Rowley สำหรับการพัฒนา ARM และ MSP430:

http://www.rowley.co.uk

มันยอดเยี่ยมมาก รองรับ Cortex-M3


1
ฉันกำลังลองรุ่นทดลองและฉันคิดว่ามันจะเป็นทางเลือกของฉัน มันมีเอกสารครบถ้วนดีและไม่แพงมาก (ใบอนุญาตส่วนบุคคลสำหรับ 150 $)
mba7

ชุดเครื่องมือ Rowley นั้นยอดเยี่ยมและการสนับสนุนก็ยอดเยี่ยม
เรเดียน


5

ฉันประสบความสำเร็จค่อนข้างดีในการใช้IAR compiler / debug chains สำหรับการพัฒนา ARM ของฉัน พวกเขามีเครื่องมือในการพัฒนาที่ค่อนข้างเสถียรพร้อมกับสภาพแวดล้อมแบบฝังตัว C ++ (ซึ่งค่อนข้างหายาก) - ขึ้นอยู่กับขนาดฐานรหัสของคุณพวกเขายังมีฮาร์ดแวร์ / ซอฟต์แวร์ที่ยอดเยี่ยม "ชุด KickStart" พร้อมกับรุ่นที่ จำกัด ขนาดของเครื่องมือ


4

IAR นั้นยอดเยี่ยมและถ้าคุณกำลังทำโปรเจคเล็ก ๆ จะมีรุ่นคิกสตาร์ทเริ่มต้นขนาด 32K ฟรี ฉันเชื่อว่าการอัพเกรดขนาดแพงไปหน่อย พวกเขายังมาพร้อมกับโครงการตัวอย่างที่ดีมากมายโดยปกติจะมีหลายตัวสำหรับโปรเซสเซอร์ตระกูลเดียวกัน


2
ใช่พวกเขาลดจำนวนโรงเรียนของฉันลงอย่างมาก แต่ก็ยังอยู่ในหลักพันหลังจากลดราคาลง 95%
Kortuk

4

ฉันใช้เวลาสองสามวันก่อนที่จะได้รับ ToolSourcery GNU toolchain ที่ติดตั้งอย่างเต็มที่สำหรับไมโคร EFM32G ใน OS X มันคุ้มค่า เปรียบเทียบกับ debuggers ที่ใช้ GUI หลายตัวที่ฉันได้ลอง (ส่วนใหญ่ใช้ Eclipse) Makefiles, GCC และ GDB เป็นความฝันที่เป็นจริง รวมทั้งหมดทำงานจาก terminal Linux หรือ Mac ของฉัน

ส่วนเดียวที่ดูดคืออะแดปเตอร์ J-Link ที่ติดตั้งไว้ในบอร์ด โปรแกรม Windows และ Linux GDBServer ของ J-Link เป็นแหล่งปิด ยิ่งแย่ไปกว่านั้นคือเวอร์ชันของ Linux นั้นอยู่ห่างออกไปอีกมาก ดังนั้นเพื่อให้ GDB ทำงานได้ฉันต้องเรียกใช้อิมเมจ Windows VMware ซึ่งมีวัตถุประสงค์เพียงอย่างเดียวคือการเรียกใช้ GDBServer (เนื่องจากลีนุกซ์เสีย)

โอ้และไม่ทำงานอย่างถูกต้องเซิร์ฟเวอร์ GDB ที่ใช้ Linux ของ J-Link ผูกติดกับ 127.0.0.1 และฟังเฉพาะกับแพ็คเก็ตที่เป็นปลายทาง ดังนั้นการทำ messing กับ iptables และการส่งต่อจึงจำเป็นต้องเชื่อมต่อกับเครื่องระยะไกล ไร้สาระ; Segger ต้องได้รับการกระทำของพวกเขาด้วยกัน


ฉันเห็นด้วย jlink เป็นความเจ็บปวดบน Linux แต่ฉันคิดว่าคุณสามารถใช้งานได้โดยใช้ LD_LIBRARY_PATH นอกจากนี้คุณสามารถแก้ไขปัญหาที่อยู่รวมทั้งโดยใช้ SSH ไปข้างหน้าหรือโดยใช้ LD_PRELOAD หรือคล้ายกันเพื่อตัดการโทรเครือข่ายและเปลี่ยนที่อยู่เครือข่าย แต่เป็นเรื่องที่น่าสมเพชเมื่อเครื่องมือที่มีราคาแพงยากต่อการทำงานมากกว่าเครื่องมือที่มีราคาถูกอย่าง ST-LINK ซึ่งไดรเวอร์แบบเปิดทั้งหมดได้รับการออกแบบวิศวกรรมย้อนกลับ
Chris Stratton

4

ฉันใช้ QtCreator และ GNU Tools ARM Embedded ทำได้ดี.

ข้อดี:

  • ฟรีทั้งหมด (และโอเพนซอร์ส)
  • QtCreator เป็น C ++ IDE ยุคใหม่ที่ยอดเยี่ยมพร้อมการทำงานของโค้ดให้เสร็จสิ้นสัญลักษณ์เชื่อมโยงหลายมิติการปรับโครงสร้างใหม่และอื่น ๆ
  • QtCreator รองรับการดีบักโลหะเปลือย (ใช่ - คุณสามารถวางจุดพักแบบกราฟิกรหัสขั้นตอนและตรวจสอบตัวแปร) (ต้องการลิงก์ JTAG หรือ SWD ไปยัง MCU ของคุณ แต่นี่ก็ไม่ได้ยากอย่างที่คิด)
  • ไม่ใช่ตาม Eclipse หรือ Eclipse

ข้อเสีย:

  • การสนับสนุน Baremetal เป็นเรื่องใหม่มากและฉันก็มีปัญหานิดหน่อย - ในที่สุดก็เอาชนะด้วยความช่วยเหลือที่ยอดเยี่ยมของผู้เขียนในรายการส่งเมล
  • อาจตั้งค่าได้ยากกว่า Keil หรือรหัสแดงเล็กน้อย

เมื่อทุกอย่างถูกตั้งค่าอย่างถูกต้องฉันสามารถคลิกเพื่อสร้างเบรกพอยต์ในรหัสของฉันแล้วคลิกปุ่ม "ดีบั๊ก" มันจะรวบรวมแฟลชดำเนินการและหยุดชั่วคราวบนเบรกพอยต์ในเวลาประมาณ 5 วินาที (และจะทำให้คุณโกรธถ้าคุณต้องกลับไปที่ Arduino "IDE" พร้อมกัน)

ฉันกำลังทำงานเกี่ยวกับการสอนเกี่ยวกับวิธีการตั้งค่านี้กับชิป ARM อื่น - Cortex-M0 ตาม nRF51822


5
อาจเป็นการเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณชอบคุณสมบัติที่ดีบางอย่าง ฯลฯ เพื่อให้คำตอบมีประโยชน์มากขึ้น
PeterJ

คุณช่วยเสนอโครงร่างคร่าวๆได้หรือไม่?
Scott Seidman


1

ผมใช้แขน EABI-GCC และ toolchain ที่จะไปด้วยการติดตั้งผ่านทางที่สคริปต์อัญเชิญแขน toolchain สคริปต์ตั้งค่าสภาพแวดล้อมสำหรับการทำงานโลหะเปลือยบน ARM มันฟรีและโอเพ่นซอร์สและทุกอย่างนั้นและทำงานได้ดีอย่างน่าเชื่อถือสำหรับฉัน ฉันเคยใช้ IAR สำหรับเรื่องนี้ด้วยและมันก็ดีกว่าที่จะให้คุณทำการดีบักที่เป็นมิตรมากขึ้นและทำสิ่งต่างๆในแบบ IDE แต่โดยรวมแล้วฉันรู้สึกสบายใจกับ gcc มากกว่าถ้าไม่มีเหตุผลอื่นเพราะฉัน ไม่ต้องปรับค่าใช้จ่ายให้ใคร

(ฉันไม่เคยคิดวิธีใช้ gdb จริงๆสำหรับสิ่งใด แต่ฉันไม่เคยคุ้นเคยกับการใช้ดีบักเกอร์หรือมีอยู่ให้ใช้ดังนั้นฉันไม่แน่ใจว่าฉันมีสิทธิ์ตัดสินบิตนั้นหรือไม่


1

ผมใช้ Emprog ThunderBench มันยอดเยี่ยมน่าจะดีที่สุดที่ฉันเคยใช้

สิ่งที่ฉันชอบที่สุดเกี่ยวกับมันคือในขณะเดียวกันคอมไพเลอร์ ARM C / C ++ ARM , Debugger และ IDE


1
ดูเหมือนว่าจะเป็นชุดค่าผสม GCC + Eclipse อื่น
Chris Stratton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.