Thứ Sáu, 21 tháng 6, 2019

Firmware là gì? Tất tần tật về Firmware

firmware-for-router

Firmware (hay cách khác là hệ điều hành) nói chung là một gói phần mềm hệ thống được nạp vào bộ nhớ cứng của thiết bị hoặc một nơi nào đó trong mạng điện của thiết bị, chúng ta hoàn toàn không thể đụng chạm hay can thiệp sâu vào firmware của nhà sản xuất dành cho một thiết bị nào đó được. Tuy nhiên với một số trường hợp, vẫn có thể tùy biến (nhưng không sâu) với firmware.



Mục lục:

  1. Firmware là gì?
  2. Sự khác nhau giữa Firmware với Software
  3. Sự khác nhau giữa Firmware với OS (Operating System - Hệ điều hành)
  4. Phân loại Firmware
  5. Cập nhật/Nâng cấp firmware (Upgrade firmware)
  6. Firmware của iOS là gì?
  7. Tổng kết và Tuyệt chiêu xử lý lỗi Firmware

firmware-la-gi

1. Firmware là gì?


Firmware là một thuật ngữ được dùng để chỉ những chương trình máy tính cố định và điều khiển cấp thấp nhiều thiết bị điện tử. Một số ví dụ điển hình về firmware có thể thấy từ những sản phẩm như bộ điều khiển từ xa hoặc máy tính bỏ túi, đến 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,…

Xem thêm: https://vi.wikipedia.org/wiki/Firmware

Firmware được coi là "software for hardware" (phần mềm dành cho phần cứng), Firmware là chương trình được nhúng trong một phần của phần cứng chẳng hạn như bàn phím, ổ cứng, BIOS, hoặc card video.

Firmware khá giống với driver (các phần mềm điều khiển thiết bị). Chúng có cùng chức năng nhưng khác nhau ở chỗ là Firmware được lưu trữ ngay trên thiết bị phần cứng còn Driver lại được cài đặt bên trong hệ điều hành.

Ngoài ra Firmware có thể tự khởi động và làm những gì mà nó được lập trình hoặc thiết kế để thực hiện còn Driver chịu sự kiểm soát và bị quản lý bởi hệ điều hành.

firmware-trong-device-management


Ví dụ, một cột đèn giao thông đơn giản cũng chứa một firmware không? Thực tế là đèn giao thông cũng có firmware để thực hiện việc sáng đèn theo những khoảng thời gian nhất định. Nếu không có firmware, đèn giao thông sẽ chỉ là một cây cột "vô dụng" được đặt ở bên đường. Đối với các thiết bị phần cứng ít phức tạp hơn như đèn giao thông, máy giặt, máy thẻ, camera giám sát, TV,... firmware là tất cả software trên đó và nó cũng hoạt động như một hệ điều hành, kiểm soát mọi thứ về chức năng của thiết bị đó.

Ví dụ khác, nếu một mainboard máy tính mà không có Firmware thì máy tính sẽ không thể tìm thấy ổ đĩa cứng hoặc USB. Nếu ổ đĩa không có firmware nhúng bên trong, chúng sẽ không biết được tốc độ quay của mình là bao nhiêu hay khi nào cần dừng lại, lúc nào khởi động mềm. Một cái card mạng không dây sẽ không biết cách sử dụng radio frequency cụ thể là bao nhiêu nữa,...




firmware-vs-software

2. Sự khác nhau giữa Firmware với Software


Cái này hay khiến người dùng nhầm lẫn, vì thứ nhất nó có cùng chữ "ware" ở phía sau đuôi, thứ hai là có vẻ nó giống giống nhau hay sao ấy.

Theo IT Bình Dân, firmware là một software của nhà sản xuất thiết bị, chứa những mã lệnh lập trình để điều khiển thiết bị đó hoạt động. Ví dụ như những con router, máy lạnh, tủ lạnh, tivi hay thứ thông dụng nhất là điện thoại di động. Thỉnh thoảng các nhà sản xuất sẽ đăng thông báo có "firmware" mới rồi đó, các bạn có muốn cập nhật không?

