4 คะแนน โดย GN⁺ 2024-09-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การปรับแต่งการบูต 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 ความคิดเห็น

 
GN⁺ 2024-09-02
ความคิดเห็นใน Hacker News
  • ปัญหาเรื่องพลังงานของตระกูล rpi เป็นจุดอ่อน คาดว่า pico 2 รุ่นใหม่จะช่วยปรับปรุงเรื่องนี้ได้

    • เคยใช้ Google Coral mini ทำกล้อง แต่รองรับ HQ camera ได้ไม่ดีนัก
    • ระบบนิเวศของ rpi มีความสมบูรณ์มากกว่า และความพร้อมใช้งานในอนาคตก็น่าเชื่อถือกว่า
    • ทำกล้องเวอร์ชันถัดไปด้วย rpi และใช้แบตเตอรี่ที่ใหญ่ขึ้น
    • กำลังหาวิธีจัดการ Coral mini และกล้องที่เหลืออยู่
  • สงสัยว่าทำไม custom kernel ถึงออกมาช้า

    • ถ้าต้องการปรับแต่งให้เหมาะที่สุด การใช้ LFS หรือดิสโทรแบบ source-based น่าจะดีกว่า
    • สงสัยว่าจะปรับแต่ง EFI/BIOS ได้หรือไม่
    • เวลา boot บนเดสก์ท็อป Arch Linux ใช้เวลานานมาก
  • สงสัยว่าการปิด CPU turbo เป็นตัวเลือกที่ไม่ดีในการลดการใช้พลังงานหรือไม่

    • เมื่อความถี่สัญญาณนาฬิกาเพิ่มขึ้น การใช้พลังงานจะเพิ่มขึ้นเป็นกำลังสอง
    • ต้องวัดความต่างของพลังงานก่อนถึงจะรู้ว่าการเร่ง clock boost คุ้มค่าหรือไม่
    • ถ้า CPU ของ Pi ให้ข้อมูลการใช้พลังงานแบบละเอียดได้ก็น่าจะดี
  • สงสัยว่าสามารถใช้คอร์อื่นได้หรือไม่ และการถ่ายภาพแล้วส่งขึ้นคลาวด์จำเป็นต้องใช้ Linux หรือเปล่า

    • สงสัยเกี่ยวกับวิธีทำงานนี้ให้เสร็จด้วยงบประมาณต่ำที่สุด
    • เป็นบทอ่านที่น่าสนใจ
  • ขอแนะนำบทความดี 2 ชิ้นเกี่ยวกับการลดเวลา boot ของ Pi

  • ถ้าชอบระบบนิเวศของ Rasp Pi ก็น่าลอง Pi Pico W

  • เวลา boot ของ Linux distro โดยทั่วไปช้า

    • โดยเฉพาะบนฮาร์ดแวร์ที่ไม่แรงจะยิ่งช้า
    • เคยเจอปัญหาคล้ายกันบน MQ-Pro SBC ด้วย
    • รู้สึกได้แม้บนโน้ตบุ๊ก (ยกเว้น Macbooks)
  • ควรรักษาสถานะ boot ไว้และใช้ไมโครคอนโทรลเลอร์พลังงานต่ำ

    • 105mA ไม่ใช่อัตราการใช้พลังงานที่เหมาะสมนัก
  • คิดว่า Circle น่าจะบูตได้เร็วกว่าด้วย kernel แต่ไม่รองรับกล้อง MIPI

  • เคยพยายามทำกล้องติดตามสัตว์อัจฉริยะด้วย Pi

    • เวลาเริ่มต้นระบบเป็นเรื่องสำคัญ
    • การลดการใช้พลังงานเป็นสิ่งที่ดีมาก