
Trong lĩnh vực công nghệ thông tin, Firmware, phần mềm nhúng là chương trình đặc biệt được sử dụng để điều khiển các thiết bị điện tử ở cấp thấp. Ví dụ về phần mềm nhúng bao gồm các thiết bị như bộ điều khiển từ xa, máy tính bỏ túi, cũng như các thiết bị phần cứng như ổ cứng, bàn phím, màn hình LCD, thẻ nhớ và robot công nghiệp. Phần mềm nhúng cũng xuất hiện trong các thiết bị tiêu dùng phức tạp như điện thoại, máy ảnh, loa, để thực hiện các quy trình cơ bản và các chức năng nâng cao.
Ranh giới giữa phần mềm nhúng và phần mềm ứng dụng không rõ ràng. Tuy nhiên, phần mềm nhúng thường thực hiện các chức năng cơ bản và thiết yếu của thiết bị, mà không có nó thì thiết bị không thể hoạt động. Phần mềm nhúng cũng là một khái niệm tương đối, vì nhiều thiết bị nhúng có phần mềm nhúng ở nhiều cấp độ khác nhau. Các thành phần như màn hình LCD, đèn LED, và bộ điều khiển giao tiếp đều có mã chương trình riêng (thường là cố định) hoặc vi mã, được coi là 'phần của phần cứng' ở cấp độ phần mềm nhúng cao hơn.
Phần mềm nhúng cơ bản thường được lưu trữ trong bộ nhớ chỉ đọc (ROM) hoặc bộ nhớ chỉ đọc có thể lập trình (OTP), trong khi phần mềm nhúng phức tạp hơn có thể được lưu trữ trong bộ nhớ nháy để có thể cập nhật. Cập nhật phần mềm nhúng thường nhằm mục đích sửa lỗi hoặc bổ sung chức năng mới cho thiết bị. Quá trình cập nhật thường bao gồm việc tải một bản cập nhật từ nhà sản xuất vào thiết bị theo một quy trình cụ thể; đôi khi điều này được thực hiện bởi người dùng cuối.
Nguồn gốc thuật ngữ
Thuật ngữ 'phần mềm nhúng' được Ascher Opler giới thiệu lần đầu tiên vào năm 1967 trong một bài viết trên tờ Datamation. Ban đầu, nó chỉ nội dung vi mã của một khu vực điều khiển có thể ghi được (một phần nhỏ của Bộ nhớ truy xuất ngẫu nhiên), dùng để định nghĩa và thực thi lệnh của bộ vi xử lý trung tâm. Phần mềm nhúng có thể được cập nhật để điều chỉnh hoặc thay đổi lệnh máy tính. Ban đầu, nó được phân biệt với phần cứng (bản thân CPU) và phần mềm (các chương trình chạy trên CPU). Phần mềm nhúng không bao gồm các lệnh CPU mà là các vi mã cấp thấp hơn tham gia vào việc thực thi lệnh máy. Nó nằm ở ranh giới giữa phần cứng và phần mềm, định nghĩa của thuật ngữ phần mềm nhúng.
Sau đó, thuật ngữ này được mở rộng để bao gồm tất cả các vi mã, dù là trong RAM hay ROM.
Tiếp theo, thuật ngữ này lại được mở rộng thêm để chỉ bất kỳ nội dung nào lưu trữ trong ROM, bao gồm các lệnh của bộ xử lý như BIOS, bộ tải khởi động, hoặc các ứng dụng chuyên dụng.
Phần mềm nhúng hiện nay
Phần mềm nhúng đã phát triển để bao gồm gần như toàn bộ nội dung có thể lập trình của một thiết bị phần cứng, không chỉ là mã máy cho vi xử lý mà còn bao gồm các tùy chọn và dữ liệu cho mạch tích hợp chuyên dụng, thiết bị lập trình linh hoạt, và nhiều hơn nữa. Mặc dù các thiết bị hiện đại có thể cập nhật phần mềm nhúng thông qua các phương pháp bán tự động, thỉnh thoảng một bộ nhớ trung bình, như bộ nhớ chỉ đọc gắn trên đế, vẫn cần phải thay thế (điển hình cho đến giữa những năm 1990).
Các thiết bị ngoại vi
Phần lớn thiết bị ngoại vi rõ ràng là máy tính dành cho các mục đích đặc biệt. Trong khi nhiều thiết bị ngoại vi có phần mềm nhúng được tích hợp sẵn, các thẻ ngoại vi máy tính hiện đại thường có phần lớn phần mềm nhúng được tải bởi hệ thống chính trong quá trình khởi động, điều này giúp tăng tính linh hoạt. Do đó, các thiết bị phần cứng này không thể hoạt động hoàn toàn cho đến khi máy chủ cung cấp phần mềm nhúng cần thiết, thường thông qua điều hướng (hoặc một phân hệ bên trong gói điều hướng). Các bộ điều khiển thiết bị hiện đại cũng có thể cung cấp giao diện người dùng trực tiếp để tùy chỉnh thêm cho các cuộc gọi / giao diện cơ bản và/hoặc giao diện ứng dụng ở tầng lập trình.
Những thách thức về phần mềm nhúng với máy tính cá nhân
Về nhiều khía cạnh, các thành phần phần mềm nhúng quan trọng không kém gì hệ điều hành trong một máy tính hoạt động. Tuy nhiên, khác với nhiều hệ điều hành hiện đại, phần mềm nhúng hiếm khi có cơ chế phát triển tốt để tự động cập nhật nhằm sửa lỗi chức năng phát hiện sau khi sản phẩm đã được giao.
Cập nhật BIOS trên máy tính cá nhân hiện đại khá đơn giản; các thiết bị như thẻ đồ họa và modem thường sử dụng phần mềm nhúng có thể tải động qua điều hướng, do đó dễ dàng cập nhật thông qua cơ chế cập nhật của hệ điều hành. Ngược lại, phần mềm nhúng trong các thiết bị lưu trữ thường ít được cập nhật hơn, vì cơ chế phát hiện và cập nhật phiên bản phần mềm nhúng chưa được tiêu chuẩn hóa. Những thiết bị này do đó có thể gặp phải các vấn đề về chức năng nghiêm trọng hơn so với các thành phần khác trong 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 các bản cập nhật phần mềm nhúng để thêm các định dạng tập tin mới có thể phát, chẳng hạn như Iriver đã bổ sung định dạng Ogg. Các chức năng khác có thể thay đổi với các bản cập nhật phần mềm nhúng bao gồm giao diện người dùng đồ họa và thậm chí thời gian sử dụng pin. Hầu hết các máy nghe nhạc hiện đại đều hỗ trợ cập nhật phần mềm nhúng.
Điện thoại di động
Hầu hết các điện thoại di động đều có phần mềm nhúng có thể cập nhật, với lý do tương tự như trên, nhưng một số điện thoại còn có thể nâng cấp để cải thiện khả năng tiếp nhận hoặc chất lượng âm thanh.
Định nghĩa từ IEEE
Theo từ điển chuẩn về Thuật ngữ Kỹ thuật máy tính của Học viện Kỹ thuật Điện và Điện tử (IEEE) Std 610.12-1990, firmware được định nghĩa như sau:
- 'Sự kết hợp giữa phần cứng và các lệnh máy tính, cùng dữ liệu được lưu trữ dưới dạng phần mềm chỉ đọc trên thiết bị đó.'
- Ghi chú: (1) Thuật ngữ này thường được sử dụng để chỉ thiết bị phần cứng hoặc chỉ lệnh máy tính và dữ liệu, nhưng các nghĩa này bị phản đối. (2) Sự nhầm lẫn xung quanh thuật ngữ này đã khiến một số người đề xuất nên tránh sử dụng nó trong mọi ngữ cảnh.'
Ví dụ
Các ví dụ về firmware bao gồm:
- Hệ thống điều khiển và lập lịch cho máy giặt.
- BIOS trên các máy tính cá nhân tương thích với sản phẩm của IBM.
- Những mã cơ bản trong hệ thống ITanium, các máy Mac OS X sử dụng vi xử lý Intel, và nhiều máy tính để bàn Intel với firmware hỗ trợ EFI.
- Firmware mở, được sử dụng trong máy tính của Sun Microsystems, Apple, và Genesi.
- ARCS, được áp dụng trong máy tính của Silicon Graphics.
- Kickstart trên dòng máy Amiga, là một ví dụ hiếm hoi về firmware kết hợp các chức năng của BIOS (như POST, khởi tạo phần cứng, và tự động cấu hình các thiết bị ngoại vi), cũng như các thành phần mã dùng trong hệ điều hành AmigaOS (như giao diện đồ họa nguyên thủy và thư viện).
- RTAS (Dịch vụ Trừu tượng hóa Thực thi), có mặt trên các máy tính của IBM.
- Chíp EPROM trong dòng máy Eventide H-3000, liên quan đến các bộ xử lý âm thanh số.
- Môi trường firmware phổ biến
- Các thuộc tính điều khiển âm thanh, video và danh sách kênh trên các TV hiện đại.
Firmware bên thứ ba
Đôi khi, các tổ chức bên thứ ba phát triển các phiên bản firmware mới hoặc tùy chỉnh không chính thức để cung cấp các tính năng mới hoặc mở khóa những chức năng bị ẩn. Ví dụ bao gồm Rockbox cho máy nghe nhạc kỹ thuật số, CHDK cho máy quay phim kỹ thuật số Canon, và DD-WRT cho bộ định tuyến không dây. Những firmware này thường có thể mở khóa các chức năng bổ sung của thiết bị, chẳng hạn như chơi Doom trên iPod. Phần lớn các bản hack firmware cũng đều miễn phí và mã nguồn mở.
Các bản hack firmware thường khai thác sự dễ dàng trong việc cập nhật firmware trên nhiều thiết bị để thực hiện và hoạt động. Tuy nhiên, một số bản hack phải dựa vào các lỗ hổng bảo mật vì nhà sản xuất đã cố tình khóa phần cứng để ngăn chặn việc chạy mã không chính thức.
- Ảnh ROM
- BIOS
- Phần lõi khởi động
- Vi mã
- Nhị phân