Thảo luận về VI ĐIỀU KHIỂN thật sự có một OS?


(Lê Huỳnh Phước) #1

Việc là em có tham khảo một số trang nói về việc chương trình mà chúng ta viết nên và nạp vào VĐK là một Firmware và Firmware đó tương đương với một OS nhỏ… Lúc đó em nghĩ, What? Nhưng nếu lật lại một số định nghĩa về OS thì em thấy hơi hợp lý vì OS thật chất cũng là một chương trình mà con người viết ra nhằm quản lý chương trình (phần mềm) và quản lý phần cứng.
Và có lẽ một phần mềm chúng ta viết ra để nạp vào VĐK cũng đóng vai trò như vậy ( quản lý phần mềm và phần cứng, khác ở chỗ là PC sẽ nhiều task hơn là VĐK). Và khi em tìm đọc một bài viết trên Quora thì các kỹ sư cũng đồng ý là Có, vi điều khiển có hệ điều hành và bạn cần flash nó trên vi điều khiển (firmware) và cần phải có nhiệm vụ phù hợp được lập trình để hoạt động như mong đợi.
Vậy thật sự ở đây firmware mà em viết liệu là một OS nhỏ hay một OS thật sự có những tiêu chuẩn riêng cấu thành?


(Văn Dương) #3

Firmware và OS không là một.
Một VĐK muốn chạy được phải có firmware.
Nhưng firmware này được thiết kế để cho ra một OS thì nó sẽ có 1 OS hoặc là không.

Một OS trên VĐK cũng có một hoặc nhiều tác vụ chạy song song.
Đa phần firmware không có OS.


(DungPh) #4

Có thực sự quan trọng khi nói thế?

Wikipedia có bài về Firmware và cũng có bài về Operating System. Đơn giản chỉ là so sánh khái niệm thôi.

Trong bài về firmware có viết Firmware can act as the device’s complete operating system. Như vậy, coi Firmware là OS hay không là tùy bạn hiểu. Nó chẳng có ý nghĩa gì to tác cả.


(Văn Dương) #5

Firmware có là OS hay không nó dựa vào cách viết và cách hoạt động. Nó phải thoả mãn những đặc điểm gì đó mới được gọi là OS. Ví dụ có thể quản lý, chạy song song đa tác vụ.

Cũng như phần mềm máy tính, không phải cái nào cũng gọi là OS. Kể cả những phần mềm có thể boot.


(Nguyễn đình Cuội) #6

mình thì coi nó là Os, lập trình nhúng cơ bản có 2 loại : loại sử dụng OS( RTOS ) và loại không sử dụng OS.
Loại sử dụng RTOS thì …đương nhiên. RTOS là một cái thư viện , sử dụng RTOS thực ra là gọi các hàm có sẵn từ thư viện này.
Loại không sử dụng OS thì nó chỉ thực hiện một nhiệm vụ chuyên biệt, ví dụ chỉ nhận giá trị từ sensor A , xử lý dâta này và pass nó sang sensor B, nó thực chất là 1 chương trình C & assembly với khoảng vài ngàn đến vài chục ngàn dòng code. Tuy nhiên, vẫn có thể coi nó là một small OS vì nó thực hiện các công việc cơ bản mà 1 hệ điều hành cần làm : giao tiếp với phần cứng( khởi tạo các thanh ghi, ROM, RAM, setup các thông số cho microcontroller như stack pointer, vector table…, set up các module giao tiếp với device như AD, SPI, UART … ), quản lý các task con ( nhận data từ device, xử lý data, xử lý vấn đề timing …), quản lý bộ nhớ ( mặc dù RAM có khi chỉ vài KB) .


(Văn Dương) #7

OS thì không phụ thuộc lượng công việc.
Nhấp nháy 1 con led cũng có thể là một OS. Làm n công việc kinh khủng vẫn không phải một OS.

Công việc của OS là khởi tạo, quản lý và điều hành các tác vụ (task).
Nên một firmware không OS là một chương trình bình thường với một hàm main và vòng lặp vô tận (có thể có ngắt). Các công việc thực hiện tuần tự.

Còn một OS thì có nhiều tác vụ và một cơ chế chuyển tác vụ dựa vào ngắt timer và xử lý các thanh gi đặc biệt như PC, Stack. Các tác vụ chạy song song.

Lấy ví dụ đơn giản nhất giữa có OS và không là :
Không OS : Không bao giờ có 2 hay nhiều vòng lặp vô tận cùng chạy.
OS : Có nhiều vòng lặp vô tận cùng chạy.

Để tạo ra OS có thể dùng những OS có sẵn như RTOS hoặc tự viết.


(Lê Huỳnh Phước) #8

Rất bổ ích, cảm ơn bạn


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?