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 |
Chia sẻ: tuandn | Lượt xem: 3145 | 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