ทางเทคนิค Firmware เป็นเพียง Subset ของ Software เนื่องจาก Software ครอบคลุมทุกชิ้นของโค้ดที่มีประโยชน์ แต่ในทางปฏิบัติ คำว่า Software หมายถึงคลาสโปรแกรมที่ต่างกันมาก
โดยทั่วไป Firmware คือโค้ด Low-level ที่เชื่อมต่อกับ Hardware โดยตรง โปรแกรมที่ทำงานบน Layer นี้คือ Software หากสับสน ลองดูลึกขึ้น
ประเภทของ Software ที่หลากหลาย
ปัญหาของคำว่า Software คือกว้างเกินไป ชุดคำสั่งใดๆ ที่ควบคุมคอมพิวเตอร์ (หรืออุปกรณ์อิเล็กทรอนิกส์) ถือเป็น Software
สมัยแรกของคอมพิวเตอร์ไม่ใช่ปัญหา เพราะโปรแกรมทั้งหมดเขียนใน Assembly เชื่อมต่อ Hardware โดยตรง แต่วันนี้อุปกรณ์รันบน Layer ของโค้ดหลายชั้น ผู้ใช้สัมผัสเฉพาะโปรแกรมชั้นบนสุด
เรียกว่า Application Software ประเภทโปรแกรมที่ใช้งานง่าย รวมทุกแอปและ Utilities ที่ใช้บน PC เช่น Browser, Word Editor ด้านล่างคือ Operating System จัดการ Low-level details เช่น Rendering visuals จัดการ Input
คนส่วนใหญ่คิดว่าจบแค่นี้ แต่ OS ไม่ได้สื่อสารกับ Hardware โดยตรง ยังมี Layer อีกชั้นใต้ OS ให้ System software เข้าถึง Hardware functions ได้ง่าย และนั่นคือ Firmware
Firmware: ชั้นฐานของ Software
ในภาษา High-level การแสดงรูปภาพบนหน้าจอคือคำสั่งง่ายๆ แต่ที่ใดที่หนึ่งในคอมพิวเตอร์ มีโค้ดรับผิดชอบแปลงคำสั่งนั้นเป็น Processor instructions จริง
Firmware เป็นตัวเชื่อม Hardware และ Software ให้นักพัฒนาใช้ความสามารถของอุปกรณ์ผ่าน Programming interface ที่เรียบง่าย แทน CPU-specific instructions สำหรับคอมพิวเตอร์ Firmware นี้คือ BIOS ที่เข้าถึงได้แม้ไม่มี OS
ในอุปกรณ์อิเล็กทรอนิกส์ง่ายๆ เช่น Remote TV หรือ Router Firmware ทำหน้าที่เป็น OS ด้วย เครื่องเหล่านี้ไม่ได้ออกแบบให้ติดตั้ง Application software ภายนอกเหมือน PC จึงพึ่งพา Firmware ทำทุกงานที่จำเป็น
Firmware ติดตั้งบนอุปกรณ์อย่างไร?
ไม่มีอุปกรณ์อิเล็กทรอนิกส์ไหนใช้งานได้โดยไม่มี Firmware นี่คือเหตุผลที่ทุก Component มาพร้อม Firmware ติดตั้งจากโรงงาน
แม้บนคอมพิวเตอร์ โปรแกรมนี้เก็บอยู่บน Flash chip เฉพาะบน Motherboard ไม่ใช่ Hard drive ทำให้บูทได้และตั้งค่า Hardware โดยไม่ต้องมี OS
การอัปเดต Firmware ไม่ง่ายและไม่จำเป็นบนอุปกรณ์ส่วนใหญ่ เนื่องจากเป็นโค้ดควบคุมพื้นฐาน การทำผิดพลาดอาจทำให้ Hardware ไม่ใช้งานได้ คอมพิวเตอร์เป็นข้อยกเว้น อนุญาตให้อัปเกรด BIOS โดยการ Flash chip
Firmware vs Software: เปรียบเทียบแบบรวดเร็ว
| Firmware | Software | |
|---|---|---|
| คำอธิบาย | โค้ดจำเป็นควบคุม Hardware โดยตรง | โปรแกรมเสริมใช้ Firmware ทำงานซับซ้อน |
| ที่เก็บ | Chip เฉพาะบนอุปกรณ์ | Hard disk memory |
| ที่มา | ติดตั้งจากโรงงาน | ติดตั้ง/ตั้งค่าโดยผู้ใช้ได้ |
| Layer | ชั้นต่ำสุด รองรับ OS และ Software อื่นๆ | ชั้นสูงกว่า พึ่งพา Firmware ด้านล่างสำหรับ Hardware abstraction |
| อุปกรณ์ง่าย | มักเป็นโปรแกรมควบคุมเพียงตัวเดียว | ไม่ทำงานได้โดยไม่มี Firmware |
| Hardware Specific | เฉพาะ Architecture ต่างกัน ไม่สามารถสลับได้ | Hardware independent OS ทำงานเหมือนกันบน Processor families ต่างๆ แอปมัก OS-specific |
| การอัปเดต | นานมากหรือไม่มี ไม่สามารถ Uninstall | อัปเกรดและลบได้ง่าย |
Firmware แตกต่างจาก Software อย่างไร?
Hardware และ Software มักถูกเรียกว่า 2 ส่วนประกอบของอุปกรณ์อิเล็กทรอนิกส์ แต่ภาพไม่สมบูรณ์ OS และ Applications ไม่สามารถสื่อสารกับ Hardware โดยตรง ต้องมี Layer โค้ดเฉพาะทางซึ่งเป็น Firmware
Firmware ประกอบด้วย Architecture-specific instructions ควบคุม Hardware โดยตรง และในอุปกรณ์ง่าย ทำหน้าที่เป็น Basic OS ในอุปกรณ์อื่น Firmware ให้ Abstract interface แทน Software ทำให้ OS ใช้ Hardware ได้โดยไม่ต้องกังวล Architecture ด้านล่าง
เนื่องจากลักษณะจำเป็น Firmware มา Pre-loaded บน Flash chip บน Motherboard ไม่ขึ้นกับ Software ที่เขียนบน Disk อัปเดตได้เฉพาะกระบวนการเฉพาะ ("Flash") ไม่เหมือนการติดตั้ง Software packages ทั่วไป
อุปกรณ์อิเล็กทรอนิกส์และ Peripheral ทุกตัวมี Firmware ของตัวเอง กล้องดิจิตอล สมาร์ทโฟน SSD แม้ USB drives - หากมี Hardware ที่ต้องควบคุม จะมี Firmware จัดการอยู่