Vậy thì Firmware khác Software như thế nào nhỉ, trong khi có vẻ chúng cùng là một tập hợp câu lệnh lập trình?

Firmware 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ị. Nếu không có firmware, thiết bị hoàn toàn không thể hoạt động được.

Ví dụ như phần mềm điều khiển hoạt động của một chiếc mainboard máy tính, firmware của mainboard chứa các lênh, các giao thức kết nối phần cứng, cách chúng vận hành với nhau và cách xử lý lỗi,... IT Bình Dân nghĩ nó giống như là Layer 2, 3 trong mô hình mạng OSI, trong khi Software là Layer 7 vậy.

Firmware là những tập lệnh được lưu chứa trong bộ nhớ của thiết bị, thường là ROM (Read Only Memory), tức là nó chỉ đọc chứ không ghi đè lên được. Với những thiết bị tinh vi hơn, Firmware sẽ được lưu trữ trên những bộ nhớ có thể ghi xóa được, hoặc phục hồi về ban đầu được (firmware gốc luôn được chứa trong ROM, EPROM, hoặc bộ nhớ flash).

Firmware thường có kích thước rất nhỏ, khoảng vài kilobyte.

Firmware thường chỉ được update (upgrade) bởi nhà sản xuất, hoặc những chuyên gia công nghệ. Việc cập nhật firmware mới từ nhà sản xuất nếu không chuẩn sẽ khiến thiết bị có thể không hoạt động được
Ví dụ như một cái ổ cứng HDD. Trên HDD đó có thể chứa hàng trăm phần mềm. Bản thân nó, để có thể vận hành, quay motor, đầu ghi chuyển động trên những lớp đĩa từ để đọc/ghi dữ liệu,... thì nó cũng có một hướng dẫn cụ thể đã được lưu trong chính bộ nhớ của cái HDD đó. Đó là tập lệnh chỉ thị cho HDD phải hoạt động ra sao. Ví dụ này cho thấy sự khác biệt rõ ràng giữa firmware và software

Bản thân Software cũng có thể điều khiển hoạt động của HDD, nhưng đó là những dòng lệnh/chỉ thị đã được biên tập, và gửi tới HDD qua giao thức của firmware.


3. Sự khác nhau giữa Firmware với OS (Operating System - Hệ điều hành)


Với những hệ thống, thiết bị bao gồm cả OSFirmware thì có khá nhiều mô hình được ứng dụng. Tuy nhiên hiện nay có hai mô hình phổ biến nhất, đó là:

1/ Firmware như là một layer dưới OS Đối với những hệ thống bao gồm cả firmware và OS


Thường OS sẽ thông qua các firmware của từng hardware chuyên biệt để giao tiếp và tương tác với các thiết bị phần cứng đấy. Ngoài việc giao tiếp và tương tác với phần cứng thì firmware còn thực hiện một số tập các chức năng cơ bản như basic input/output tasks.

2/ Firmware là một tiến trình chạy trên OS


Như một firmware cho một con Storage (thiết bị lưu trữ dữ liệu). Giả sử Storage đó dùng OS skerlet, và các ứng dụng có thể được cài trên skerlet đấy. Firmware bản thân nó cũng như một tiến trình chạy trên OS đấy, thực hiện các chức năng của Firmware, nhưng vẫn có thể giao tiếp tín hiệu điều khiển, data với các hardware khác hoặc với chính các Firmware khác (như firmware của bo mạch chủ, firmware của ổ cứng,...) để thực hiện các chức năng nó đảm nhiệm.





4. Phân loại Firmware


bios-la-gi

BIOS


Sau khi nhấn nút nguồn để mở, máy tính sẽ khởi động vào BIOS. Nó có thể tương tác với phần cứng và kiểm tra bất kỳ một lỗi nào, sau đó ra hiệu cho một chương trình khác có tên gọi là Bootloader, thực hiện công việc đánh thức hệ điều hành đang ngủ bên trong ổ cứng và đưa nó vào bộ nhớ dữ liệu tạm thời (Random Access Memory - RAM).

