Firmware

Trong kĩ thuật điện toán và khoa học máy tính, firmware là một chương trình máy tính đặc biệt để điều khiển cấp thấp nhiều thiết bị điện tử. Các ví dụ điển hình về firmware có thể thấy từ những sản phẩm cho người dùng cuối như bộ điều khiển từ xa hoặc máy tính bỏ túi, thông qua những thiết bị phần cứng như ổ cứng, bàn phím, màn hình LCD bóng bán dẫn mỏng hoặc thẻ nhớ, người máy công nghiệp... Firmware cũng có mặt trong những thiết bị tiêu dùng phức tạp hơn, như điện thoại di động, camera, loa..., để đáp ứng những quy trình cơ bản của thiết bị cũng như thực hiện những chức năng cao cấp hơn.
Không có ranh giới rõ rệt giữa firmware và software. Tuy nhiên, firmware chủ yếu liên quan tới những quy trình hết sức cơ bản và cấp thấp trong một thiết bị, không có chúng thì thiết bị hoàn toàn không thể hoạt động. Firmware cũng là một thuật ngữ tương đối, khi mà phần lớn những thiết bị nhúng firmware chứa firmware ở nhiều hơn một cấp nội hàm. Các phân hệ như cấu kiện màn hình tinh thể lỏng, chíp nháy, bộ điều khiển giao tiếp, v.v..., điều có những đoạn mã chương trình riêng (thường là cố định) và/hoặc vi mã, được coi như 'bộ phận của phần cứng' nếu xét ở cấp độ firmware cấp cao hơn.
Firmware đơn giản chủ yếu thường trú ở bộ nhớ chỉ đọc, hoặc OTP/Bộ nhớ chỉ đọc khả dĩ lập trình, khi mà những firmware phức tạp hơn thường lưu trú ở bộ nhớ nháy để có thể cập nhật. Những lý do thông thường để cập nhật firmware bao gồm sửa lỗi hoặc thêm chức năng vào thiết bị. Làm như vậy thường sẽ liên quan tới việc tải một ảnh số được nhà sản xuất cung cấp vào thiết bị, theo một quy trình nhất định; thỉnh thoảng việc này được hiểu là do người dùng cuối thực hiện.

Nguồn gốc thuật ngữ

Thuật ngữ "firmware" đã được Ascher Opler đặt ra năm 1967 trong một bài báo ở tờ Datamation. Ban đầu nó có nghĩa là nội dung vi mã của một phân khu điều khiển khả dĩ ghi liệu (một bộ phận nhỏ chuyên môn hóa của bộ nhớ truy xuất ngẫu nhiên), định nghĩa và thi hành tập lệnh của bộ vi xử lý trung tâm. Firmware có thể được tái tải nếu cần để đặc trưng hóa hoặc chỉnh sửa tập lệnh của máy tính. Như được sử dụng ban đầu, từ firmware đối lập với từ hardware (bản thân CPU) và software (những chương trình chạy trên CPU). Nó không được hợp thành bởi những lệnh CPU, mà bởi những vi mã thấp cấp hơn tham gia vào sự thi hành những lệnh máy. Nó tồn tại ở biên giới của hardware và software, đó là thuật ngữ firmware.
Sau này thuật ngữ được mở rộng ra để bao gồm bất kỳ vi mã nào, cho dù trong RAM hay ROM.
Lại sau này, thuật ngữ lại một lần nữa mở rộng ra để chỉ bất kỳ thứ gì thường trú ở ROM, kể cả những lệnh của bộ xử lý cho BIOS, bộ tải khởi động, hoặc những ứng dụng chuyên hóa.

Firmware ngày nay

Firmware đã tiến tới mức chỉ gần như mọi nội dung khả dĩ lập trình của một thiết bị phần cứng, không chỉ là ngôn ngữ máy cho vi xử lý mà còn chỉ những tùy chọn và dữ liệu cho mạch tích hợp chuyên dụng, thiết bị logic khả dĩ lập trình, v.v... Mặc dù những thiết bị hiện đại có thể được cập nhật bằng firmware thường bố trí những phương pháp bán tự động, thỉnh thoảng một bộ nhớ trung bình, như một bộ nhớ chỉ đọc lắp vào đế, vẫn phải thay thế (là một quy trình điển hình tới tận giữa những năm 1990).

