ตัวเลือกการเขียนโปรแกรมนอกเหนือจาก C ++


14

ฉันสามารถตั้งโปรแกรม Arduino โดยใช้ภาษาการเขียนโปรแกรมอื่นที่ไม่ใช่ C ++ ได้ไหม? ถ้าใช่ภาษาการเขียนโปรแกรมใด ฉันต้องใช้ซอฟต์แวร์อะไรในการรวบรวมและโหลดรหัสของฉันลงบน Arduino



น่าเสียดายที่นี่เป็นคำถามซ้ำ ๆ ที่มีประสิทธิภาพของ non-Arduino.SE: ดูที่นี่ ฉันคิดว่าคำถามที่ฉันเชื่อมโยงควรย้ายที่นี่หลังจากเบต้าจบลง แต่ยังไม่ถึงตอนนี้
apnorton

@anorton คำถามนั้นถามเกี่ยวกับ IDE ทางเลือก คำถามนี้ไม่ซ้ำกันเพราะพูดถึงภาษาการเขียนโปรแกรมทางเลือก
tstew

@ user2202326 ขออภัย ... ดูเหมือนว่าฉันจะจำคนที่ตอบสนองด้วยภาษาที่แตกต่างกว่า IDEs ในหัวข้อนั้น แต่เห็นได้ชัดว่าฉันผิด ดำเนินการต่อไป
apnorton

คุณสามารถดู Netduino ได้ถ้าคุณคุ้นเคยกับ C # (Visual Studio เป็นวิธีที่จะไป แต่มีวิธีอื่นในการคอมไพล์รหัส C #) ฉันไม่รู้ว่าคุณมีบอร์ดอะไรและถ้ามันเข้ากันได้ netduino.com
Jason Down

คำตอบ:


5

บางคนที่รู้จักกันทั่วไป:

ในทางทฤษฎีคุณควรที่จะขยาย avr-gcc เพื่อรองรับภาษาอื่น ๆ แม้ว่านี่จะไม่ใช่งานเล็ก ๆ ฉันควรคำเตือนที่สนับสนุนภาษาอื่นนอกเหนือจาก C มักจะมาพร้อมกับข้อ จำกัด ที่ค่อนข้างหนักในองค์ประกอบภาษา - ตัวอย่างเช่นแม้ว่า C ++ จะไม่แนะนำให้สร้างวัตถุใหม่ในทันทีmallocและfreeมีราคาแพงมากทั้งในพื้นที่หน่วยความจำและรอบ

นอกเหนือจากการใช้ Google ข้อมูลอ้างอิงต่อไปนี้สามารถใช้ได้คลิกที่นี่


8

ในทางทฤษฎีแล้วคอมไพเลอร์ใด ๆ ที่สามารถใช้งานชุดประกอบ AVR ได้ (ข้อ จำกัด โมดูโลเกี่ยวกับขนาดรหัส, การใช้งานแรม ฯลฯ )

มีแบ็กเอนด์ AVR อยู่สำหรับทั้งLLVMและ GCCดังนั้นในทางทฤษฎีด้วยความพยายามภาษาส่วนใหญ่ที่รองรับโดย LLVM และ GCC ของ Front-End นั้นสามารถรวบรวมกับ AVR ได้ คำถามใหญ่ก็คือการสนับสนุนห้องสมุด ฯลฯ

ไม่น้อยไปกว่านี้คือตัวเลือกแปลก ๆ สำหรับวิญญาณของคำถามแทนที่จะเป็นตัวอักษร [1]

  • AMForth , ภาษาถิ่นที่สี่สามารถกระพริบบน Arduino
  • AVR-Ada : Adaสำหรับไมโครคอนโทรลเลอร์ AVR
  • พื้นฐาน : นำ Goto กลับคืนมา!

โอ้และคุณสามารถเขียนชุดประกอบ AVRดิบ!

[1] - ฉันยังไม่ได้ลองเลย!


2

นอกจากนี้ยังมีบางคนที่ทำงานกับระบบที่ใช้Javascript node.js สิ่งหนึ่งที่มีอยู่แล้วต่อสาธารณชนคือEspruinoและอีกอันคือTesselซึ่งจะเปิดตัวในฤดูใบไม้ผลิ 2014


1

เนื่องจาก avr-g ++ ควรสนับสนุนการสร้าง C / C ++ มาตรฐานทั้งหมดจึงเป็นไปได้ที่โค้ดในชุดประกอบแบบอินไลน์ ข้อมูลเพิ่มเติมเกี่ยวกับฟอรัม arduino.cc นี้


แอสเซมบลีแบบอินไลน์ไม่ได้เป็นส่วนหนึ่งของมาตรฐาน C / C ++ แต่ gcc และคอมไพเลอร์ microsoft c สนับสนุนมันแม้ว่าจะเข้ากันไม่ได้
tbodt

จริงและทำเช่นนั้น avr_gcc
Faux_Clef

ไม่มีอะไรเต้นเขียนรหัสปฏิบัติการในฐานสิบหกต่อไป
Faux_Clef

1

ฉันประหลาดใจที่ไม่มีใครพูดถึงAVR Assembly !

แอสเซมบลีมักไม่คิดว่าจะเป็นสิ่งที่น่าสนใจที่สุดหรือแม้แต่วิธีการเขียนโปรแกรมที่ง่าย แต่ก็เป็นไปได้ 100% กับ Arduino พื้นฐานของ AVR ทั้งหมด บอร์ด SAM จะไม่ทำงานกับรสชาตินี้ แต่ก็ยังเป็นไปได้ที่จะใช้การประกอบในการเขียนโปรแกรมของพวกเขา

บอร์ด Arduino ทั้งหมด (ณ วันที่โพสต์) สนับสนุนการเขียนโปรแกรมประกอบผ่านAtmel Studio , SDK ที่สร้างขึ้นสำหรับชิปที่ใช้ Atmel

แอสเซมบลีได้รับการสนับสนุนอย่างไร้เดียงสาโดยอุปกรณ์ Atmel ทั้งหมดและไม่ต้องการบูตโหลดเดอร์เพื่อให้ทำงานได้ดังนั้นโปรแกรมทั้งหมดจึงเป็นแบบเรียลไทม์


2
โปรดทราบว่าชุดประกอบได้รับการสนับสนุนโดย gchain toolchain ซึ่งรวมอยู่ในการติดตั้ง Arduino IDE
Edgar Bonet

@EdgarBonet ให้ถูกต้องซึ่งเป็นเหตุผลว่าทำไมการ__asm__("Assembly code here")เพิ่มแอสเซมบลีในบรรทัดไปยังร่างใด ๆ สำหรับโปรแกรมส่วนใหญ่นี่เป็นความคิดที่ไม่ดีอย่างไรก็ตามเนื่องจากเป็นการยากที่จะบรรลุความเป็นอิสระของแพลตฟอร์มด้วยวิธีนี้
tuskiomi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.