Nhiệm vụ chính của BIOS là xử lý các thành phần của phần cứng máy tính và đảm bảo rằng các thành phần này hoạt động đúng cách. Tuy nhiên vì là phần mềm cấp thấp (low-level software) và hầu như không thay đổi trong hai thập kỷ qua nên BIOS đã trở lên lỗi thời và không còn hỗ trợ các công nghệ hiện đại.

Một ví dụ điển hình nhất là BIOS vẫn sử dụng code 16-bit, trong khi đó hầu hết các dòng laptop và máy tính chạy code 32 và 62-bit.

Bios về cơ bản dùng để:
  • Thay đổi thứ tự đọc ổ đĩa khi khởi động
  • Theo dõi nhiệt độ, tốc độ quạt
  • Ép xung

EFI


EFI là viết tắt của Extensible Firmware Interface, là một bộ đặc tả giao thức phần mềm chịu trách nhiệm giao tiếp giữa hệ điều hành và firmware hệ thống, được CPU sử dụng để khởi động phần cứng và bỏ qua Bootloader. Đôi khi EFI còn được gọi là UEFI ( Viết tắt của Unified Extensible Firmware Interface) và có một số ưu điểm nhất định so với BIOS.

EFI là phân vùng boot khởi động của hệ điều hành Windows chuẩn UEFI. Phân vùng này được tạo ra khi chúng ta cài mới Windows . Đây là phân vùng cực kỳ quan trọng của hệ điều hành Windows, nó giúp máy tính có thể boot vào được màn hình Desktop để chúng ta có thể sử dụng được, một khi phân vùng này bị lỗi thì bạn sẽ không thể khởi động vào được máy tính và có thể sẽ xuất hiệu các thông báo lỗi đại loại như Operating System Not Found



Chẳng hạn như EFI đảm bảo máy tính của bạn chỉ khởi động bằng phần mềm được nhà sản xuất máy tính tin cậy, tức là nó hỗ trợ tính năng Secure Boot để cải thiện mức độ bảo mật.

Nếu biết phiên bản BIOS trên máy tính của bạn có thể hỗ trợ bạn rất nhiều trong quá trình cập nhật phiên bản firmware mới nhất. Trên máy tính Windows, bạn có thể lấy các thông tin về phiên bản firmware bằng cách sử dụng Command Prompt. Ngoài ra, bạn có thể sử dụng công cụ Upgrade Assistant cho thiết bị của mình.

Thường thì để xem phiên bản firmware của bất kỳ phần cứng nào đó, cách đơn giản nhất là mở Device Manager, sau đó mở rộng danh mục, tìm chọn Hardware, kích chuột phải vào đó và chọn Properties.

devmgmt.msc-network-adapters


Trên cửa sổ Properties, bạn truy cập tab Details

devmgmt.msc-details-properties


Chọn Hardware Ids. Trong mục Value table bạn sẽ nhìn thấy phiên bản firmware.

devmgmt.msc-hardware-dis



5. Cập nhật/Nâng cấp firmware (Upgrade firmware)


Cập nhật Firmware có sẵn từ các nhà sản xuất phần cứng. Cho ví dụ cập nhật firmware cho router mạng được phát hành để sửa lỗi, lỗ hổng bảo mật hoặc tăng tốc độ mạng.

Hầu hết các nhà sản xuất linh kiện máy tính đều phát triển và cung cấp cho khách hàng phần mềm mới và các cập nhật phần mềm tương ứng, ít nhất là trong vài năm sau khi thiết bị được khởi chạy.

hp-bios-update-and-recovery


Nhà sản xuất bo mạch chủ có thể phát hành bản cập nhật firmware mới khi có các tính năng mới, hỗ trợ bộ xử lý mới hoặc RAM mới hoặc khi họ muốn giải quyết các sự cố phát sinh với phần cứng của bạn.

