การปรับแต่งการบูต Pi แบบสุดขีด
แรงจูงใจ
- โปรเจ็กต์ SolarCamPi เป็นโปรเจ็กต์สำหรับสร้างกล้อง WiFi พลังงานแสงอาทิตย์แบบออฟกริด
- ใช้ Raspberry Pi Zero 2 W เพื่อบูต Linux ถ่ายภาพ ตั้งค่าการเชื่อมต่อ WiFi แล้วปิดเครื่อง โดยทำซ้ำเป็นรอบ ๆ
- สำหรับอุปกรณ์พลังงานแสงอาทิตย์ พลังงานเป็นทรัพยากรที่มีค่า จึงสำคัญมากที่จะลดเวลาบูตเพื่อลดการใช้พลังงานให้น้อยที่สุด
การตั้งค่าฮาร์ดแวร์
- เมื่อต้องปรับแต่งกระบวนการบูตของระบบฝังตัว ระยะเวลาต่อรอบที่สั้นเป็นสิ่งสำคัญ
- มีเครื่องมือที่มีประโยชน์หลายอย่าง:
- Nordic Power Profiler Kit II
- USB-SD-Mux
- ตัวแปลง USB-UART
การตั้งค่าการวัด / ทดสอบ
- บนอิมเมจ Debian 12 (bookworm) arm64 Lite ได้แก้ไขไฟล์ /boot/firmware/cmdline.txt เพื่อใส่
init=/init.sh
- สคริปต์
init.sh จะสลับสถานะ GPIO4 แล้วบูตต่อไปตามปกติ
การลดกระแสไฟ
- ปิดใช้งาน HDMI: ลดการใช้กระแสจาก 136.7mA เหลือ 122.6mA
- ปิดใช้งานไฟ LED แสดงกิจกรรม: ประหยัดได้ 2mA
- ปิดใช้งานไฟ LED ของกล้อง: ลดแสงสะท้อนและประหยัดกระแสไฟ
- ปรับโหมดเทอร์โบ: ปิดใช้งานโหมดเทอร์โบเพื่อลดการใช้เหลือ 1.58As
การลดเวลา
- ปิดการ probing ของ HDMI ระหว่างการบูต: hardcode ข้อมูล EDID เพื่อประหยัดเวลา
- ปิดการ probing ของ HAT, PoE และ LCD: ลดเวลารอการตอบสนองของ I2C
- ปิดการ probing ของกล้องและจอแสดงผล: โหลดเซ็นเซอร์ IMX477 ด้วยตนเอง
- ปิดใช้งาน initramfs: ลดเวลาบูตจาก 5.38s เหลือ 4.47s
การโหลดเคอร์เนล
- การโหลดเคอร์เนลเป็นหนึ่งในงานที่ช้าที่สุด
- โอเวอร์คล็อกคอร์โปรเซสเซอร์ GPU: ลดเวลาโหลดเคอร์เนลลง 20%
- ย้ายระบบไปยังดิสทริบิวชัน Buildroot แบบกำหนดเอง: ลดขนาดเคอร์เนลและตัดฟีเจอร์ที่ไม่จำเป็นออก
ผลลัพธ์สุดท้าย
- สามารถบูตโปรแกรมใน Linux user space ได้ภายใน 3.5 วินาที
- การใช้พลังงานรวม: 0.364 As * 5.0 V = 1.82 Ws
- ลดการใช้พลังงานลงได้ 5 เท่าเมื่อเทียบกับ Debian แบบพื้นฐาน
สรุปโดย GN⁺
- บทความนี้อธิบายวิธีปรับแต่งเวลาบูตของ Raspberry Pi เพื่อลดการใช้พลังงาน
- มีประโยชน์มากในสภาพแวดล้อมที่พลังงานมีจำกัด เช่น อุปกรณ์ที่ใช้พลังงานแสงอาทิตย์
- โปรเจ็กต์ที่มีแนวคิดคล้ายกัน ได้แก่ OpenWRT, Tiny Core Linux เป็นต้น
- นำเสนอวิธีลดเวลาบูตหลายรูปแบบ จึงเป็นประโยชน์สำหรับผู้ที่สนใจการปรับแต่งระบบฝังตัว
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
ปัญหาเรื่องพลังงานของตระกูล rpi เป็นจุดอ่อน คาดว่า pico 2 รุ่นใหม่จะช่วยปรับปรุงเรื่องนี้ได้
สงสัยว่าทำไม custom kernel ถึงออกมาช้า
สงสัยว่าการปิด CPU turbo เป็นตัวเลือกที่ไม่ดีในการลดการใช้พลังงานหรือไม่
สงสัยว่าสามารถใช้คอร์อื่นได้หรือไม่ และการถ่ายภาพแล้วส่งขึ้นคลาวด์จำเป็นต้องใช้ Linux หรือเปล่า
ขอแนะนำบทความดี 2 ชิ้นเกี่ยวกับการลดเวลา boot ของ Pi
ถ้าชอบระบบนิเวศของ Rasp Pi ก็น่าลอง Pi Pico W
เวลา boot ของ Linux distro โดยทั่วไปช้า
ควรรักษาสถานะ boot ไว้และใช้ไมโครคอนโทรลเลอร์พลังงานต่ำ
คิดว่า Circle น่าจะบูตได้เร็วกว่าด้วย kernel แต่ไม่รองรับกล้อง MIPI
เคยพยายามทำกล้องติดตามสัตว์อัจฉริยะด้วย Pi