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.
                
              
                                            
                                
            
 
            
                 138 trang
138 trang | 
Chia sẻ: tuandn | Lượt xem: 3339 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Khóa luậ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