เป็นไปได้ไหมที่จะใช้ C ++ สำหรับการเข้ารหัส PICs?
ใช่มันเป็นไปได้แล้ว สำหรับ dsPIC มีคอมไพเลอร์ IAR Systems C ++ (แม้ว่าจะเก่ามากและไม่รองรับ)
อีกตัวเลือกหนึ่งคือใช้ตัวแปลง C ++ เป็น C ใช้ขั้นตอนที่สร้างไว้ล่วงหน้าแปลง C ++ เป็น C จากนั้นให้ C ที่น่ารังเกียจแก่คอมไพเลอร์ C ของคุณ ดูLLVMหรือคอมไพเลอร์ C ++ ของ Comeauซึ่งทั้งคู่ทำเช่นนั้น Comeau's มีราคาเพียง $ 50 แต่อาจต้องใช้ความพยายามเพื่อให้ toolchain ทั้งหมดและไลบรารีทำงานอย่างถูกต้อง
มีข้อ จำกัด ด้านฮาร์ดแวร์ใด ๆ ที่ทำให้เราไม่สามารถใช้ C ++ ได้หรือไม่?
คำตอบสั้น ๆ ไม่มีข้อ จำกัด ของฮาร์ดแวร์ คำตอบยาว ๆ C ++ สนับสนุนให้ใช้ฮีปและ / หรือสแต็คอย่างแน่นอนซึ่ง MCUs ขนาดเล็กที่มี RAM จำกัด จะต่อสู้กับ
ทำไมพวกเขาถึงต่อสู้กับกอง / กอง? ด้วยเหตุผลสองประการ: ก) MCU จำนวนมากมี RAM จำกัด ไม่เพียงพอสำหรับฮีปอย่างแน่นอนและแทบจะไม่เพียงพอสำหรับสแต็ก B) MCUs จำนวนมากไม่จัดการพอยน์เตอร์ได้ดีดังนั้นการใช้ตัวแปรบนสแต็คจะฆ่าประสิทธิภาพ
เมื่อมีคนถามเกี่ยวกับการใช้ C ++ ใน MCU ฉันคิดว่ามันเป็นสิ่งที่สร้างสรรค์เพื่อเปรียบเทียบ C ++ กับ C คำถามที่เหมือนกันคือถาม (และยังคง) ถามเกี่ยวกับ C ใน MCU ผู้คนเคยหยุดชะงักความคิด ภาษาระดับสูงบน 256 RAM RAM ไบต์? เป็นไปไม่ได้ แต่ตอนนี้เราทุกคนรู้ว่ามันเป็นไปได้ ฉันเขียน C สำหรับ PIC12 ไม่มีปัญหา. เป็นไปได้เพราะก) นักพัฒนาซอฟต์แวร์รู้ว่าพวกเขาจะต้องระมัดระวังนิดหน่อย: อย่าใช้ malloc () ฯลฯ และ B) คอมไพเลอร์ถูกเขียนโดยเฉพาะสำหรับ MCU คอมไพเลอร์จะต้องระมัดระวังเป็นพิเศษกับการจัดสรรหน่วยความจำมันจะไม่พยายามสร้างฮีปและอาจไม่สร้างสแต็ก คอมไพเลอร์ C บางตัวจะไม่ยอมให้คุณเขียนรหัสผู้เรียกซ้ำ (recursive) ซึ่งต้องการสแต็กอย่างแน่นอน
รู้ว่าเป็นไปได้ที่จะเขียน C สำหรับ MCU คำตอบเดียวกันนี้ใช้กับคำถามการเขียน C ++ บน MCU ตราบใดที่คอมไพเลอร์เข้าใจข้อ จำกัด ของอุปกรณ์เป้าหมายและผู้ใช้ก็เข้าใจภาษาด้วยเช่นกันก็ไม่มีปัญหา ใน C ++ คุณจ่ายเฉพาะสิ่งที่คุณใช้ เป็นไปได้อย่างสมบูรณ์ในการเขียน C ++ (พร้อมวัตถุและทุกสิ่ง) ที่สร้างเอาต์พุต asm ที่แน่นอนที่คุณจะได้ถ้าคุณใช้ C
ตอนนี้ PIC32s สามารถรับมือกับ C ++ ได้อย่างแน่นอน พวกเขามี RAM สูงสุด 64kB และขึ้นอยู่กับ MIPS core ซึ่งเป็นโปรเซสเซอร์ 32 บิตที่โตขึ้นอย่างเหมาะสม มันสามารถจัดการกับพอยน์เตอร์และสแต็กเช่นเดียวกับพีซี อันที่จริงมีพีซีที่ใช้ MIPS (หรืออย่างน้อยก็เคยมี)
น่าเศร้าที่มีภาษาซีพลัสพลัสอยู่รอบตัว แม้แต่ผู้เขียนโค้ดที่มีประสบการณ์มากก็ยังไม่รู้ว่าภาษาทำงานอย่างไร ดูคำตอบของฉันว่าทำไม C ++ จึงเหมาะสมกับซีพียูในตัว
ขนาดของไฟล์. hex ที่สร้างขึ้นและเวลาในการทำงานของโปรแกรมเพิ่มขึ้นเท่าใดเมื่อเราใช้ C ++ แทน C?
อย่างที่ฉันบอกไปแล้วอาจจะไม่มีความแตกต่าง Bjarne Stroustrup ทำการเปรียบเทียบคอมไพเลอร์ C / C ++ จำนวนมากเพื่อเปรียบเทียบเวลาและประสิทธิภาพของพื้นที่สำหรับการปฏิบัติงานจำนวนมาก ผลลัพธ์ที่แตกต่างกันอย่างกว้างขวาง ในบางกรณี C ++ ออกมาช้าลงและใหญ่ขึ้นบางกรณีช้าลงและเล็กลงหรือเร็วขึ้นและใหญ่ขึ้นและเร็วขึ้นและเล็กลง! ดังนั้นคำตอบสำหรับคำถามของคุณคือมันขึ้นอยู่กับคอมไพเลอร์เป็นหลัก แต่โดยทั่วไปแล้วมันไม่จำเป็นต้องสร้างความแตกต่างเลย สำหรับรายละเอียดเพิ่มเติมดูรายงานทางเทคนิคเกี่ยวกับประสิทธิภาพของ C ++
มีแผนในอนาคตหรือการพัฒนาอย่างต่อเนื่องในเรื่องนี้หรือไม่?
ที่ฉันไม่รู้ ฉันรู้ว่าคอมไพเลอร์ Microchip C32 เปิดแหล่งที่มาและคุณสามารถดาวน์โหลดแหล่งที่มา ฉันรู้ว่าคนที่ฉันทำงานด้วยพบคำแนะนำออนไลน์จริง ๆ และจัดการเพื่อให้คอมไพเลอร์รวบรวมรหัส C ++ แต่เขาออกจาก บริษัท ก่อนที่เขาจะสามารถตั้งค่าให้ฉันด้วยโซ่เครื่องมือที่เหมาะสม
UPDATE
ขณะนี้ Microchip มีคอมไพเลอร์ C ++สำหรับ PIC32 ที่ฝังอยู่