-58- TÌM HIỂU HỆ ĐIỀUHÀNHTHỜIGIANTHỰCLINUX VÀ PHÁTTRIỂNMỘTSỐỨNGDỤNG Phạm Công Phan MSV: 0320230 Email: phanpc@gmail.com Người hướng dẫn: PGS.TS. Nguyễn Ngọc Bình 1. Giới thiệu Xu hướng lập trình các hệ thống nhúng, thờigianthực đã ra đời khá lâu trên thế giới, đặc biệt là lĩnh vực thờigianthực là một lĩnh vực khó, bằng chứng là đã có rất nhiều công trình khoa học đóng góp cho lĩnh vực này. Hiện tại ở Việt Nam đang rất quan tâm đến hệ thống nhúng (với sự xuất hiện của các thiết bị nhúng điển hình như các PDA, các đồ gia dụng trong gia đình ), là một xu hướng khá mới mẻ nhưng không phải là khó nếu biết nắm bắt công nghệ, tìm hiểu sâu về kiến trúc của hệ thống nhúng và kỹ thuật lập trình nhúng. 2. Mục đích của khoá luận Mục đích của khoá luận là tìm hiểu môi trường lập trình hệ thống nhúng thờigianthực trên Linux. Tìm hiểu các hỗ trợ thờigianthực của nhân Linux chuẩn, các tiếp cận cải thiện độ trễ trên Linux. Khoá luận nghiên cứu kiến trúc của mộthệđiềuhànhthờigianthực RTOS – nhân thờigianthực dựa trên nền nhân Linux chuẩn – Standard Linux Kernel. Đặc biệt khoá luận đi sâu vào tìm hiểu kiến trúc và các dịch vụ thờigianthực được cung cấp bởi RTAI – một mở rộng thờigianthực cứng của nhân Linux chuẩn, nhân thờigian thực, giao diện lập trình thờigianthực mạnh mẽ trên nền Linux, dựa vào cơ chế trừu tượng hoá ngắt trên Linux. Đồng thời cũng nhấn mạnh các ưu và nhược điểm của “hệ điềuhànhthờigian thực cứng” này. Khoá luận cũng trình bày các nguyên lý cơ bản để xây dựngmộtứngdụng nhúng trên Linux như: môi trường lập trình trên hệ thống pháttriển chủ, các cách để thiết lập pháttriểnvà dò lỗi ứngdụng nhúng, các lựa chọn và cấu hình nhân Linux chuẩn để hỗ giao diện lập trình thờigianthực RTAI. 3. Thờigianthực trong các hệ thống Linux nhúng. Giới thiệu các khái niệm cơ bản về hệ thống nhúng, hệ thống thờigian thực, hệ thống thờigianthực cứng, hệ thống thờigianthực mềm. Có thể nói hệ thống nhúng bao gồm phần mềm nhúng trong mộtmột thiết bị nhúng, một thiết bị “có chứa một máy tính bên trong” để điều khiển và quản lý các hệ thống khác. Hệthờigianthực là hệ thống phải đáp ứng lại các sự kiện tương tác từ môi trường đúngthời gian. Hệthờigianthực không có nghĩa là phải có tốc độ nhanh. Linux là một nhân hệđiềuhành mã nguồn mở, với một cộng đồng pháttriển thân thiện , năng động và chia sẻ. Linux có tính khả chuyển và khả năng co giãn cao. Tuy nhiên Linux không phải là hệ điềuhànhthờigian thực bởi mục đích của Linux là đạt được thông lượng tối đa nên độ trễ trễ khá lớn đi ngược lại tôn chỉ của một hệ điềuhànhthờigian thực. Do đó ta cần mộtsố tiếp cận để cải thiện độ trễ của nhân Linux chuẩn như: cải thiện chính sách giành quyền ưu tiên, trừu tượng hoá ngắt coi nhân Linux như là một tác vụ thờigianthực có độ ưu tiên thấp nhất, có hai mở rộng thờigianthực dựa trên cơ chế trừu tượng hoá ngắt là các hệđiềuhànhthờigianthực RTLinux và RTAI. Ngoài ra trong các phiên bản nhân Linux mới đây cũng đã có nhưng cải tiến hơn trong tiếp cận thờigian thực, và hỗ trợ chuẩn POSIX cho các tác vụ thờigian thực. 4. Giao diện lập trình thờigianthực RTAI. RTAI – Realtime Application Interface là giải pháp thờigianthực cho Linux dựa trên phiên bản mở rộng thờigianthực RTLinux. Những tính năng quan trọng nhất của RTAI bao gồm: các phương thức giao tiếp liên tiến trình rất đa dạng và mềm dẻo và giao diện lập trình tương ứng cho phép tạo ra các tác vụ thờigianthực trong không gian người dùng (thư viện LXRT hỗ trợ tạo ra các tác vụ thờigianthực cứng chạy trong không gian nhân – kernel -59- space), tránh được điểm bất lợi khi phải vận hành trong không gian nhân như trong RTLinux. 5. Xây dựngmộthệ thống Linux nhúng sử dụng RTAI. Chương này đưa ra cách thức chuyển đổi một phiên bản Linux chuẩn sang mộthệđiềuhành nhúng, mức độ còn tương quan giữa các phiên bản nhúng và phiên bản chuẩn. Vì khi mộthệđiềuhành nhúng đã được làm tối ưu cho một thiết bị và mục đích cụ thể thì nhiều phần code trong Linux chuẩn không còn cần thiết nữa. Trong trường hợp có các ràng buộc về thiết bị lưu trữ, một bước quan trọng là phải lược bỏ bớt mã trong nhân Linux gọn nhẹ tới mức có thể. Chẳng hạn, kích thước của thư viện C được lược bỏ đi các hàm không cần thiết, chằng hạn như thay thế nó bởi thư việc uclibc… 6. Xây dựngứngdụng demo. Trên cơ sở nghiên cứu lý thuyết về pháttriển nhúng trên môi trường Linux sử dụng giao diện lập trình thờigianthực RTAI, áp dụng vào đặc tả, phân tích thiết kế và xây dựngứngdụng áp dụng Máy bán nước tự động – Drink Vending Machine (DVM). Tài liệu tham khảo [1] Dough Abbott, Linux For Embedded And Realtime Applications, Elsevier Science (USA), 2003. [2] Michael Barr, Programming Embedded Systems in C and C++, O'Reilly, First Edition January 1999. [3] Dr. Jürgen Sauermann, Melanie Thelen, Realtime Operating Systems, Concepts and Implementation of Microkernels for Embedded Systems, Publised year ???. Phillip A. Laplante, Realtime Systems design and analysis, A JOHN WILEY & SONS, INC., PUBLICATION, IEEE Press, Third edition, 2004. [4] Herman Bruyninckx, K.U.Leuven, Real-Time and Embedded Guide, Mechanical Engineering, Leuven Belgium, Herman.Bruyninckx@mech.kuleuven.ac .be, 2000, 2001, 2002. [5] Karim Yaghmour , Building Embedded Linux Systems, O'Reilly, April 2003, pages: 416. [6] Danese Cooper, Chris DiBona, Mark Stone, Open Sources 2.0, O'Reilly, October 2005, pages: 488. [7] Rtai Programming Guide 1.0, Lineo, Inc, September 2000. [8] Giovanni Racciu <gracciu@xystum.it>, Paolo Mantegazza <mantegazza@aero.polimi.it >, RTAI 3.3 User Manual rev 0.2, 2006. [9] Pasi Sarolahti, Real-Time Application Interface, Research seminar on Real- Time, Linux and Java, University of Helsinki, Department of Computer Science, 26th February 2001. [10] Alfred Strohmeier, Thomas Baar, Applying Fondue to Specify a Drink Vending Machine, Software Engineering Laboratory, Swiss Federal Institute of Technology Lausanne (EPFL), CH-1015 Lausanne, Switzerland, 2003. . -58- TÌM HIỂU HỆ ĐIỀU HÀNH THỜI GIAN THỰC LINUX VÀ PHÁT TRIỂN MỘT SỐ ỨNG DỤNG Phạm Công Phan MSV: 0320230 Email: phanpc@gmail.com. các hệ thống Linux nhúng. Giới thiệu các khái niệm cơ bản về hệ thống nhúng, hệ thống thời gian thực, hệ thống thời gian thực cứng, hệ thống thời gian thực