Bất kỳ nhà sản xuất nào cũng có thể chọn cung cấp firmware mới cho thiết bị của mình: một bộ định tuyến có thể nhận bản cập nhật firmware để tăng tính ổn định, DVD writer có thể tìm hiểu cách ghi các loại đĩa mới… Điều này hoàn toàn phụ thuộc vào nhà sản xuất thiết bị phần cứng. Thông thường, bạn có thể tìm thấy firmware mới (nếu có) trên trang web hỗ trợ của thiết bị đó và làm theo hướng dẫn.

american-megatrends-afuwingui


Một số cập nhật Firmware được áp dụng bình thường và chỉ là bản cập nhật phần mềm thường xuyên. Tuy nhiên một số cập nhật khác có thể tốn nhiều thời gian vì các cập nhật này có thể liên quan đến việc sao chép firmware vào một ổ di động, sau đó tải vào thiết bị của bạn bằng tay.

Trên một số thiết bị có sẵn phần dành riêng để người dùng sử dụng cập nhật firmware hoặc hướng dẫn sử dụng để người dùng tham khảo.

Điều quan trọng là đảm bảo thiết bị mà bạn đang cập nhật firmware không bị tắt trong quá trình cập nhật. Bản cập nhật firmware sẽ “vá” những phần firmware bị lỗi, có thể làm hỏng thiết bị.


Flash ROM memory là rewritable ROM memory bởi vì ngay cả khi nó được viết bởi nhà sản xuất phần cứng, nó vẫn có thể được viết lại sau đó. Tất nhiên, bạn có thể viết firmware mới vào một thiết bị phần cứng. Tuy nhiên, bạn chỉ có thể thực hiện được điều này với công cụ cập nhật phần mềm thích hợp, được thiết kế đặc biệt để hoạt động cho thiết bị phần cứng đó.

6. Firmware của iOS là gì?


Firmware của hãng Apple, ở đây là iOS, cũng giống như tất cả các loại firmware khác nhưng khác biệt là nó chỉ dành cho các thiết bị dòng Táo như iPhone, iPad và iPod của Apple. Firmware của iOS hoàn toàn không tùy biến được bởi tính chất đóng của hệ điều hành và chúng được mã hóa, lưu trữ ở nơi bí mật để bảo vệ dữ liệu của người dùng.

Apple tự hào về firmware của họ đã giúp cho những chiếc điện thoại iPhone hoạt động chất lượng, ít gây lỗi, thời gian dùng lâu trong khi pin dung lượng thấp,...

Apple hiện nay (2019) đang sở hữu rất nhiều hệ điều hành (firmware) khác nhau như:

  • iOS - iPhone Operating System, hệ điều hành di động dành cho các thiết bị iPhone, iPad và iPod Touch. Ngoài ra những chiếc iPod Nano hiện nay cũng được chạy iOS tuy nhiên đó chỉ là một phần mềm được tùy biến lại, không có nhiều tính năng như iOS gốc.
  • macOS - Macintosh Operating System, dành cho máy tính Mac của Apple
  • tvOS - TV Operating System, dành cho các thiết bị TV box của Apple
  • watchOS - Watch Operating System, dành cho các đồng hồ thông minh của Apple. watchOS thực chất cũng là iOS được tùy biến lại để phù hợp với màn hình nhỏ của thiết bị và tính năng của một đồng hồ thông minh.


Firmware của iOS, macOS, tvOS hay watchOS thì cũng đều là hệ điều hành nói chung nhưng trong đó được phân nhánh ra thành nhiều phiên bản khác nhau với nhiều tính năng mới và sửa lỗi bảo mật được thêm vào. Chẳng hạn như hàng năm Apple đều phát hành một bản cập nhật iOS lớn từ iOS 9 lên iOS 10 và nhiều bản cập nhật nhỏ lẻ khác như iOS 10.0.1 hay iOS 10.1,… Tất cả chúng được gọi là firmware.


