การเพิ่มประสิทธิภาพ
การเขียนโปรแกรมระดับต่ำสำหรับระบบฝังตัวค่อนข้างแตกต่างจากการเขียนโปรแกรมสำหรับอุปกรณ์ที่ใช้งานทั่วไปเช่นคอมพิวเตอร์และโทรศัพท์มือถือ ประสิทธิภาพ (ในแง่ของความเร็วและพื้นที่) มีความสำคัญมากกว่าเพราะทรัพยากรอยู่ในระดับพรีเมี่ยม นั่นหมายความว่าสิ่งแรกที่ต้องทำหากคุณไม่มีที่ว่างในการดูว่าส่วนใดของรหัสที่คุณสามารถเพิ่มประสิทธิภาพ
ในแง่ของการลดการใช้พื้นที่โปรแกรม (Flash) ขนาดของรหัสอาจทำได้ยากหากคุณไม่มีประสบการณ์หรือหากคุณคุ้นเคยกับการเขียนโปรแกรมสำหรับคอมพิวเตอร์เดสก์ท็อปมากขึ้นซึ่งไม่ต้องการทักษะนั้น โชคไม่ดีที่ไม่มี 'bullet เวทมนตร์' ซึ่งจะทำงานได้ในทุกสถานการณ์แม้ว่ามันจะช่วยให้คุณพิจารณาอย่างจริงจังว่าร่างของคุณต้องการอะไร หากไม่จำเป็นต้องใช้คุณสมบัติให้นำออกมา
บางครั้งการระบุว่าส่วนต่าง ๆ ของรหัสของคุณเหมือนกัน (หรือคล้ายกันมาก) เป็นประโยชน์หรือไม่ คุณอาจรวมเข้ากับฟังก์ชั่นที่ใช้ซ้ำได้ซึ่งสามารถเรียกได้จากหลาย ๆ ที่ อย่างไรก็ตามทราบว่าบางครั้งพยายามที่จะทำให้รหัสเกินไปนำมาใช้ใหม่จริงจบลงด้วยการทำให้มันมากขึ้นอย่างละเอียด มันเป็นเรื่องยากที่จะจัดการให้สมดุลซึ่งมีแนวโน้มว่าจะมาพร้อมกับการฝึกฝน ใช้เวลาดูว่าการเปลี่ยนรหัสมีผลต่อคอมไพเลอร์เอาต์พุตอย่างไรบ้าง
การเพิ่มประสิทธิภาพรันไทม์ data (SRAM) มีแนวโน้มที่จะง่ายขึ้นเล็กน้อยเมื่อคุณคุ้นเคย ข้อผิดพลาดทั่วไปสำหรับโปรแกรมเมอร์มือใหม่กำลังใช้ข้อมูลทั่วโลกมากเกินไป สิ่งใดก็ตามที่ประกาศในขอบเขตทั่วโลกจะมีอยู่ตลอดทั้งร่างและไม่จำเป็นเสมอไป หากมีการใช้ตัวแปรภายในฟังก์ชั่นเดียวเท่านั้นและไม่จำเป็นต้องคงอยู่ระหว่างการเรียกดังนั้นให้เป็นตัวแปรโลคอล หากค่าจำเป็นต้องถูกแชร์ระหว่างฟังก์ชั่นให้พิจารณาว่าคุณสามารถส่งเป็นพารามิเตอร์แทนที่จะทำให้เป็นค่าส่วนกลางหรือไม่ ด้วยวิธีนี้คุณจะใช้ SRAM สำหรับตัวแปรเหล่านั้นเมื่อคุณต้องการเท่านั้น
นักฆ่าคนอื่นสำหรับการใช้งาน SRAM คือการประมวลผลข้อความ (เช่นใช้String
คลาส) โดยทั่วไปคุณควรหลีกเลี่ยงการใช้งาน String หากเป็นไปได้ พวกเขาเป็นหมูหน่วยความจำขนาดใหญ่ ตัวอย่างเช่นหากคุณกำลังส่งข้อความจำนวนมากไปยังซีเรียลให้ใช้การโทรหลายสายSerial.print()
แทนการใช้การต่อข้อความแบบสตริง และพยายามลดจำนวนตัวอักษรสตริงในรหัสของคุณถ้าเป็นไปได้
หลีกเลี่ยงการเรียกซ้ำหากเป็นไปได้เช่นกัน ทุกครั้งที่มีการโทรซ้ำจะทำให้ระดับสแต็กลึกยิ่งขึ้น refactor ฟังก์ชั่นวนซ้ำของคุณเพื่อทำซ้ำแทน
ใช้ EEPROM
EEPROM ใช้สำหรับการจัดเก็บข้อมูลระยะยาวที่เปลี่ยนแปลงในบางครั้งเท่านั้น หากคุณต้องการใช้รายการขนาดใหญ่หรือตารางค้นหาข้อมูลคงที่ให้พิจารณาจัดเก็บไว้ใน EEPROM ล่วงหน้าและดึงสิ่งที่คุณต้องการเมื่อจำเป็นเท่านั้น
เห็นได้ชัดว่า EEPROM มีขนาดและความเร็วค่อนข้าง จำกัด และมีจำนวนรอบการเขียน จำกัด ไม่ใช่วิธีแก้ปัญหาข้อ จำกัด ด้านข้อมูลที่ยอดเยี่ยม แต่อาจเพียงพอที่จะแบ่งเบาภาระใน Flash หรือ SRAM อาจเป็นไปได้ที่จะเชื่อมต่อกับที่จัดเก็บข้อมูลภายนอกที่คล้ายกันเช่นการ์ด SD
การขยายตัว
หากคุณได้ใช้ตัวเลือกอื่นหมดแล้วการขยายตัวอาจเป็นไปได้ น่าเสียดายที่การขยายหน่วยความจำแฟลชเพื่อเพิ่มพื้นที่โปรแกรมไม่สามารถทำได้ อย่างไรก็ตามมันเป็นไปได้ที่จะขยาย SRAM ซึ่งหมายความว่าคุณสามารถ refactor ร่างของคุณเพื่อลดขนาดรหัสด้วยค่าใช้จ่ายในการเพิ่มขนาดข้อมูล
การได้รับ SRAM ที่มากขึ้นนั้นค่อนข้างตรงไปตรงมา ทางเลือกหนึ่งคือใช้ชิป23K256หนึ่งตัวหรือมากกว่า พวกเขาเข้าถึงได้ผ่าน SPI และมีห้องสมุด SpiRAMเพื่อช่วยให้คุณใช้งานได้ เพียงแค่ระวังว่าพวกเขาทำงานที่ 3.3V ไม่ใช่ 5V!
หากคุณกำลังใช้เมกะคุณอีกทางเลือกหนึ่งอาจจะได้รับโล่ขยายตัว SRAM จากลากรองจ์จุดหรือวงจรที่มีความทนทาน