เป็นไปได้หรือไม่ที่จะอัพเกรดเฟิร์มแวร์บน Arduino เพื่อให้สามารถทำสิ่งต่าง ๆ ได้มากขึ้นเช่นการเปลี่ยนแปลงการปลดปล่อย / การโอเวอร์โฟลว์เพื่อให้พลังการประมวลผลที่มากขึ้น ในการทำเช่นนี้คุณจะต้องกะพริบชิปตัวเองมากที่สุดดังนั้นวิธีการที่จะประสบความสำเร็จ?
เป็นไปได้หรือไม่ที่จะอัพเกรดเฟิร์มแวร์บน Arduino เพื่อให้สามารถทำสิ่งต่าง ๆ ได้มากขึ้นเช่นการเปลี่ยนแปลงการปลดปล่อย / การโอเวอร์โฟลว์เพื่อให้พลังการประมวลผลที่มากขึ้น ในการทำเช่นนี้คุณจะต้องกะพริบชิปตัวเองมากที่สุดดังนั้นวิธีการที่จะประสบความสำเร็จ?
คำตอบ:
เพื่อตอบคำถามของคุณเกี่ยวกับ "เฟิร์มแวร์" ใน ATmega328p MCU ที่ใช้ในบอร์ด Arduino ส่วนใหญ่:
ไม่มีเฟิร์มแวร์ใน ATmega เลยนอกจาก bootloader โปรแกรมที่คุณเขียนกำลังทำงานโดยตรงบนฮาร์ดแวร์
มีบาง "ฟิวส์" การตั้งค่าที่ถูกกำหนดด้วยเป็นโปรแกรมเมอร์ ISP อย่างไรก็ตามมีเพียง 24 ของพวกเขา (สามไบต์) และพวกเขาส่วนใหญ่เกี่ยวข้องกับการกำหนดค่าระดับต่ำและไม่ใช่สิ่งที่ฉันคิดว่าคุณถาม:
นอกจากนี้ยังมีBootloaderซึ่งเป็นโปรแกรมขนาดเล็กที่อยู่ในเซ็กเมนต์แยกต่างหากของหน่วยความจำโปรแกรมของ MCU และช่วยให้สามารถอัปเดตตัวเองเมื่อเริ่มต้น (ซึ่งเป็นวิธีการตั้งโปรแกรม Arduino ทั้งหมด) อย่างไรก็ตามมันจะทำงานในช่วงเวลาสั้น ๆ เท่านั้นเมื่อเริ่มต้นและจะถูกลบออกจากหน่วยความจำอย่างสมบูรณ์หลังจากที่ MCU ได้กระโดดไปที่โปรแกรมหลัก
สุดท้ายมี MCU เสริม (ATmega16U2 / 8U2) บนบอร์ด Arduino ส่วนใหญ่ที่ใช้เป็นอินเตอร์เฟส USB แบบอนุกรมที่สามารถอัปเดตให้ทำงานแตกต่างกัน (เช่นเลียนแบบแป้นพิมพ์ / เมาส์) แต่จริงๆแล้วนี่ไม่ใช่การเปลี่ยนแปลง กับตัวประมวลผลหลักดังนั้นไม่ว่าจะนับเป็น "การติดตั้งเฟิร์มแวร์ที่แตกต่าง" ขึ้นอยู่กับวิธีที่คุณกำหนด arduino
จริงๆแล้วฉันขอแนะนำให้อ่านแผ่นข้อมูล ATmega328Pอีกครั้ง นี่คือเอกสารประกอบสำหรับ MCU ที่โดยพื้นฐานแล้วเรียกว่า "Arduino" ควรแก้ไขสิ่งที่ดูเหมือนจะเข้าใจผิด
โปรดสังเกตกราฟด้านล่างในส่วนที่เกี่ยวกับคุณ / ต่ำกว่าการแปลงอุปกรณ์สำหรับ F_CPU ที่แตกต่างกันแสดงถึงความสัมพันธ์ เป็นผลให้คุณพบว่าการทำงานของ Arduino ส่วนใหญ่ที่ 5V และอัตราสัญญาณนาฬิกาที่ 16MHz ในขณะที่มีตัวแปร 3.3V บางตัวที่ทำงานที่ 8MHz
อย่างไรก็ตามไลบรารีหลักที่มาพร้อมกับ IDE มักมี # if เฉพาะสำหรับความเร็ว F_CPU ทั้ง 8 และ 16 เมกะเฮิรตซ์ไม่ใช่การใช้สูตรในสถานที่ส่วนใหญ่
ดังนั้นจึงเป็นไปได้ที่จะทำสิ่งที่คุณถาม อย่างไรก็ตามคุณจะพบข้อ จำกัด ของไลบรารีหลักที่มีผลกระทบต่อ การเปรียบเทียบอัตราส่วนค่าใช้จ่ายเทียบกับผลประโยชน์ตามความตั้งใจ และจากนั้นมีแนวโน้มว่าจะปล่อยให้ Stock IDE และไลบรารีหลักเป็นเมธอด makefile เพิ่มเติม