Xin chào các tín đồ của RTOS!
Có lẽ sẽ hơi thừa nếu chúng ta lại mở thêm một luồng để tản mạn về RTOS. Nhưng các bạn đã bao giờ nghĩ đến một hệ điều hành thời gian thực nho nhỏ Made In Vietnam chưa?
Xin giới thiệu với các bạn một RTOS có tên gọi là hOS với những đặc điểm như sau:
- Preemptive Multitasking
- Hỗ trợ lập lịch CPU theo chiến lược WRR (Weighed Round Robin)
- Tương thích dễ dàng với nhiều loại vi xử lý và trình biên dịch
- Nhỏ gọn và dễ sử dụng
- Cho phép người dùng tự chọn Timer và chu kì chuyển tác vụ
- Hỗ trợ cap phát bộ nhớ cho ngăn xếp theo cả động (malloc) và tĩnh (mảng)
- Hỗ trợ các dịch vụ cơ bản như semaphore, queue, timer,...
Ngày xưa khi còn là sinh viên năm thứ 3 đại học, mình có viết một cơ chế đa nhiệm cho dòng vi xử lý 8051, nhưng thật tiếc là nó đã không được phát triển và ứng dụng rộng rãi vì lí do tương thích. Sau này mình mới biết là từ những năm 70 người Mỹ đã làm ra được những hệ thống hoàn thiện hơn thế nhiều và một số trong đó được gọi là RTOS.
Tại sao đến ngày nay người ta vẫn phát triển RTOS trong khi đã có rất nhiều loại trên thị trường? Câu hỏi này cũng giống như câu hỏi tại sao các hãng vẫn rất khoái sản xuất vi xử lý 8 bít trong khi ARM có sức mạnh vượt trội.
Lý do mình viết hOS một phần là vì đam mê, nhưng phần nhiều là để mọi người có thêm một lựa chọn dùng RTOS.
Ngoài những đặc tính về mức độ hiệu quả, một đặc tính khác của RTOS mà người dùng quan tâm là nó có dễ sử dụng và có tương thích với nhiều họ vi xử lý hay không.
Vấn đề dễ sử dụng được tác giả của hOS nghiên cứu kĩ lưỡng trước khi triển khai. Bạn sẽ thấy công việc cấu hình để hOS chạy trên MCU của bạn rất đơn giản và cũng rất linh hoạt. Vấn đề tương thích với nhiều họ vi xử lý cũng được khá nhiều nhà phát triển chuyên nghiệp quan tâm, vì hâu như họ không muốn phụ thuộc vào 1 dòng MCU, trong khi họ cũng không muốn cấu trúc chương trình của mình phải thay đổi mỗi khi nâng cấp sản phẩm.
Điểm khác biệt của hOS so với khá nhiều RTOS khác đó là toàn bộ việc lưu trữ và phục hồi ngữ cảnh của các tiến trình đều được đẩy cho CPU hoặc trình biên dịch tự làm. Việc này sẽ hiệu quả và chính xác hơn vì chỉ có CPU hoặc trình biên dịch mới biết những thanh ghi nào của CPU được sử dụng trong hàm chuyển ngữ cảnh. Việc này cũng cách ly ứng dụng của các bạn khỏi những lệnh mã máy khó hiểu.
Ban đầu, hOS được mình phát triển cho dòng STM8 của STmicroelectronics. Sau đó hOS được port thành công cho dòng ATMEGA của ATMEL. Việc port sang các dòng khác, kể cả ARM cũng sẽ rất đơn giản.
Hiệu quả của hOS còn cần phải kiểm chứng, và bản thân hOS cũng mới đi đến giai đoạn gần hoàn thiện phiên bản thứ nhất.
Các bạn tải về tệp gửi kèm. Trong đó là thư viện nanokernel của hOS và một ứng dụng demo gồm có 4 tiến trình chạy song song. Ứng dụng được viết trên AVRGCC. Các bạn có thể dùng AVRStudio để chạy, biên dịch và sửa đổi để test thử. Có gì thắc mắc các bạn cứ post lên nhé.
Mình sẽ tiếp tục cập nhật và mong hồi âm của các bạn.
Có lẽ sẽ hơi thừa nếu chúng ta lại mở thêm một luồng để tản mạn về RTOS. Nhưng các bạn đã bao giờ nghĩ đến một hệ điều hành thời gian thực nho nhỏ Made In Vietnam chưa?
Xin giới thiệu với các bạn một RTOS có tên gọi là hOS với những đặc điểm như sau:
- Preemptive Multitasking
- Hỗ trợ lập lịch CPU theo chiến lược WRR (Weighed Round Robin)
- Tương thích dễ dàng với nhiều loại vi xử lý và trình biên dịch
- Nhỏ gọn và dễ sử dụng
- Cho phép người dùng tự chọn Timer và chu kì chuyển tác vụ
- Hỗ trợ cap phát bộ nhớ cho ngăn xếp theo cả động (malloc) và tĩnh (mảng)
- Hỗ trợ các dịch vụ cơ bản như semaphore, queue, timer,...
Ngày xưa khi còn là sinh viên năm thứ 3 đại học, mình có viết một cơ chế đa nhiệm cho dòng vi xử lý 8051, nhưng thật tiếc là nó đã không được phát triển và ứng dụng rộng rãi vì lí do tương thích. Sau này mình mới biết là từ những năm 70 người Mỹ đã làm ra được những hệ thống hoàn thiện hơn thế nhiều và một số trong đó được gọi là RTOS.
Tại sao đến ngày nay người ta vẫn phát triển RTOS trong khi đã có rất nhiều loại trên thị trường? Câu hỏi này cũng giống như câu hỏi tại sao các hãng vẫn rất khoái sản xuất vi xử lý 8 bít trong khi ARM có sức mạnh vượt trội.
Lý do mình viết hOS một phần là vì đam mê, nhưng phần nhiều là để mọi người có thêm một lựa chọn dùng RTOS.
Ngoài những đặc tính về mức độ hiệu quả, một đặc tính khác của RTOS mà người dùng quan tâm là nó có dễ sử dụng và có tương thích với nhiều họ vi xử lý hay không.
Vấn đề dễ sử dụng được tác giả của hOS nghiên cứu kĩ lưỡng trước khi triển khai. Bạn sẽ thấy công việc cấu hình để hOS chạy trên MCU của bạn rất đơn giản và cũng rất linh hoạt. Vấn đề tương thích với nhiều họ vi xử lý cũng được khá nhiều nhà phát triển chuyên nghiệp quan tâm, vì hâu như họ không muốn phụ thuộc vào 1 dòng MCU, trong khi họ cũng không muốn cấu trúc chương trình của mình phải thay đổi mỗi khi nâng cấp sản phẩm.
Điểm khác biệt của hOS so với khá nhiều RTOS khác đó là toàn bộ việc lưu trữ và phục hồi ngữ cảnh của các tiến trình đều được đẩy cho CPU hoặc trình biên dịch tự làm. Việc này sẽ hiệu quả và chính xác hơn vì chỉ có CPU hoặc trình biên dịch mới biết những thanh ghi nào của CPU được sử dụng trong hàm chuyển ngữ cảnh. Việc này cũng cách ly ứng dụng của các bạn khỏi những lệnh mã máy khó hiểu.
Ban đầu, hOS được mình phát triển cho dòng STM8 của STmicroelectronics. Sau đó hOS được port thành công cho dòng ATMEGA của ATMEL. Việc port sang các dòng khác, kể cả ARM cũng sẽ rất đơn giản.
Hiệu quả của hOS còn cần phải kiểm chứng, và bản thân hOS cũng mới đi đến giai đoạn gần hoàn thiện phiên bản thứ nhất.
Các bạn tải về tệp gửi kèm. Trong đó là thư viện nanokernel của hOS và một ứng dụng demo gồm có 4 tiến trình chạy song song. Ứng dụng được viết trên AVRGCC. Các bạn có thể dùng AVRStudio để chạy, biên dịch và sửa đổi để test thử. Có gì thắc mắc các bạn cứ post lên nhé.
Mình sẽ tiếp tục cập nhật và mong hồi âm của các bạn.
Comment