7. Tổng kết và Tuyệt chiêu xử lý lỗi Firmware


Hồi nhỏ, IT Bình Dân "may mắn" được lớn lên trong thời bao cấp, nhớ mãi cảnh thèm thuồng cả xóm qua nhà một ông "tư bản" xem nhờ ti vi. Tivi thời ấy (những năm 79-85) toàn là dạng “chân chống, cửa lùa”, hình thức rất cổ kính. Khi bật máy phải chờ khoảng 3-5 phút cho các đèn điện tử nóng lên mới chạy. Nhìn vào ruột máy qua khe thoát nhiệt như một thành phố thu nhỏ với những ánh đèn lác đác, cũng thi vị lắm. (Giờ mà còn cái tivi nào là thành cổ vật rồi).

Dần dà, khoa học phát triển, linh kiện bán dẫn ra đời. IC (mạch tích hợp) xuất hiện và đóng đinh quan tài cho "đèn điện tử". 30 năm đổ lại đây là khoảng thời gian phát triển vũ bão của công nghệ, viễn thông, và chúng lại có mối quan hệ chặt chẽ tới kinh ngạc.

Mỗi một mạch điện, một IC khi thực hiện công việc nhất định cần có một kịch bản, đó chính là nguyên lý làm việc của mạch. Ví dụ như khuyếch đại, mã hóa, giải mã… Như vậy mỗi khi nghĩ ra một cái gì đó mới mẻ, người ta lại thiết kế một kịch bản mới, lại có mạch điện tương ứng với kịch bản đó. Nói cách khác, phần cứng luôn phải chạy theo cái sự sáng tạo của con người.

Thế rồi, kỹ thuật digital ra đời trên cơ sở của đại số logic (đại số booleen - 0 và 1) đã biến tất cả những tín hiệu điện to/nhỏ, cao tần/âm tần, điều chế/không điều chế, xung điện mức cao/mức thấp. Và dĩ nhiên để có thể quản lý được chúng, truyền đi từ nơi này đến nơi khác, mang một thông điệp nào đó .. thì những xung cao/thấp ấy được tổ chức thành chuỗi, thành khối có quy luật riêng biệt. Sự tổ chức này chính là trình độ phát triển cao hơn của tín hiệu digital, nó được gọi là tín hiệu logic.

Chúng ta đang thụ hưởng chính cái tín hiệu logic ấy, từ truyền hình số, điện thoại di động, tivi, MP3, máy tính, máy giặt, mạch điều khiển trong công nghiệp …, có thể nói hiện nay và trong tương lai gần như cái gì cắm điện là cái đó có tín hiệu logic (dĩ nhiên phải bỏ cái bàn là, cái bóng đèn,... ra khỏi danh sách này).

Đến đây, lại phát sinh 2 vấn đề :
  1. Khi thay đổi kịch bản lại phải thiết kế và chế tạo IC logic tương ứng, quá phiền toái.
  2. Khi chết IC logic, cứ mua mà thay thì việc sửa chữa phần cứng logic sẽ rất dễ hơn phần cứng analog, nhà sản xuất có khi phải giảm sản lượng.

Hai vấn đề trên được khắc phục bằng biện pháp :
  • Thiết kế IC đa năng, và để nó chạy một kịch bản nào đó ta chỉ cần đóng/mở một số chuyển mạch trong ruột IC (tất nhiên là khóa điện tử chứ ko phải cơ học)
  • Cái IC đa năng để thực hiện các kịch bản chính là CPU mà chúng ta quen gọi là "chip"

Để cho CPU có thể chạy được, con người cần "dạy" cho nó cách thức xử lý 1 nhiệm vụ nào đó thông qua các bước thi hành (1 cách tuần tự). Đây chính là lĩnh vực "lập trình máy tính". Tuy nhiên, việc lập trình ban đầu là quá đau khổ vì phải viết chương trình bằng những con số 0,1 nên cái thưở sơ khai của nền văn minh máy tính thì cả thế giới chỉ có vài chục người có thể làm việc này (những năm của thập kỷ 70).