Các thiết bị ngoại vi

Phần lớn những thiết bị ngoại vi đều rõ ràng là những máy tính có mục đích đặc biệt. Khi mà những thiết bị ngoại vi có firmware trữ sẵn bên trong, những thẻ ngoại vi máy tính hiện đại thường có một phần lớn firmware tải bởi hệ thống chủ vào lúc khởi động máy, vì như thế linh hoạt hơn. Những phần cứng như vậy do vậy sẽ không thể hoạt động hoàn toàn cho tới khi máy làm chủ đã cung cấp firmware cần thiết, thường là qua bộ lái thiết bị (hoặc, chính xác hơn, một phân hệ bên trong gói bộ lái thiết bị). Những bộ lái thiết bị hiện đại cũng có thể trình bày một giao diện người dung trực tiếp để tùy chỉnh bổ sung cho những cuộc gọi / giao diện căn bản và/hoặc giao diện chương trình ứng dụng ở tầng lập trình.

Những thách thức về firmware với máy tính cá nhân

Theo một số phương diện, nhiều thành phần firmware quan trọng ngang với hệ điều hành trong một chiếc máy tính đang hoạt động. Tuy nhiên, không giống như phần lớn hệ điều hành hiện đại, firmware hiếm khi có một cơ chế được phát triển tốt để tự cập nhật nhằm sửa lỗi chức năng được phát hiện sau khi hàng đã được giao.
BIOS khá đơn giản cập nhật trong một máy tính cá nhân hiện đại; những thiết bị như card đồ họa và modem thường dựa trên firmware được tải một cách linh động qua một bộ lái thiết bị và vì vậy có thể được cập nhật một cách rõ ràng qua cơ chế cập nhật của hệ điều hành. Ngược lại, firmware trong những thiết bị lưu trữ hiếm khi được cập nhật, cơ chế phát hiện những phiên bản firmware và cập nhật chúng không được tiêu chuẩn hóa. Những thiết bị này vì vậy có xu hướng có những vấn đề chức năng cao hơn, so với những bộ phận khác của một hệ thống máy tính hiện đại.

Máy nghe nhạc di động

Một số công ty sử dụng những cập nhật firmware để thêm những định dạng tập tin mới có thể chơi được (mã hóa) như Iriver đã thêm định dạng Ogg như thế. Những chức năng khác có thể thay đổi với những cập nhật firmware là giao diện người dùng đồ họa và thậm chí là tuổi thọ pin. Phần lớn những máy chơi nhạc hiện đại hỗ trợ cập nhật firmware.

Điện thoại di động

Phần lớn điện thoại di động đều có firmware có khả năng cập nhật với những lý do phần nhiều là tương tự như trên, nhưng một số thậm chí có thể được nâng cấp để được tiếp nhận tốt hơn, hoặc cải thiện chất lượng âm thanh.

Firmware bên thứ ba

Thỉnh thoảng một phiên bản mới hoặc được tùy chỉnh không chính thức của firmware được tạo nên bởi các tổ chức thứ ba để cung cấp những chức năng mới hoặc mở khóa những chức năng còn bị ẩn. Ví dụ như Rockbox về máy nghe nhạc kỹ thuật số. CHDK về những máy quay phim kỹ thuật số Canon, và DD-WRT cho những bộ định tuyến không dây, thoải mái vùng firmware cho những đầu DVD, không tự do cho vùng với những firmware chính thức, cũng như nhiều dự án hombrew với những máy chơi game. Những firmware này thường có thể mở khóa chức năng đa dụng của máy tính về tổng quát trên những thiết bị trước đây bị hạn chế (ví dụ, chơi Doom trên iPod). Phần lớn các bản hack của firmware cũng đều miễn phí và mã nguồn mở.
Những bản hack thường lợi dụng sự dễ dàng trong cập nhật firmware trên nhiều thiết bị để bản thân nó cài đặt và hoạt động. Một số, tuy nhiên, lại phải dựa vào lợi dụng lỗi để hoạt động được, bởi vì nhà sản xuất đã cố tình khóa phần cứng để nó không thể chạy mã không đăng ký.