ฉันสามารถตั้งโปรแกรม Arduino โดยใช้ภาษาการเขียนโปรแกรมอื่นที่ไม่ใช่ C ++ ได้ไหม? ถ้าใช่ภาษาการเขียนโปรแกรมใด ฉันต้องใช้ซอฟต์แวร์อะไรในการรวบรวมและโหลดรหัสของฉันลงบน Arduino
ฉันสามารถตั้งโปรแกรม Arduino โดยใช้ภาษาการเขียนโปรแกรมอื่นที่ไม่ใช่ C ++ ได้ไหม? ถ้าใช่ภาษาการเขียนโปรแกรมใด ฉันต้องใช้ซอฟต์แวร์อะไรในการรวบรวมและโหลดรหัสของฉันลงบน Arduino
คำตอบ:
บางคนที่รู้จักกันทั่วไป:
ในทางทฤษฎีคุณควรที่จะขยาย avr-gcc เพื่อรองรับภาษาอื่น ๆ แม้ว่านี่จะไม่ใช่งานเล็ก ๆ ฉันควรคำเตือนที่สนับสนุนภาษาอื่นนอกเหนือจาก C มักจะมาพร้อมกับข้อ จำกัด ที่ค่อนข้างหนักในองค์ประกอบภาษา - ตัวอย่างเช่นแม้ว่า C ++ จะไม่แนะนำให้สร้างวัตถุใหม่ในทันทีmalloc
และfree
มีราคาแพงมากทั้งในพื้นที่หน่วยความจำและรอบ
นอกเหนือจากการใช้ Google ข้อมูลอ้างอิงต่อไปนี้สามารถใช้ได้คลิกที่นี่
ในทางทฤษฎีแล้วคอมไพเลอร์ใด ๆ ที่สามารถใช้งานชุดประกอบ AVR ได้ (ข้อ จำกัด โมดูโลเกี่ยวกับขนาดรหัส, การใช้งานแรม ฯลฯ )
มีแบ็กเอนด์ AVR อยู่สำหรับทั้งLLVMและ GCCดังนั้นในทางทฤษฎีด้วยความพยายามภาษาส่วนใหญ่ที่รองรับโดย LLVM และ GCC ของ Front-End นั้นสามารถรวบรวมกับ AVR ได้ คำถามใหญ่ก็คือการสนับสนุนห้องสมุด ฯลฯ
ไม่น้อยไปกว่านี้คือตัวเลือกแปลก ๆ สำหรับวิญญาณของคำถามแทนที่จะเป็นตัวอักษร [1]
โอ้และคุณสามารถเขียนชุดประกอบ AVRดิบ!
[1] - ฉันยังไม่ได้ลองเลย!
เนื่องจาก avr-g ++ ควรสนับสนุนการสร้าง C / C ++ มาตรฐานทั้งหมดจึงเป็นไปได้ที่โค้ดในชุดประกอบแบบอินไลน์ ข้อมูลเพิ่มเติมเกี่ยวกับฟอรัม arduino.cc นี้
ฉันประหลาดใจที่ไม่มีใครพูดถึงAVR Assembly !
แอสเซมบลีมักไม่คิดว่าจะเป็นสิ่งที่น่าสนใจที่สุดหรือแม้แต่วิธีการเขียนโปรแกรมที่ง่าย แต่ก็เป็นไปได้ 100% กับ Arduino พื้นฐานของ AVR ทั้งหมด บอร์ด SAM จะไม่ทำงานกับรสชาตินี้ แต่ก็ยังเป็นไปได้ที่จะใช้การประกอบในการเขียนโปรแกรมของพวกเขา
บอร์ด Arduino ทั้งหมด (ณ วันที่โพสต์) สนับสนุนการเขียนโปรแกรมประกอบผ่านAtmel Studio , SDK ที่สร้างขึ้นสำหรับชิปที่ใช้ Atmel
แอสเซมบลีได้รับการสนับสนุนอย่างไร้เดียงสาโดยอุปกรณ์ Atmel ทั้งหมดและไม่ต้องการบูตโหลดเดอร์เพื่อให้ทำงานได้ดังนั้นโปรแกรมทั้งหมดจึงเป็นแบบเรียลไทม์
__asm__("Assembly code here")
เพิ่มแอสเซมบลีในบรรทัดไปยังร่างใด ๆ สำหรับโปรแกรมส่วนใหญ่นี่เป็นความคิดที่ไม่ดีอย่างไรก็ตามเนื่องจากเป็นการยากที่จะบรรลุความเป็นอิสระของแพลตฟอร์มด้วยวิธีนี้