intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Báo cáo tốt nghiệp: Hệ điều hành nhúng uClinux

Chia sẻ: Abcdef_6 Abcdef_6 | Ngày: | Loại File: PDF | Số trang:55

280
lượt xem
69
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Hiện nay, nhu cầu sử dụng các hệ điều hành nhúng đang tăng dần theo tốc độ phát triển của sức mạnh phần cứng, độ phức tạp phần mềm cũng như yêu cầu ngày càng cao của người sử dụng. Với các ưu thế về giá cả, tính năng cũng như cộng đồng hỗ trợ, Embedded Linux đang ngày càng được ưa chuộng.

Chủ đề:
Lưu

Nội dung Text: Báo cáo tốt nghiệp: Hệ điều hành nhúng uClinux

  1. TRƯỜNG ………………… KHOA……………………… ----- ----- BÁO CÁO TỐT NGHIỆP Đề tài: Hệ điều hành nhúng uClinux
  2. Mục lục Mở đầu ........................................................................................................................ 1 Phần A : Lý thuyết chung ............................................................................................ 2 Chương 1 . Hệ điều h ành nhúng uClinux ................................................................ ..... 2 1.1. Nhân hệ điều hành Linux ............................................................................... 2 1 .1.1. Lịch sử nhân hệ điều hành Linux ............................................................ 2 1 .1.2. Tổ chức của nhân hệ điều hành Linux .................................................... 3 1 .1.3. Tổ chức thư mục .................................................................................... 5 1.2. Hệ điều hành nhúng uClinux ......................................................................... 7 1 .2.1. Quá trình phát triển hệ điều hành nhúng uClinux................................ .... 7 1 .2.2. Kiến trúc hệ điều h ành uClinux ................................ .............................. 8 1 .2.3. Các thư viện sử dụng để phát triển hệ điều hành uClinux ....................... 9 1 .2.4. Driver của các ngoại vi ................................................................ ........... 9 1 .2.5. Mã nguồn hệ điều h ành uClinux ................................ ........................... 10 Chương 2 . Vi điều khiển S3C44B0X và kit phát triển................................ ............... 12 2.1. Vi điều khiển S3C44B0X ............................................................................ 12 2 .1.1. Các đặc điểm của vi điều S3C44B0X ................................................... 12 2 .1.2. Sơ đồ chân................................................................ ............................ 16 2 .1.3. Sơ đồ khối ................................................................ ............................ 17 2 .1.4. Chức năng một số khối chính ............................................................... 18 2.2. Kit phát triển HT44B0 ................................................................................. 33 Phần B : Thực nghiệm ............................................................................................... 36 Chương 3 . Biên d ịch mã nguồn uClinux và xây dựng ứng dụng............................... 36 3.1. Biên dịch m ã nguồn hệ điều h ành uClinux................................................... 36 3 .1.1. Môi trường và các công cụ cần để biên d ịch ................................ ......... 36 3 .1.2. Lưu đồ quá trình biên dịch và các b ước tiến h ành ................................. 36 3.2. Nhúng hệ điều hành vào vi điều khiển ......................................................... 42 3 .2.1. Thiết lập giao tiếp giữa kit và máy tính ................................................ 42 3 .2.1. Đưa file ảnh hệ điều hành vào vi điều khiển ................................ ......... 44 3.3. Xây dựng ứng dụng ................................ ................................ ..................... 49 Kết luận ................................................................ ................................ ..................... 53 Các tài liệu tham khảo ............................................................................................... 54
  3. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Mở đầu Trong những thập niên gần đây hệ thống nhúng được nghiên cứu mạnh mẽ và đã có rất nhiều ứng dụng trong thực tế . Các sản phẩm ứng dụng hệ thống nhúng rất đa dạng từ hệ thống dẫn đường trong tên lửa , các robot thông m ình đ ến các sản phẩm tiêu dùng như máy giặt , máy in , các thiết bị giải trí như điện thoại , máy nghe nhạc ... Hệ thống nhúng phát triển dựa trên sự phát triển phần cứng và ph ần mềm . Phần cứng phải mạnh , đầy đủ tính năng cho h ệ thống còn ph ần mềm phải được phát triển khai thác đư ợc tài nguyên ph ần cứng đồng thời phải đáp ứng được các đặc tính của hệ thống nhúng là tính thời gian thực , điều khiển chính xác , ổn định . Ứng dụng hệ điều h ành mã nguồn mở uClinux cho các hệ thống nhúng dùng vi điều khiển có nhân vi xử lý 32 bit đã giúp cho quá trình phát triển ph ần mềm cho h ệ thống nhanh hơn chi ph í thấp hơn và khai thác được sức mạnh của tài nguyên phần cứng . Lương Thế Oanh 1
  4. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Phần A : Lý thuyết chung Chương 1 . Hệ điều hành nhúng uClinux 1.1. Nhân hệ điều hành Linux 1.1.1. Lịch sử nhân hệ điều hành Linux Linux là m ột nhân hệ điều hành được phát triển bởi Linus Torvalds vào năm 1991 trên cơ sở cải tiến phiên b ản UNIX có tên Minix do giáo sư Andrew S.Tanenbaum xây d ựng và ph ổ biến . Sau đó Linus Torvalds đã công bố mã nguồn của mình cho m ọi người và mong muốn mọi người có thể đóng góp ý kiến , phát hiện lỗi và phát triển nó ngày càng tốt hơn . Và cũng từ thời điểm đó , theo tư tư ởng GNU rất nhiều chuyên gia trên toàn thế giới đã tham gia vào quá trình phát triển Linux và vì vậy Linux ngày càng phát triển , mạnh mẽ , ổn định , có độ tin cậy cao và đ áp ứng được nhu cầu của người dùng . Một số mố c lịch sử quan trọng trong quá trình phát triển nhân hệ điều hành Linux : Sau ba năm nhân Linux ra đời , đ ến ngày 14-3-1994, hệ điều hành Linux phiên bản 1.0 được phổ biến . Thành công lớn nhất củ a Linux 1.0 là nó đã hỗ trợ giao thức mạng TCP/IP chuẩn UNIX , sánh với giao th ức socket BSD- tương thích cho lập trình mạng . Trình đ iều khiển thiết bị đã được bổ sung để ch ạy IP trên mộ t mạng Ethernet hoặc trên tuyến đơn hoặc qua modem. Hệ thống file trong Linux 1.0 đ ã vượt xa hệ thống file của Minix thông thường , ngoài ra đ ã hỗ trợ điều khiển SCSI truy nhập đ ĩa tốc độ cao. Điều khiển bộ nh ớ ảo đã được mở rộng đ ể hỗ trợ điều khiển trang cho các file swap và ánh xạ bộ nh ớ của file đặc quyền . Vào tháng 3 -1995 , nhân 1.2 được phổ biến. Điều đáng kể của Linux 1.2 so với Linux 1.0 ở chỗ nó hỗ trợ một phạm vi rộng và phong phú ph ần cứng , bao gồm cả kiến trúc tuyến phần cứng PCI m ới . Nhân Linux 1.2 là nhân kết thúc dòng nhân Linux ch ỉ hỗ trợ P C . Cách đánh ch ỉ số các dòng nhân (h ệ điều hành) Linux : Hệ thống ch ỉ số được chia thành một số mứ c, chẳng hạn hai mức như 2.4 hoặc ba mức như 2.2.5. Trong cách đánh ch ỉ số như vậy , quy ước rằng với các ch ỉ số từ mứ c th ứ h ai trở đi , nếu là số chẵn Lương Thế Oanh 2
  5. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp thì dòng nhân đó đã khá ổn định và tương đối hoàn thiện , còn nếu là số lẻ thì dòng nhân đó vẫn đang được phát triển tiếp . Tháng 6 -1996 , nhân Linux 2.0 được phổ biến . Có hai đặc trưng nổi bật củ a Linux 2.0 là hỗ trợ kiến trúc phức hợp , b ao gồm cả cổng Alpha 64 -bit đ ầy đủ , và hỗ trợ kiến trúc đa bộ xử lý . Phân phố i nhân Linux 2.0 cũng thi hành được trên b ộ xử lý Motorola 68000 và kiến trúc SPARC củ a SUN . Tới năm 2000 , nhân Linux 2.4 được phổ b iến . Mộ t trong đặc điểm được quan tâm củ a nhân này là nó hỗ trợ mã ký tự Unicode 32 bít , rất thuận lợi cho việc xây dựng các giải pháp toàn diện và triệt đ ể đối với vấn đề ngôn ngữ tự nhiên trên ph ạm vi toàn th ế giới . Nhân Linux là phần mềm tự do được phân phố i theo Giấy phép sở hữu công cộng phần mềm GNU GPL ( General Public License ) . Vật lấ y phước của nhân Linux là chú chim cánh cụt - Tux . Hình 1 : Linus Torvald s và vậ t lấ y phước chú chim cánh cụt 1.1.2. Tổ chức của nhân hệ điều hành Linux Nhân được ví như trái tim của hệ điều hành . Về bản chất nhân cũng là một chương trình ph ần mềm máy tính nhưng ở cấp độ hệ thống có vai trò điều khiển các thành phần của hệ thống máy tính , quản lý tài nguyên của hệ thống , cung cấp một số dịch vụ và ph ần mềm cơ b ản cho máy tính , cung cấp môi trường thực thi có các ứng Lương Thế Oanh 3
  6. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp dụng khác nhau chạy trên hệ thống . Nhân chính là cầu nối giữa phần cứng vật lý của máy tính với và chương trình ứng dụng . Các dịch vụ của nhân được chạy trong chế độ đặc quyền của bộ xử lý . Trái lại , các chương trình ứng dụng đư ợc chạy trong chế độ người dùng hoàn toàn cách ly với hệ điều hành . Khi ứng dụng chạy trong ch ế độ ngư ời dùng gọi tới một dịch vụ hệ thống thông qua một giao diện , bộ xử lý chặn lại lời gọi và thi hành dịch vụ mức nhân hệ điều hành . Thông thường việc thi thực thi ở mức nhân đơn giản và nhanh hơn bởi vì nó không b ị chuyển giữa chế độ đặc quyền và không đặc quyền . Nhân của Linux gồm năm tiểu h ệ thống : Bộ phân thời gian cho tiến trình ( Process Schedule – SCHED ) : - Ho ạt động của máy tính , tại một thời điểm chỉ có một lệnh được thực thi . Tuy nhiên các hệ điều h ành đa nhiệm như Windows , Linux … đ ều cho phép nhiều chương trình chạy cùng một lúc . Các hệ điều hành đa nhiệm có thể làm được như vậy bằng cách chuyển quyền thực thi qua lại giữa các chương trình thật nhanh làm cho người dùng có cảm giác các chương trình chạy cùng lúc với nhau . Vi dụ người dùng có th ể vừa soạn thảo văn bản vừa có thể nghe . Trong hệ điều hành đa nhiệm thì bộ phân thời gian tiến trình đảm nhiệm nhiệm vụ n ày . SCHED được chia thành bốn khối :  Khối lu ật định thời (scheduling policy): chịu trách nhiệm phân bố xem tiến trình ( process ) nào được quyền truy xuất CPU. Hệ thống ho ạt động có thông suố t hay không nh ờ vào bộ luật này, tránh trường hợp một tiến trình lợi dụng sơ hở củ a điều lu ật mà chiếm thời gian h ệ th ống quá nhiều làm các tiến trình khác bị đóng băng (freeze) .  Khối phụ thuộc kiến trúc ( architeture-specific ): khối n ày gồm các m ã assembly phụ thuộc vào mỗi loại CPU dùng để tạm ngưng ho ạt động củ a tiến trình .  Khối độ c lập kiến trúc (architeture-independent): Khối gọ i các hàm từ khối phụ thuộ c kiến trúc và khối luật để chuyển giửa các tiến trình đồng thời nó còn gọi các hàm ở MM để thiết lập bộ nh ớ ảo cho các tiến trình được hồi phục lại . Khố i phụ thuộc kiến trúc sẽ khác nhau ở mỗi loại CPU (ỉ386, apha, v.v) nhưng khố i độc lập kiến trúc thì không đổi . Lương Thế Oanh 4
  7. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp  Khối h àm gọ i hệ thống ( system call ) . Gồm các hàm mà n gười dùng có thể dùng để tương tác với SCHED. Khi lập trình Linux và Unix sẽ quen với các hàm gọi h ệ thống n ày. Bộ quản lý bộ nhớ ( Memory Manager - MM) : - Bộ nhớ qui ước của các máy tính chỉ có 640KB . Do BIOS ch ỉ qu ản lý được tới FFFF , vùng nhớ cao từ A0000 trở lên dùng để ánh xạ BIOS , video card memory và các thiết b ị n goại vi khác , vùng nhớ còn lại tử 9 FFFF trở xuống tương đương với 640KB. Trong chế độ b ảo vệ ( p rotect mode ) của CPU 32 bit đưa ra khái niệm bộ nhở ảo ( Virtual Memory ) . Lúc này mỗi tiến trình được cấp tới 4GB bộ nhớ ảo . Nhưng nhân h ệ đ iều hành sẽ tạo ra mộ t bảng mô tả từng trang của bộ nhớ ảo với bộ nhớ vật lý . Bộ nh ớ vật lý bây giờ bao gồm cả bộ nhớ RAM và vùng nh ớ hoán vị trên đĩa cứng . Hệ thống file ảo : - Hệ thống này không ch ỉ cung cấp truy su ất đến hệ thống file trên đĩa cứng mà còn tất cả các ngoại vi . Trong Linux tất cả các tập tin , thư mụ c và các thiết bị đều được coi như là file . Ví dụ như máy in , cổng nố i tiếp , các ổ đĩa … đều được truy cập như là file . Linux cũng cung cấp các thuộ c tính truy cập cho file và thư mục , các thuộc tính có thể được thiết lập như cho phép đọc , cho phép ghi , cho phép th ực thi . Linux thiết lập chế độ bảo vệ đố i với các file hệ thống và h ạn ch ế quyền truy cập đối với các thiết bị . Giao diện m ạng ( Network Interface - NET) : - Trong nhân Linux dựng sẵn giao th ức TCP/UDP , IP và Ethernet . Bộ truyền thong nộ i bộ (Inter-process communication IPC) : - Một tiến trình trong Linux giao tiếp với các tiến trình khác và với nhân hệ điều hành thông qua mộ t cơ chế được gọi là bộ truyền thông nội bộ - IPC . Nó cho phép các tiến trình gửi hoặc nhận các thông điệp từ một tiến trình khác , sử dụng chung vùng nhớ chia sẻ và đ ồng bộ với các tiến trình khác . 1.1.3. Tổ chức thư mục Các file trong hệ thống Linux được đặt theo một trật tự trong các thư mục . Có mộ t thư mụ c chính trong đó chứa các thư mục con và các file . Lương Thế Oanh 5
  8. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Thư mục ./bin : Chứa các file thực thi d ạng nh ị phân và các chương trình khởi dộng của hệ thống được . Thư mục ./boot : Thư mụ c này chứ a file ảnh ( image file ) của nhân dùng cho quá trình khởi động . Thư mục ./dev : Thư mục này chứa các file thiết b ị . Thư mục ./etc : Thư mụ c này chứa các file cấu hình toàn cục của hệ thống . Thư mục ./home : Thư mụ c này chứ a các thư mục con đ ại diện cho mỗ i người dùng khi đăng nhập . Đây là nơi làm việc thường xuyên của người dùng . Khi người quản trị tạo tài kho ản cho m ột người dùng thì sẽ cấp cho người dùng mộ t thư mụ c cùng tên với tài kho ản người dùng nằm trong thư mụ c /home . Ngư ời dùng cho mọi quyền thao tác trên thư mục củ a mình và không ảnh hưởng đ ến người dùng khác . Thư mục ./lib : Thư mụ c này chứa các file thư viện .so hoặc .a . Các thư viện C và lien kết động cần cho chương trình ch ạy và cho toàn hệ thống . Thư mục ./lost+found : Khi ch ạy chương trình fsck , nếu tìm th ấy mộ t chuỗi dữ liệu nào thất lạc trên đ ĩa cứng và không lien quan đến các tập tin , Linux sẽ gom chúng lại và đặt trong thư mục này đ ể n ếu cần người dùng có thể đọ c và giữ lại dữ liệu bị m ất . Thư mục ./mnt : Thư mụ c này ch ứa các kết gán ( mount ) tạm thời đ ến các ổ đ ĩa hoặc thiết b ị khác . Thư mục ./sbin : Thư mục này chứ a các file thự c thi của hệ thống dành cho người quản trị hệ thống . Thư mục ./tmp : thư mục này dùng để chứa các file tạm mà chương trình tạo ra lúc chạy . Các file này sẽ đ ược hệ thống dọn dẹp khi các chương trình kết thúc . Thư mục ./usr : Thư mụ c này ch ứa nhiều thư mụ c con như /usr/bin , /usr/local … và đây cũng là mộ t trong nh ững thư mục con quan trọng củ a h ệ thống , bên trong thư mục con này (/usr/local) cũng chứa đầy đủ các thư mục con tương tự ngoài thư mụ c gốc như sbin, lib, bin… Nếu nâng cấp hệ thống thì các chương trình người dùng cài đặt trong thư mụ c /usr/local vần giữ nguyên và không sợ các chương trình bị m ất mát. Thư mục ./var : Thư mục này ch ứa các file biến thiên b ất thường như các file dữ liệu đột nhiên tăng kích thước trong một thời gian ngắn sau đó lại giảm kích thước xuống còn rất nhỏ. Điển hình là các file dùng làm hàng đợi chứa dữ liệu cần đưa ra máy in ho ặc các hàng đợi chứa thư điện tử . Lương Thế Oanh 6
  9. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp 1.2. Hệ điều hành nhúng uClinux Hệ điều hành uClinux là một phiên b ản hệ điều hành sử dụng nhân Linux được thiết kế cho các hệ thống nhúng sử dụng bộ vi điều khiển không có đơn vị quản lý bộ nhớ . Là một phiên b ản hệ điều h ành sử dụng nhân Linux nên uClinux có kiến trúc , cách thức hoạt động giống như hệ điều h ành Linux ch ạy trên các PC , phương pháp phát triển ứng dụng cũng giống như phát triển trên môi trư ờng hệ điều hành Linux . Do là một hệ điều hành mã nguồn mở nên các nhà phát triển có thể cấu h ình hệ điều hành theo ý mình đ ể tạo ra một hệ điều hành phù hợp với hệ thống cần phát triển . 1.2.1. Quá trình phát triển hệ điều hành nhúng uClinux Dự án hệ điều hành uClinux được bắt đầu phát triển từ năm 1997 , mục đích tạo ra h ệ điều hành này là phát triển một phiên b ản nhân hệ điều h ành Linux 2.0 đ ể nhúng vào các vi điều khiển . Nó được Jeff Dionne , Kenneth Albanowski và nhóm các nhà phát triển khác đặt vấn đề là khả năng nhúng Linux vào mạng vi điều khiển không có đơn vị quản lý bộ nhớ , khả năng truyền thông giữa mạng đó với các hệ thống truyền thông . Phiên b ản phát h ành đ ầu tiên của hệ điều hành này được phát h ành cùng với vi xử lý Motorola 68000 , vi xử lý này dựa trên trên vi xử lý MC68328 DragonBall Intergrated Microprocessor nó đư ợc triển khai trong bộ điều khiển SCADA năm 1997/98 . Phiên b ản này đã đ ược cộng đồng nguồn mở phát triển và một phiên bản khác đã được sử dụng cho Palm Pilot vào tháng 2 năm 1998 . Trong hệ điều h ành uClinux có một số thay đổi so với hệ điều h ành Linux , thư viện uC-libc được thiết kế để thay cho thư viện libc và glibc trong hệ điều h ành Linux . Một cải tiến khác đã được thực hiện bởi SnapGear là thêm một định dạng mới Binary Flat – bFLT . Hệ điều h ành uClinux là một hệ điều h ành đa nhiệm , các chương trình có thể ch ạy ở nhiều mức khác nhau của hệ thống . Hệ điều hành cho phép chạy nhiều chương trình cùng một lúc , cho phép chạy các ứng dụng đa luồng . Với việc nhúng hệ điều hành uClinux vào các vi điều khiển đã giúp cho các nhà phát triển tạo ra các ứng dụng dễ dàng vì ph ương pháp lập trình giống như trên môi trường hệ điều hành Linux . Hệ điều h ành uClinux là một hệ điều h ành thời gian thực , nh à phát triển có thể chạy các ứng dụng đa luồng trên môi trường hệ điều hành . Điều này là rất khó khi phát triển một ứng dụng đa luồng chạy trực tiếp trên vi điều khiển không có hệ điều h ành . Nhiệm vụ chính khi phát triển hệ điều h ành uClinux là cấu h ình nhân hệ điều hành cho phù hợp với hệ thống cần phát triển , biên dịch nhân , phát triển các driver Lương Thế Oanh 7
  10. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp cho các ngoại vi và sau đó phát triển các ứng dụng cho hệ thống nhúng chạy trên môi trường hệ điều hành . 1.2.2. Kiến trúc hệ điều hành uClinux uClinux là một hệ điều hành dùng phổ biến cho các hệ thống nhúng Linux . Hệ điều h ành này được dùng cho các vi điều khiển không có đơn vị quản lý bộ nhớ . Ngày nay nhân h ệ điều hành này hỗ trợ cho rất nhiều loại nền tảng CPU khác nhau như ColdFire , Axis ETRAX , ARM , Atari 68k và rất nhiều loại khác nữa . Giống như Linux , uClinux cũng có hỗ trợ mạng giao thức TCP/IP và các giao th ức giao tiếp mạng khác . Nó cũng hỗ trợ các hệ thống file khác nhau và thêm vào một số dạng file đặc biệt được thiết kế cho các hệ thống nhúng . Để có thể chạy trên các vi điều khiển không có đơn vị quản lý bộ nhớ thì trong nhân của hệ điều h ành có một số thay đổi . Toàn bộ mã nguồn và các chức năng điều khiển của nhân hệ điều hành của bộ quản lý bộ nhớ được loại bỏ ra khỏi mã nguồn của nhân hệ điều hành . Một số chức năng khác cũng đư ợc điều chỉnh để phù hợp với yêu cầu của các vi điều khiển không có đ ơn vị quản lý bộ nhớ . Sự thuận lợi chính của nhân uClinux mang lại so với nhân Linux chạy trên PC là kích thước của nhân . Khi biên d ịch nhân , nhà phát triển ph ải thiết lập các lựa chọn biên d ịch như hỗ trợ loại vi xử lý , hệ thống file và hỗ trợ các thiết bị của nhân làm sao để kich thước của nhân giảm xuống còn khoảng 400 KB . Tuy nhiên vào lúc khởi động , thì nhân của hệ điều hành sẽ yều cầu khoảng không gian bộ nhớ khoảng một megabyte . Trong thực tế kích thư ớc bộ nhớ cần khoảng 2MB vì còn cần cho các ứng dụng . Với hệ điều hành uClinux , kích thước ảnh nhân hệ điều hành được điều chỉnh khoảng từ 500 tới 900 KB . Tương tự như m ã nguồn h ệ điều hành Linux , mã nguồn của hệ điều hành uClinux cũng có thể tải miễn phí . Mã nguồn hệ điều h ành này cũng thuộc bản quyền GNU GPL , và giống như các tất cả các ứng dụng khác gói mã nguồn của nhân cũng bao gồm đầy đủ mã nguồn và các thư viện kèm theo . Mã nguồn h ệ điều hành uClinux và các công cụ cần thiết có tìm tại website www.uclinux.org . Từ website này các nhà phát triển có thể tải gói phân phối củ hệ điều hành bao gồm mã nguồn nhân hệ điều hành uClinux , các thư viện , một số ứng dụng đã được phát triển , những thông báo lỗi và những lỗi đã được sửa . Lương Thế Oanh 8
  11. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp 1.2.3. Các thư viện sử dụng để phát triển hệ điều hành uClinux uClinux sử dụng một phần của thư viện C chuẩn , đó là thư viện cơ sở để phục vụ cho việc phát triển nhân uClinux . Thư viện n ày dựa trên thư viện C Linux – 8086 nhưng đã đã được thu nhỏ thành một thư viện súc tích ph ù h ợp với vi điều khiển . Thư viện uClibc đ ã được tạo ra hỗ trợ cho các vi điều khiển không có đơn vị quản lý bộ nhớ như Dragonball , ColdFire , ARM … thư viện vẫn hỗ trợ kiến trúc Linux chuẩn . uClinux cũng cung cấp ho àn toàn thư viện Linux chuẩn libC API . Để phát triển uClinux , nh à phát triển có thể lựa ch ọn giữa hai thư viện libc là uC-libc và uClibc . Thư viện uClibc giống như thư viện glibc phát triển cho Linux , các hàm của glibc cũng được áp dụng cho uClibc . Ngoài ra gói mã nguồn của uClinux còn có một sô thư viện khác như : libatm hỗ trợ truyền d ữ liệu không đồng bộ , libjpeg hỗ trợ cho định dạng ảnh nén JPEG , libm hộ trợ các th ư viện toán học , libnet hỗ trợ các API để thao tác mạng . 1.2.4. Driver của các ngoại vi Driver là các trình quản lý , điều khiển các ngoại vi , cung cấp các hàm cho phép người dùng để có thể điều khiển tới các thành phần ngoại vi . Các driver được chia làm ba lớp : Character driver : Lớp n ày được sử dụng rộng rãi từ các ứng dụng đơn - giản đến các ứng dụng phức . Ví dụ ứng dụng đ ơn giản như driver điều khiển LED , ứng dụng phức tạp như driver Firewire , driver USB . Character driver đọc và ghi d ữ liệu trực tiếp tới thiết bị mà không có bộ nhớ đệm . Block driver : Lớp này giao tiếp tới hệ thống file và được sử dụng để - kết nối các phân vùng đ ĩa , các thiết bị vào file hệ thống . Khác với character driver , block driver thường đọc ghi dữ liệu với thiết bị thông qua bộ đệm . Network driver : Loại này có nhiều cấu trúc khác nhau , hỗ trợ truyền - thông , sử dụng các Port và các Socket để định tuyến các gói dữ liệu . Thông thường chương trình ứng dụng không được truy cập , đọc hoặc ghi trực tiếp tới các thiết bị ngoại vi . Khi cần giao tiếp với các ngoại vi , chương trình ứng dụng sẽ sử dụng các driver để giao . Các driver có thể là một module hoặc là được liên kết tĩnh vào nhân . Driver được đăng ký với nhân hệ điều hành trong khi module khởi tạo tiến trình . Driver sẽ đăng ký các thành phần : Lương Thế Oanh 9
  12. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Bảng Fops . - Chỉ số Major . - Device Class ( Block hoặc Char ) . - - Name – tên driver . 1.2.5. Mã nguồn hệ điều hành uClinux Mã nguồn của uClinux có thể tải về từ địa chỉ www.uclinux.org , ở địa chỉ này cũng cấp các phiển bản khác nhau của hệ điều hành uClinux . Toàn bộ mã nguồn uClinux được chứa trong một file nén . Khi được giả nén , gói mã nguồn được tạo ra thành cấu trúc hình cây gồm các thư mục và tất cả các th ư mục này đ ều đ ược chứa trong thư mục chính là uClinux-dist . Đó là mã nguồn của hệ điều h ành uClinux và cần biên dịch tạo ra một file ảnh để đưa vào hệ thống cần phát triển . File nén chứa m ã nguồn uClinux đ ược đặt tên theo một định dạng chuẩn nh ư sau uClinux-dist- YYYYMMDD.tar.gz trong đó YYYY là năm , MM là tháng , DD là ngày . Trong khóa luận n ày em sử dụng mã nguồn hệ điều hành uClinux với phiên bản nhân Linux là linux-2.4 . Sau khi giải nén file mã nguồn , các thư mục có trong thư mục chính uClinux-dist gồm các thư mục : bin : các tiện ích đ ể tạo ra file flash.bin . - Documention : tài liệu chi tiết của uClinux . - tools : các công cụ để b iên d ịch . - user : ứng dụ ng của người dùng và mã nguồ n các ứng d ụng đó . - freeswan : các chương trình bảo mật , mã hóa . - lib : Chứa các thư viện cho ứng dụng . - linux-2.4.x : mã ngu ồn nhân uClinux . - uClibc : thư viện C . - config : Cấu hình hệ thố ng file uClinux . vv… - romfs : Cấu trúc hệ thống file củ a ROM , bao gồm ứng dụ ng , các file - thiết bị . Thư mụ c này được tạo ra khi biên dịch . vendor : Chứa tên các thư mục của các lo ại vi xử lý mà hệ điều hành hỗ - trợ . images : Sau khi biên dịch , thư mục này chủ a nhân dạng nhị p hân củ a - hệ đ iều hành , file ROM , và file ảnh . Lương Thế Oanh 10
  13. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Hình 2 : các thưc mục con và các file của th ư mục uClinux-dist . Trong thư mục ROM chứa các thư mục con , cấu trúc thư m ục con n ày chính là cấu trúc thư mục của hệ điều hành uClinux khi chạy trên h ệ thống nhúng . Và cấu trúc cũng giống như cấu trúc thư mục cơ bản của hệ điều hành Linux chuẩn . Các thư mục đó là : bin , dev , etc , home , lib , mnt , proc , tmp , usr , var ... Hình 3 : các thư mục trong thư mục romfs . Lương Thế Oanh 11
  14. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Chương 2 . Vi điều khiển S3C44B0X và kit phát triển Hệ thống nhúng được xây dựng trên cơ sở liên kết giữa phần mềm và phần cứng . Sự phát triển phần mềm phải dựa trên ph ần cứng , phần mềm sự điều khiển toàn bộ hoạt động của phần cứng nên việc tìm hiểu rõ ph ần cứng cũng rất quan trọng đặc biệt nắm rõ phần cứng sẽ giúp cho quá trình cấu hình hệ điều hành uClinux , viết driver cho ngo ại vi và xây dựng các ứng dụng chính xác và nhanh hơn . 2.1. Vi điều khiển S3C44B0X Giống như các dòng vi điều khiển khác như 8051 , AVR , PIC , PSoC , v.v , S3C44B0X được xây dựng từ một CPU và được bổ sung thêm các ngoại vi như bổ sung bộ nhớ , cấc cổng vào ra , các bộ định thời … Nên việc tìm hiểu vi điều khiển S3C44B0X cũng giống như tìm hiểu các dòng vi điều khiển khác . Việc tìm hiểu sẽ đi vào chi tiết các khối cấu thành nên vi điều khiển . S3C44B0X là một vi điều khiển của h ãng Samsung , đây là một vi điều khiển rất mạnh , có nhiều đặc tính ưu việt . Vi điều khiển n ày được dùng trong các hệ thống nhỏ nhưng đòi hỏi tính toán phức tạp và cần tốc độ cao , các ứng dụng thường sử dụng như các thiết bị cầm tay , thiết bị cần xử lý tín hiệu số và tất nhiên vi điều khiển này cũng được dùng trong các ứng dụng bình thường như các lo ại vi điều khiển khác . S3C44B0X là vi điều khiển thuộc dòng vi điều khiển sử dụng nhân vi xử lý ARM . Cũng giống như một số h ãng khác như Philipe , Atmel … , hãng Samsung sử dụng nhân vi xử lý ARM7TDMI được thiết kế bởi hãng Advanced RISC Machines – ARM sau đó thiết kế một số ngoại vi để tạo nên một chip vi điều khiển . S3C44B0X được tích hợp một số khối chức năng đặc biệt giúp cho việc thiết kế hệ thống trở nên đơn giản hơn , giảm chi phí cho hệ thống . 2.1.1. Các đặc điểm của vi điều S3C44B0X 2.1.1.1. Kiến trúc : - Được tích hợp trong các thiết bị cầm tay , di động và các ứng dụng nói chung . - Sử dụng nhân vi xử lý ARM7TDMI được thiết kế theo kiến trúc RISC 16/32-bit . Tích hợp chế độ gỡ rối trên chip thông qua chuẩn JTAG . - Tích hợp bộ nhân bằng ph ần cứng 32x8 bit . - Lương Thế Oanh 12
  15. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Sử dụng kiến trúc bus SAMBA ( SAMSUNG’s ARM CPU Embedded Micro- - controller Bus Architecture ) làm giảm công suất tiêu thụ củ a vi điều khiển . 2.1.1.2. Quả n lý hệ thống : - Hộ trợ Little endian – Byte thấp đư ợc lưu ở địa chỉ thấp , byte cao được lưu ở địa ch ỉ cao và Big endian – Byte thấp được lưu ở địa chỉ cao , byte cao được lưu ở địa chỉ thấp . - Không gian địa ch ỉ là 32Mbytes trên mỗi băng . Tổng cộng là 256Mbytes . - Hỗ trợ khả năng lập trình 8/16/32- b it độ rộng bus dữ liệu cho mỗ i băng . Cố định đĩa ch ỉ bắt đ ầu và kh ả trình kích thư ớc băng cho tất cả 7 băng . - Địa chỉ b ắt đầu và kích thước củ a mỗi băng có thể lập trình được . - Có 8 băng nhớ : -  6 băng nhớ cho ROM , SRAM , và các loại khác .  2 b ăng nhớ cho ROM /SRAM/DRAM( Fast page , EDO , Synchronous DRAM ). Hỗ trợ đ ợi tín hiệu bên ngoài cho tới khi kết thúc chu kỳ bus . - Hỗ trợ chế độ làm tươi DRAM/SDRAM . - Hỗ trợ chế độ địa chỉ đối xứng / không đối xứng của DRAM . - 2.1.1.3. Bộ nhớ ca che và SRAM nội : - 0/4/8 Kbyte SRAM nội được sử dụng khi mà bộ nhớ cache không được dùng . - Nộ i dụng chuyển giữa bộ nhớ chính và bộ nhớ cache được duy trì thông qua bộ bảo vệ . 2.1.1.4. Bộ quản lý Clock và nguồn : - Vi điều khiển tiêu thụ công su ất thấp . - Có bộ PLL để tao tín hiệu xung nh ịp điều khiển h ệ thống lên tới tố c độ tối đa 66MHz . - Tín hiệu clock có th ể được chọn cho mỗi khối chức năng và được thiết lập bằng phần mềm . - Các ch ế độ : Normal – chế độ ho ạt động bình thường , slow – ch ế độ hoạt động tần số thấp khôn g có PLL , idle- stop clock cho CPU , stop – stop toàn bộ tín hiệu clock . - Khi có tín hiệu ngắt từ ngắt ngoài EINT[7:0] hoặc ngắt cảnh báo của bộ thời gian thực thì vi đ iều khiển trở về trạng thái bình thường . 2.1.1.5. Ngắt của vi điều khiển : - Vi điều khiển có 30 n guồn ngắt ( watch -dog timer , 6 timer , 6 UART , 8 ngắt ngoài , 4 DMA , 2 RTC ,1 ADC , 1 IIC ,1SIO ) . Lương Thế Oanh 13
  16. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Hộ trợ n gắt ngoài theo mức và theo sườn tín hiệu . - Chế độ ngắt theo sườn và theo mức có thể chọn bằng lập trình . - Hộ trợ FIQ ( Fast Interrupt request ) khi có yêu cầu ngắt ngay tức kh ắc . - 2.1.1.6. Timer có điều chế độ rộ ng xung : - 5 kênh Timer điều chế độ rộng xung 16 bit . 1 kênh timer nộ i 16 bit có DMA hoặc ngắt . - Hỗ trợ n guồn clock bên ngoài . 2.1.1.7. Đồ ng hồ thời gian thực RTC ( Real Time Clock ) : - Đồng hồ thời gian thự c hỗ trợ : mini giây , giây , phút , giờ , ngày , tuần , tháng , năm . - Ho ạt động vời tần số 32.768 KHz . - Có ngắt cảnh báo đ ể đ ánh thức CPU . - Ngắt timer tick . 2.1.1.8. Các IO Port : - 8 port ngắt bên ngoài . - 71 port I/O . 2.1.1.9. UART : - 2 kênh UART có DMA và ngắt. - Hỗ trợ chu ẩn dữ liệu truyền nh ận 5 , 6 , 7 , 8 bit . - Có bắt tay bằng phần cứng . - Tốc độ baud có thể thiết lập bằng phần m ềm . - Hỗ trợ giao tiếp hồng ngoại IrDA 1.0 ( 115.2 kbps) . Mỗi kênh UART có 2 bộ nhớ đệm bên trong 32 byte FIFO cho Rx và Tx . - 2.1.1.10. Bộ điều khiển DMA – Direct Memory Access : - 2 kênh điều khiển DMA cho mụ c đích chung không chịu sự can thiệp bởi CPU. - 2 kênh điều khiển DMA cho ngoại vi . - Hộ trợ DMA giữ a các cổng vào ra tới bộ nhớ và từ bộ nh ớ tới các cổng vào ra . DMA có thể được yều bởi phần mềm , 4 khối ch ức năng bên trong ( UART , SIO , Timer , IIS) và từ các chân bên ngoài . - Mức ưu tiên thứ tự giữa các DMA có thể thiết lập b ằng phần mềm . - Tăng tố c độ truyền trên FPDRAM , EDODRAM và SDRAM . 2.1.1.11. Bộ biến đổi A/D : - 8 kênh ADC . - Tốc độ lấy m ẫu tối đa 100KSPS/10 -bit . 2.1.1.12. Khố i điều khiển LCD : Lương Thế Oanh 14
  17. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp Hỗ trợ LCD đen trắng , màu và xám . - Hỗ trợ quét liên tụ c và quét xem kẽ . - Hộ trợ chứ c năng màn hình ảo . - Sử dụng bộ nhớ h ệ thống làm bộ nhớ hiển th ị . - Sử dụng DMA để truyền dữ . - Kích thước màn hình có thể chọn bằng chương trình . - Hỗ trợ m àn hình Gray 16 m ức . - Hỗ trợ 256 màu . - 2.1.1.13. Watchdog timer : - Có Watchdog timer 16 bit . - Có yêu cầu ngắt ho ặc kh ởi động lại hệ th ống sau mộ t khoảng thời gian . 2.1.1.14. Giao tiếp bus IIC : - 1 kênh Multi- Master IIC-Bus có điều khiển ngắt . - Truyền nối tiếp , truyền dữ liệu 8 bit theo một chiều , hai chiều tố c độ lên tới 100 Kbit/s trong chế đ ộ chuẩn ( standard mode ) và 400Kbit/s trong chế độ nhanh ( fast mode) . 2.1.1.15. Giao tiếp bus IIS : - Một kênh IIS-bus cho giao tiếp audio có điều khiển DMA . - Truyền nối tiếp , 8/16 bit cho mỗ i kênh truyền dữ liệu . - Hộ trỡ đ ịnh dạng dữ liệu MSB . 2.1.1.16. Truy ền nối tiếp đồng bộ SIO ( Synchronous Serial I/O ) : - Một kênh SIO có điều khiển DMA và ngắt . Tốc độ baud có thể lập trình đ ược . - Hỗ trợ đ iều khiển truyền nh ận dữ liệu 8 bit trong SIO . - 2.1.1.17. Tần số hoạ t động của hệ thố ng : Tần số lên tới 66 MHz . 2.1.1.18. Dả i điện áp cấp cho vi điều khiển : - Cung cấp cho nhân vi xử lý là 2.5V . - Cung cấp cho các cổng vào ra là 3V – 3.6V . Lương Thế Oanh 15
  18. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp 2.1.2. Sơ đồ chân Hình 4 : Sơ đồ chân của vi điều khiển S3C44B0X Lương Thế Oanh 16
  19. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp 2.1.3. Sơ đồ khối Hình 5 : Sơ đồ khối vi điều khiển S3C44B0X Lương Thế Oanh 17
  20. ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp 2.1.4. Chức năng một số khối chính 3.1.4.1. Lõi vi xử lý ARM7TDMI Đóng vai trò là bộ não của S3C44B0X , lõi vi xử lý ARM7TDMI phải đảm bảo cho chương trình ho ạt động , phải có khả năng truy cập vào bộ nhớ , thực hiện các phép tính , điều khiển ngoại vi và quản lý ngắt . Lõi vi xử lý ARM7TDMI là một thành viên trong họ vi xử lý ARM . ARM7TDMI là dòng vi xử lý 32 bit , rất mạnh , tiêu tốn công suất thấp , hỗ trợ tập lập 32 bit và 16 bit . Kiến trúc của ARM7TDMI được dựa trên kiến trúc RISC , với kiến trúc này việc giải m ã mã máy đơn giản h ơn rất nhiều so với kiến trúc CISC do đó làm tăng tốc độ thực thi lệnh , đáp ứng được tính thời gian thực của các ngắt . ARM7TDMI được áp dụng kỹ thuật xử lý đường ống trong việc xử lý lệnh và được chia làm ba giai đoạn : nạp lệnh – fetch , giải m ã lệnh – decode và thực thi lệnh – execution . Trong ký thu ật xử lý đường ống , khi một lệnh đang đư ợc thực thi thì lệnh thứ hai đang được giải m ã lệnh và lệnh thứ ba bắt đầu đ ược nạp từ bộ nhớ . Với kỹ thuật n ày thì tốc độ xử lý tăng lên rất nhiều , trong một chu kỳ máy CPU làm được nhiều việc . Hỗ trợ tới 4Gbytes không gian địa chỉ tuyến tính , sử dụng kiến trúc Von Neumann để nạp và lưu trữ lệnh và dữ liệu , dùng chung một bus 32 bit cho cả dữ liệu và lệnh . ARM7TDMI hỗ trợ nhiều loại dữ liệu , do là dòng vi xử lý 32 bit n ên một từ ( word ) sẽ tương đương với 32 bit , các loại dữ liệu như word – 32 bit , halfword – 16 bit , byte – 8 bit . Có bộ nhân ph ần cứng 32x8 bit trong một chu kỳ . Hỗ trợ gỡ rối chương trình trên chip thông qua chuẩn JTAG . Lương Thế Oanh 18
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2