การติดตั้งเฟิร์มแวร์ตัวอื่นบน Arduino


12

เป็นไปได้หรือไม่ที่จะอัพเกรดเฟิร์มแวร์บน Arduino เพื่อให้สามารถทำสิ่งต่าง ๆ ได้มากขึ้นเช่นการเปลี่ยนแปลงการปลดปล่อย / การโอเวอร์โฟลว์เพื่อให้พลังการประมวลผลที่มากขึ้น ในการทำเช่นนี้คุณจะต้องกะพริบชิปตัวเองมากที่สุดดังนั้นวิธีการที่จะประสบความสำเร็จ?


2
ฟังก์ชั่นใหม่ส่วนใหญ่มีให้โดยห้องสมุดและการเขียนโปรแกรม คุณกำลังพูดถึง "สิ่งอื่น ๆ อีกมากมาย"
TheDoctor

สิ่งที่หมอพูดคุณหมายถึงอะไรอีก นอกจากนี้คุณหมายถึงอะไรโดย "เฟิร์มแวร์"? ซอฟต์แวร์ / ระบบปฏิบัติการของออนบอร์ด?
hichris123

ฉันควรลบคำถามออก
ไหม

@JVarhol ถ้าคุณสามารถทำให้ชัดเจนยิ่งขึ้น nah ให้มัน เพียงอธิบายให้เราทราบว่าคุณกำลังคิดอะไรอยู่ ...
hichris123

ฉันรู้ว่าคุณสามารถติดตั้งเฟิร์มแวร์ใหม่บนชิปอนุกรม USB เพื่อให้สามารถเลียนแบบแป้นพิมพ์
TheDoctor

คำตอบ:


7

เพื่อตอบคำถามของคุณเกี่ยวกับ "เฟิร์มแวร์" ใน ATmega328p MCU ที่ใช้ในบอร์ด Arduino ส่วนใหญ่:

ไม่มีเฟิร์มแวร์ใน ATmega เลยนอกจาก bootloader โปรแกรมที่คุณเขียนกำลังทำงานโดยตรงบนฮาร์ดแวร์

มีบาง "ฟิวส์" การตั้งค่าที่ถูกกำหนดด้วยเป็นโปรแกรมเมอร์ ISP อย่างไรก็ตามมีเพียง 24 ของพวกเขา (สามไบต์) และพวกเขาส่วนใหญ่เกี่ยวข้องกับการกำหนดค่าระดับต่ำและไม่ใช่สิ่งที่ฉันคิดว่าคุณถาม:
ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้ยังมีBootloaderซึ่งเป็นโปรแกรมขนาดเล็กที่อยู่ในเซ็กเมนต์แยกต่างหากของหน่วยความจำโปรแกรมของ MCU และช่วยให้สามารถอัปเดตตัวเองเมื่อเริ่มต้น (ซึ่งเป็นวิธีการตั้งโปรแกรม Arduino ทั้งหมด) อย่างไรก็ตามมันจะทำงานในช่วงเวลาสั้น ๆ เท่านั้นเมื่อเริ่มต้นและจะถูกลบออกจากหน่วยความจำอย่างสมบูรณ์หลังจากที่ MCU ได้กระโดดไปที่โปรแกรมหลัก

สุดท้ายมี MCU เสริม (ATmega16U2 / 8U2) บนบอร์ด Arduino ส่วนใหญ่ที่ใช้เป็นอินเตอร์เฟส USB แบบอนุกรมที่สามารถอัปเดตให้ทำงานแตกต่างกัน (เช่นเลียนแบบแป้นพิมพ์ / เมาส์) แต่จริงๆแล้วนี่ไม่ใช่การเปลี่ยนแปลง กับตัวประมวลผลหลักดังนั้นไม่ว่าจะนับเป็น "การติดตั้งเฟิร์มแวร์ที่แตกต่าง" ขึ้นอยู่กับวิธีที่คุณกำหนด arduino

จริงๆแล้วฉันขอแนะนำให้อ่านแผ่นข้อมูล ATmega328Pอีกครั้ง นี่คือเอกสารประกอบสำหรับ MCU ที่โดยพื้นฐานแล้วเรียกว่า "Arduino" ควรแก้ไขสิ่งที่ดูเหมือนจะเข้าใจผิด


5

โปรดสังเกตกราฟด้านล่างในส่วนที่เกี่ยวกับคุณ / ต่ำกว่าการแปลงอุปกรณ์สำหรับ F_CPU ที่แตกต่างกันแสดงถึงความสัมพันธ์ เป็นผลให้คุณพบว่าการทำงานของ Arduino ส่วนใหญ่ที่ 5V และอัตราสัญญาณนาฬิกาที่ 16MHz ในขณะที่มีตัวแปร 3.3V บางตัวที่ทำงานที่ 8MHz

Freq กับ Vcc

อย่างไรก็ตามไลบรารีหลักที่มาพร้อมกับ IDE มักมี # if เฉพาะสำหรับความเร็ว F_CPU ทั้ง 8 และ 16 เมกะเฮิรตซ์ไม่ใช่การใช้สูตรในสถานที่ส่วนใหญ่

ดังนั้นจึงเป็นไปได้ที่จะทำสิ่งที่คุณถาม อย่างไรก็ตามคุณจะพบข้อ จำกัด ของไลบรารีหลักที่มีผลกระทบต่อ การเปรียบเทียบอัตราส่วนค่าใช้จ่ายเทียบกับผลประโยชน์ตามความตั้งใจ และจากนั้นมีแนวโน้มว่าจะปล่อยให้ Stock IDE และไลบรารีหลักเป็นเมธอด makefile เพิ่มเติม


เห็นได้ชัดว่ามันสามารถโอเวอร์คล็อกที่ 20 mHz
TheDoctor

@TheDoctor - นั่นไม่ใช่การโอเวอร์คล็อก ATmega328p จัดอยู่ในระดับ 20 Mhz Arduinos เป็นจริงunderclockedถึง 16 Mhz
Connor Wolf

@FakeName ใช่ฉันหมายความว่าคุณสามารถปรับเปลี่ยนบอร์ด Arduino จะมีแร่ nessecary เพื่อถังที่ 20 เมกะเฮิรตซ์
TheDoctor

โอ้อีกด้านหนึ่ง โดยทั่วไปคุณสามารถเกินพื้นที่ปฏิบัติการปลอดภัยโดยไม่มีปัญหาที่สำคัญ ฉันมีบอร์ดหลายบอร์ดที่ใช้ 16 Mhz พร้อมราง 3.3V ที่ไม่มีปัญหา พวกเขาอาจมีปัญหาด้านเสถียรภาพที่อุณหภูมิสูง แต่ดูเหมือนว่าจะทำงานได้ดีที่อุณหภูมิห้อง
Connor Wolf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.