Luận văn Nghiên cứu linux trên hệ thống nhúng và ứng dụng

Ngày nay,với sự phát triển của các linh kiện điện tử và công nghiệp sản xuất vi mạch, hệ thống Linux nhúng đã xuất hiện hầu như ở khắp mọi khía cạnh trong cuộc sống, từ các thiết bị điện tử dân dụng thông thường đến những thiết bị mạng cao cấp. Nếu so sánh các thiết bị này với các hệ thống nhúng truyền thống thì mức độ phức tạp và khả năng đáp ứng cao hơn rất nhiều.

pdf138 trang | Chia sẻ: vietpd | Lượt xem: 2141 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu linux trên hệ thống nhúng và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ KHOA CÔNG NGHỆ THÔNG TIN CHUYÊN NGHÀNH MẠNG-MÁY TÍNH ………..Y Z……….. KHÓA LUẬN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU LINUX TRÊN HỆ THỐNG NHÚNG VÀ ỨNG DỤNG GVHD:THS HUỲNH HỮU THUẬN SVTH: TRẦN QUANG THUẬN 104102130 PHAN BÁ MINH 103102110 TP Hồ Chí Minh-Tháng 3/2008 Lời cảm ơn Đầu tiên chúng em xin gửi những lời cảm ơn sâu sắc đến Ban giám hiệu trường Đại học Kỹ Thuật Công Nghệ,Khoa Công Nghệ Thông Tin đã tận tình giảng dạy, truyền đạt cho chúng em những kiến thức quý báu. Bên cạnh đó, quý thầy cô đã tạo cho chúng em những điều kiện tốt nhất trong học tập và rèn luyện nhân cách suốt những năm học vừa qua. Chúng em xin gửi những lời biết ơn đặc biệt và chân thành nhất đến thầy Th.s Huỳnh Hữu Thuận vì sự hướng dẫn tận tình cùng sự quan tâm chu đáo để chúng em có thể hoàn thành đề tài này một cách tốt đẹp. Chúng con cũng xin gửi đến bố mẹ của chúng con những tình cảm và lòng tri ân tận đáy lòng. Bố mẹ đã ở bên chúng con để động viên và giúp đỡ chúng con về mọi mặt trong những giai đoạn khó khăn khi thực hiện đề tài. Và cuối cùng xin được gửi lời cảm ơn đến tất cả các bạn bè trong và ngoài khoa vì những sự giúp đỡ và tình cảm của các bạn trong những năm tháng nơi giảng đường đại học thân yêu. Sinh viên thực hiện Trần Quang Thuận,Phan Bá Minh Lời nói đầu. Ngày nay,với sự phát triển của các linh kiện điện tử và công nghiệp sản xuất vi mạch,hệ thống Linux nhúng đã xuất hiện hầu như ở khắp mọi khía cạnh trong cuộc sống, từ các thiết bị điện tử dân dụng thông thường đến những thiết bị mạng cao cấp. Nếu so sánh các thiết bị này với các hệ thống nhúng truyền thống thì mức độ phức tạp và khả năng đáp ứng cao hơn rất nhiều.Việc tích hợp hệ điều hành lên hệ thống nhúng làm đơn giản hóa quá trình nghiên cứu và phát triển các sản phẩm, rút ngắn thời gian và chi phí xây dựng hệ thống vì các hệ thống này được thừa hưởng những tính chất ưu việt của một hệ điều hành nói chung cũng như Linux nói riêng, như tính ổn định, nhỏ gọn, thực thi nhanh và có khả năng can thiệp sâu vào phần cứng. Hơn thế nữa, cùng với cộng đồng sử dụng Linux rộng lớn trên khắp thế giới và các phần mềm mã nguồn mở đa dạng làm cho việc phát triển hệ thống Linux nhúng trở thành một chiến lược được các công ty lựa chọn hàng đầu. Nhờ phần mểm mã nguồn mở khiến cho việc tùy biến một ứng dụng phù hợp yêu cầu trở nên dễ dàng hơn. Nhận thức được tầm quan trọng này, đề tài thực hiện việc tìm hiểu Linux cho các hệ thống nhúng và các ứng dụng trên hệ thống nhúng. Phần cứng đề cập đến trong đề tài là kit XUP Virtex-II Pro Development Syste Xilinx (XUPV2P). Cụ thể sẽ tiến hành việc cài đặt hệ điều hành MontaVista Linux – một gói Linux chuyên dành cho các hệ thống nhúng – lên kiến trúc vi xử lý PowerPC405 được tích hợp trên kit XUPV2P. Đồng thời xây dựng các ứng dụng chạy trên hệ điều hành này. Ứng dụng trọng tâm là giao tiếp truyền dữ liệu qua TCP/IP, với server là ứng dụng chạy trên hệ thống nhúng đã cài đặt và client là ứng dụng chạy trên hệ điều hành Windows. Ứng dụng cung cấp khả năng upload, download dữ liệu và có phân quyền với giao diện người dùng thân thiện. Mục lục Chương 1 Linux trên hệ thống nhúng................................................................7 1.1 Khái niệm cơ bản...................................................................................7 1.2 Hệ điều hành Linux nhúng (Embedded Linux).....................................8 1.3 Real-time Linux.....................................................................................9 1.4 Phân loại hệ thống Linux nhúng............................................................9 1.4.1 Kích thước .......................................................................................10 1.4.2 Khả năng đáp ứng theo thời gian ....................................................11 1.4.3 Khả năng kết nối .............................................................................11 1.4.4 Khả năng tương tác với người dùng................................................12 1.5 Kiến trúc tổng quát của một hệ thống Linux nhúng............................12 1.5.1 Khối Data Acquisition.....................................................................13 1.5.2 Khối Control....................................................................................14 1.5.3 Khối System management...............................................................15 1.5.4 Khối User interface .........................................................................16 1.6 Tổng quan về kernel của Linux/Unix..................................................16 1.6.1 Mô hình process/kernel: ..................................................................16 1.6.2 Thi hành một process ......................................................................18 1.6.3 Tái thực thi các process ...................................................................18 1.6.4 Không gian địa chỉ các tiến trình: ...................................................20 1.6.5 Sự đồng bộ hóa và những vùng then chốt:......................................21 1.6.6 Việc giao tiếp tín hiệu và liên tiến trình..........................................22 1.6.7 Quản lí tiến trình: ............................................................................23 1.6.8 Quản lý bộ nhớ ................................................................................25 1.6.9 Device Drivers.................................................................................28 Chương 2 Thiết kế một hệ thống Linux nhúng ...............................................30 2.1 Phần cứng hỗ trợ..................................................................................30 2.1.1 Kiến trúc CPU .................................................................................30 U 2.1.2 Bus và các chuẩn giao tiếp ..............................................................31 2.1.3 Các thiết bị lưu trữ...........................................................................31 2.1.4 Kết nối mạng ...................................................................................32 2.2 Các công cụ phát triển .........................................................................33 2.3 Chọn lựa và biên dịch Linux kernel ....................................................34 2.3.1 MontaVista Linux ...........................................................................37 2.3.2 uClinux ............................................................................................38 2.3.3 Cấu hình kernel ...............................................................................38 2.4 Xây dựng hệ thống thư mục gốc (root filesystem)..............................40 2.4.1 Hệ thống tập tin (File Systems).......................................................40 2.4.2 Các thư mục trên Linux...................................................................40 Chương 3 Kit XUPV2P và gói phần mềm phát triển của Xilinx ....................44 3.1 Kiến trúc phần cứng của Kit XUPV2P................................................44 3.1.1 Tổng quan........................................................................................44 3.1.2 Khối FPGA Virtex II Pro ................................................................46 3.1.3 System ACE ....................................................................................47 3.1.4 Ethernet adaptor ..............................................................................58 3.1.5 Cấu trúc MicroBlaze .......................................................................69 3.1.6 PowerPC..........................................................................................78 3.2 Các gói phần mềm phát triển của Xilinx .............................................85 3.2.1 Xilinx EDK......................................................................................86 3.2.2 BSB Winzard (Base System Builder) .............................................86 Chương 4 Thiết kế hệ thống nhúng dùng Linux..............................................88 4.1 Những công cụ thực hiện.....................................................................88 4.1.1 Hardware .........................................................................................88 4.1.2 Software...........................................................................................88 4.2 Kiểm tra kit XUPV2P..........................................................................89 4.3 Thiết kế phần cứng cho hệ thống với Xilinx BSB ..............................90 4.3.1 Cấu hình sử dụng bộ xử lý PowerPC ..............................................90 4.3.2 Cấu hình các thiết bị ngoại vi..........................................................93 4.3.3 Cấu hình phần mềm.........................................................................96 4.4 Thiết lập môi trường biên dịch chéo....................................................98 4.5 Biên dịch nhân MontaVista Linux trên kiến trúc PowerPC405........100 4.5.1 Tải kernel source và chuẩn bị driver .............................................100 4.5.2 Cấu hình nhân................................................................................102 4.5.3 Tạo ACE file cấu hình cho FPGA và nạp ảnh kernel ...................105 4.5.4 Quá trình khởi động Linux trên kit XUPV2P ...............................107 4.6 Xây dựng cấu trúc thư mục gốc cho hệ điều hành ............................108 Chương 5 Lập trình ứng dụng Server chạy trên hệ thống nhúng và Client trên Windows................................................................................................112 5.1 Mô tả hệ thống file server của uClinux .............................................112 5.2 Cấu trúc lập trình: ..............................................................................113 5.3 Lưu đồ thiết kế:..................................................................................114 5.4 Chương trình File Client MP3 trên Visual C++ MFC: .....................115 5.4.1 Giới thiệu :.....................................................................................115 5.4.2 Chương trình File Client MP3: .....................................................116 5.4.3 Giao diện File Client MP3: .............Error! Bookmark not defined. Chương 6 Giới hạn của đề tài và hướng phát triển trong tương lai...............118 6.1 Tổng kết những phần đã thực hiện ....................................................118 6.2 Giới hạn .............................................................................................118 6.3 Hướng phát triển trong tương lai .......................................................118 Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Chương 1 Linux trên hệ thống nhúng 1.1 Khái niệm cơ bản Linux là một từ thay thế cho nhân Linux, một hệ thống Linux hay một bản phân phối Linux (Linux distribution). Khái niệm về Linux cũng có thể hiểu đơn giản là một hệ điều hành. Chính xác thì Linux dùng để chỉ hạt nhân được Linus Tovalds phát triển và duy trì. Mã nền tảng này chỉ bao gồm hạt nhân và không có một ứng dụng kèm theo khác. Hạt nhân chỉ cung cấp cho phần lõi của hệ thống khả năng quản lý phần cứng dễ dàng. Nó không phải là phần mềm đầu tiên được hệ thống thực thi, vì thực chất là bootloader sẽ được thực thi trước. Tuy nhiên, một khi hạt nhân được thực thi, nó sẽ không bao giờ thoát hay trao quyền điều khiển cả hệ thống cho đến khi hệ thống tắt. Nó có tác dụng điều khiển tất cả phần cứng và cung cấp những khả năng quản lý ở cấp độ logic cao, ví dụ như các tiến trình, sockets, tập tin và các ứng dụng khác chạy trên hệ thống. Linux cũng có thể dùng để thiết kế chuyên biệt cho một hệ thống phần cứng cùng với nhiều ứng dụng khác. Một nhóm phát triển thường đề cập đến vấn đề họ sử dụng Linux trong các sản phẩm mới của họ, họ muốn nói đến không chỉ là hạt nhân Linux mà còn kèm theo các ứng dụng trên sản phẩm mới này. Điều này có ý nghĩa chỉ một hệ thống Linux ngoài hạt nhân còn kèm theo một số lượng lớn các phần mềm cùng chạy với hạt nhân. Thông thường là các phần mềm GNU, các thư viện C và các tập tin nhị phân của ứng dụng . Cũng có thể bao gồm cả giao diện đồ họa và khả năng đáp ứng real-time. Hệ thống Linux có thể xây dựng theo tùy thích, hoặc có thể dựa vào các gói phân phối của các nhà cung cấp. Nhóm phát triển nào đó có thể xây dựng một hệ thống theo ý thích của họ, và ngược lại, bạn có thể dùng các phiên bản có giao diện đổ họa và các tiện ích tiện lợi khác như gói Red Hat, Debian hay Fedora Core. Những hệ thống Linux có nhiều mục đích sử dụng khác nhau, chạy những ứng dụng khác nhau SVTH: Trần Quang Thuận – Phan Bá Minh. - 7 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. ngoại trừ phần hạt nhân có tác dụng không hề thay đổi trên các hệ thống. Các phân phối như Red Hat, Mandrake, SuSE, Debian, Slackware, Caldera, MontaVista, Embedix, BlueCat, PeeWeeLinux, và các phân phối Linux khác có thể khác nhau về kích thước, giá cả, mục đích sử dụng nhưng lại có một điểm chung nhất: cung cấp cho người dùng tập hợp file và những cách thức cài đặt để người dùng xây dựng hạt nhân cùng các ứng dụng khác trên nhiều loại phần cứng tùy theo mục đích xác định. Cách thức cài đặt có thể hoàn toàn tự động hoặc từng bước chi tiết trong tài liệu được cung cấp tùy theo người dùng thông thường hay các nhà phát triển hệ thống. 1.2 Hệ điều hành Linux nhúng (Embedded Linux) Thông thường bạn sẽ sử dụng một phiên bản Linux chính thức được cung cấp bởi những hãng cung cấp phần mềm cho hệ thống của bạn. Nhưng đôi khi, bạn lại muốn dùng một gói Linux được thiết kế với hạt nhân phù hợp với thiết bị đặc biệt hoặc chỉ hỗ trợ chuyên biệt cho một ứng dụng nào đó. Các gói Linux cung cấp rất nhiều nhân khác nhau, ví dụ như các nhân Linux thông thường không được tối ưu và kèm các bản vá để hỗ trợ khả năng chạy các công cụ debug, chẵng hạn như công cụ debug cho nhân. Điểm khác biệt chủ yếu là các nhân dùng cho hệ thống nhúng khác với dùng cho các máy tính (workstation) hay máy phục vụ (server) ở cách cấu hình hạt nhân khi biên dịch. Thuật ngữ “hệ thống Linux nhúng” chỉ những hệ thống nhúng dựa trên nhân Linux và bao hàm cả ý nghĩa sử dụng những thư viện đặc biệt và các công cụ người dùng cùng với hạt nhân. Một gói cung cấp hệ điều hành Linux nhúng cũng có thể bao gồm cả nhóm các gói công cụ phát triển (development framework), hoặc nhóm các phần mềm được thay đổi để có thể sử dụng trên hệ thống nhúng hoặc cả hai. Nhóm các gói công cụ phát triển bao gồm các phần mềm phục vụ cho việc dễ dàng phát triển trên hệ thống nhúng. Như các trình duyệt mã nguồn (source browser), các bộ biên dịch chéo, sửa lỗi, phần mềm quản lý dự án, tạo boot image…Gói công cụ phát triển này sẽ được cài đặt trên máy host. Ngược lại, đối với nhóm các phần mềm ứng dụng trên hệ thống nhúng sẽ được thực thi trên target là các hệ thống nhúng, như các thư viện đặc biệt, các tập tin thực thi và các tập tin cấu hình, với giải pháp tổng SVTH: Trần Quang Thuận – Phan Bá Minh. - 8 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. quát thì nó cũng sẽ bao gồm cả công cụ tạo ra cấu trúc thư mục gốc cho hệ thống (root filesystem). Như vậy đến đây chúng ta có 2 khái niệm host và target. Host sẽ dùng để chỉ máy tính phát triển cho hệ thống nhúng, và target để chỉ các hệ thống nhúng. Hình 1-1: Khái niệm host và target 1.3 Real-time Linux Ban đầu, real-time Linux dùng để chỉ dự án RTLinux đưa ra vào năm 1996 của Michael Barabanov dưới dự giám sát của Victor Yodaiken. Dự án nhằm cung cấp khả năng đáp ứng thời gian chính xác trong môi trường Linux. Tuy nhiên, ngày nay có rất nhiều dự án cung cấp khả năng đáp ứng real-time trong môi trường hệ điều hành Linux. RTAI, Kurt hay Linux/RK đều cung cấp khả năng real-time. Một số dự án cải tiến khả năng real-time bằng cách thêm một hạt nhân thứ 2 vào trong hạt nhân Linux, một số khác cải thiện bằng các bản vá tối ưu hơn. Các khái niệm về real-time có vẻ khó hiểu nhưng chúng ta cũng có thể hiểu đơn giản hơn, đó là những hệ thống đảm bảo có thể hoạt động và đáp ứng gần như tức thời và có độ tin cậy cao. Như các hệ thống audio stream hay các máy trong công nghiệp, đặc biệt chú trọng những đáp ứng về thời gian. Chúng ta sẽ hiểu thêm khi đi vào phân loại các hệ thống Linux nhúng. 1.4 Phân loại hệ thống Linux nhúng Những hệ thống nhúng nào có thể sử dụng Linux? Vì sao lại chọn Linux? Những vấn đề quan trọng nào phát sinh khi sử dụng Linux trên hệ thống nhúng? Hay có bao nhiêu người thực sự dùng Linux trên hệ thống nhúng của họ? Và dùng như thế nào? Có lẽ còn rất nhiều câu hỏi khác phát sinh khi làm quen với Linux trên hệ thống nhúng. Đây có lẽ là những câu hỏi khó trả lời ở thời điểm này, phần này sẽ cố gắng giúp bạn có cái nhìn tổng quát và phần nào tìm được câu trả lời. SVTH: Trần Quang Thuận – Phan Bá Minh. - 9 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Chúng ta có thể thấy đơn giản nhất là các thiết bị mạng thông dụng, như các router hay máy in mạng cho phép người dùng cấu hình thông qua web-base. Chúng đều được tích hợp một nhân Linux để có thể thực hiện những công việc đó. Nếu xem xét thì trong rất nhiều lĩnh vực đều có sự hiện diện của Linux nhúng. Ở đây chúng ta sẽ điểm qua bằng cách phân loại các hệ thống linux nhúng theo các tiêu chí: kích thước, khả năng đáp ứng thời gian, kết nối và khả năng tương tác với bên ngoài. 1.4.1 Kích thước Kích thước của các hệ thống Linux nhúng được xác định ở nhiều phương diện khác nhau. Đầu tiên là kích thước thực bên ngoài đến những đơn vị kích thước của máy tính như tốc độ CPU, dung lượng RAM và lưu trữ. Điều đáng chú ý ở đây là Linux không thể chạy trên các hệ thống 16-bit1, nếu so sánh với các thiết bị nhúng truyền thống thì hệ thống Linux nhúng có thể được coi là những hệ thống lớn. Đối với những hệ thống nhỏ sử dụng những CPU tốc độ thấp, với chỉ khoảng 2MB ROM và 4MB RAM. Điều này không có nghĩa là Linux không thể chạy với dung lượng RAM thấp hơn, nhưng sẽ khó thực hiện. Hiện tại vẫn có những phân phối Linux chỉ cần lưu trữ trên duy nhất một đĩa mềm. Những hệ thống trung bình được tích hợp các CPU có tốc độ tương đối và dùng khoảng 32MB ROM và 64MB RAM. Hầu hết những sản phẩm tiêu dùng đều nằm ở kích thước này. Như các máy PDA, máy chơi MP3 hay các hệ thống giải trí, thiết bị mạng. Một số thiết bị còn có khả năng mở rộng lưu trữ trên các thẻ nhớ, CompactFlash card, thậm chí cả đĩa cứng thông thường. Các hệ thống lớn sử dụng bộ xử lý mạnh hoặc đa bộ xử lý, kết hợp với dung lượng RAM và dung lượng lưu trữ lớn. Thông thường các hệ thống này được sử dụng trong những môi trường cần xử lý khối lượng lớn các phép tính để thực hiện các tác vụ chuyên biệt. Hệ thống chuyển mạch trong thông tin thoại, hay việc giả lập bay. Các hệ 1 Nói Linux không thể chạy trên hệ thống 16-bit không hoàn toàn chính xác, đã từng có dự án Embeddable Linux Kernel Subset (ELKS), chạy Linux trên các hệ thống xử lý cũ như Intel 8086 hay 268. Nhưng với sự phát triển hiện nay thì Linux trên các hệ thống cũ là giải pháp không hề khả thi. SVTH: Trần Quang Thuận – Phan Bá Minh. - 10 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. thống này đặt chức năng lên hàng đầu và các yếu tố kích thước, giá thành và độ phức tạp chỉ là thứ yếu. 1.4.2 Khả năng đáp ứng theo thời gian Có hai mức độ đáp ứng theo thời gian cho hệ thống nhúng: nghiêm ngặt và thông thường. Đối với hệ thống đòi hỏi đáp ứng nghiêm ngặt về thời gian, nó phải phản ứng lại trong một thời gian xác định đưa ra, nếu không thì sẽ có những hậu quả nghiêm trọng xảy ra. Giả sử trong một nhà máy, các công nhân giữ những vật liệu cần được cắt bằng các máy cắt tự động. V