Chính vì vậy, các kỹ sư của Intel, Ibm ... đã đẻ ra cái gọi là "vi lệnh" và nạp nó vào CPU. Trên cơ sở vi lệnh này người ta viết ra những công cụ lập trình dễ thực hiện hơn như Assembler (hợp ngữ), Pascal, C, Basic, FoxPro, Delphi, Java ... đến giờ, chúng ta đã có rất nhiều công cụ lập trình, từ đa năng cho đến chuyên dụng. Những chương trình điều khiển máy tính chính là phần mềm.

Nhưng chẳng nhẽ tất cả mọi thiết bị mà cứ tống CPU vào thì phức tạp quá, đắt quá, đôi khi nó giống như "dùng súng đại bác để bắn ruồi". Cho nên, các hãng điện tử mà tiêu biểu là Sony, Xerox, Canon, Panasonic ... đã đưa ra những chuẩn mực trong việc thiết kế phần cứng cho từng loại thiết bị, từng công việc cần xử lý, và chip flash, eprom, serial rom, mcu, plc ... đã ra đời.

Những đối tượng trên tuy không có khả năng thực hiện mọi việc như CPU nhưng nó cho phép thực hiện nhiều công việc theo từng lĩnh vực. Để thực thi việc nào đó, người ta chỉ cần thay đổi chương trình điều khiển của IC.

Nếu những bạn đã sửa tivi thì sẽ thấu hiểu hơn cái cảnh "mua một con IC tổng hợp trắng chỉ có 70-80 ngàn, cắm vào tivi ko chạy, phải mua cũng con IC đó của hãng mới chạy nhưng giá có khi đến 200-250 ngàn", đây chính là bí mật công nghệ của hãng, và các hãng cũng "móc túi" người tiêu dùng từ cái thủ thuật tưởng như rất đơn giản này.

Dạ vâng, cái chương trình điều khiển "quái quỷ" này chính là phần dẻo, tên kỹ thuật là Firmware, là thằng trung chuyển giữa phần cứng (hardware) và phần mềm (software). Điều này lý giải tại sao ta nhìn thấy hai con IC giống hệt nhau trong hai thiết bị khác nhau, nhưng khi cắm con này sang thiết bị kia thì lại không chạy.

Chốt lại, thì firmware có những đặc điểm gì:
  1. Nhỏ, gọn. Phần lớn được phát triển bằng công cụ lập trình cấp thấp (Assembler, đôi khi là C, C++)
  2. Cài đặt trực tiếp vào IC (flash, rom...)
  3. Làm trung gian cho việc điều khiển phần cứng của phần mềm. Thông qua firmware ta có thể phát triển nhiều kịch bản điều khiển phần cứng. Nói cách khác, nhờ có FW thì việc điều khiển phần cứng đã linh hoạt hơn, đa năng hơn.
  4. Không trực tiếp giao tiếp với người sử dụng
  5. Một số thiết bị thì Software và Firmware được tích hợp thành 1 (như máy giặt)
  6. Có thể nạp firmware trực tiếp bằng PC hoặc thông qua thiết bị chuyên dụng (máy ghi/đọc rom, flash ...).

Tuy nhiên, nhiều hãng khi ghi còn khóa lại để kỹ thuật viên ko thể đọc được firmware mà ghi ra cho con khác mới đểu chứ. Mà để phá khóa được firmware kiểu "đóng" này là công việc "hết sức mệt mỏi, tốn thời gian và xác suất thành công không phải là con số khả quan".

Khi gặp một thiết bị số không chạy, các linh kiện ko gãy, vỡ, biến dạng, biến màu..., ta nên nghĩ  ngay là:
  1. Hỏng firmware.
  2. Kế tiếp mới hỏng cái gì bên trong.

Chúc các bạn thành công.

Related Posts