nghiên cứu ứng dụng hệ điều hành nhúng uclinux trên vi điều khiển s3c44b0x - Pdf 13

Mục lục
Mở đầu 2
Phần A : Lý thuyết chung 3
Chương 1 . Hệ điều hành nhúng uClinux 3
1.1.Nhân hệ điều hành Linux 3
1.1.1.Lịch sử nhân hệ điều hành Linux 3
1.1.2.Tổ chức của nhân hệ điều hành Linux 4
1.1.3.Tổ chức thư mục 6
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 8
1.2.2.Kiến trúc hệ điều hành uClinux 9
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 10
1.2.5.Mã nguồn hệ điều hành uClinux 11
Chương 2 . Vi điều khiển S3C44B0X và kit phát
triển 13
2.1.Vi điều khiển S3C44B0X 13
2.1.1.Các đặc điểm của vi điều S3C44B0X 13
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 34
Phần B : Thực nghiệm 37
Chương 3 . Biên dịch mã nguồn uClinux và xây dựng
ứng dụng 37
3.1.Biên dịch mã nguồn hệ điều hành uClinux 37
3.1.1.Môi trường và các công cụ cần để biên dịch 37
3.1.2.Lưu đồ quá trình biên dịch và các bước tiến hành 37
3.2.Nhúng hệ điều hành vào vi điều khiển 43
3.2.1.Thiết lập giao tiếp giữa kit và máy tính 43
3.2.1.Đưa file ảnh hệ điều hành vào vi điều khiển 45

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ợ PC .
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ứ hai trở đi , nếu là số chẵn
Lương Thế Oanh
3
Đ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 , bao 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ổ biế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ả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 .
 Khối hàm gọi hệ thống ( system call ) . Gồm các hàm mà ngườ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.
Lương Thế Oanh
5
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
- 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ị ngoại vi khác , vùng nhớ còn lại tử 9FFFF trở xuống tương đương với
640KB. Trong chế độ bảo vệ ( protect 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ộ

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ử .
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ộ
Lương Thế Oanh

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
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 .
Lương Thế Oanh
8
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
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

- 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 :
- Bảng Fops .
- Chỉ số Major .
- Device Class ( Block hoặc Char ) .
Lương Thế Oanh
10
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
- 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 .

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 .
- Sử dụng kiến trúc bus SAMBA ( SAMSUNG’s ARM CPU Embedded Micro-

tần số thấp không 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 nguồn ngắt ( watch-dog timer , 6 timer , 6 UART , 8 ngắt
ngoài , 4 DMA , 2 RTC ,1 ADC , 1 IIC ,1SIO ) .
- Hộ trợ ngắ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ợ nguồ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 .
Lương Thế Oanh
14
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
- 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 .

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 .
Lương Thế Oanh
15
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
- 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 .
2.1.2. Sơ đồ chân
Lương Thế Oanh
16
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
Hình 4 : Sơ đồ chân của vi điều khiển S3C44B0X
2.1.3. Sơ đồ khối
Lương Thế Oanh
17
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
Hình 5: Sơ đồ khối vi điều khiển S3C44B0X
2.1.4. Chức năng một số khối chính
3.1.4.1. Lõi vi xử lý ARM7TDMI
Lương Thế Oanh

21
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
Hình 8: Sơ đồ các tín hiệu vào ra của ARM7TDMI .
a. Các chế độ hoạt động :
- User : Thực hiện các chương trình bình thường .
- FIQ : Hỗ trợ việc truyền dữ liệu và các kênh xử lý .
- IRQ : Được sử dụng cho việc xử lý các ngắt mục đích chung .
- Supervisor (svc) : Đây là chế độ bảo vệ dùng cho hệ điều hành .
- Abort mode (abt) : Được nhập vào sau khi dữ liệu hoặc lệnh được bỏ qua
tiền nạp .
- System ( sys ) : Chế độ đặc quyền người dùng dùng cho hệ điều hành .
- Undefined ( und ) : Được nhập vào khi một lệnh không xác định được thực
thi.
Lương Thế Oanh
22
ĐH Công Nghệ - ĐHQG Hà Nội Khóa luận tốt nghiệp
Các chế độ này có thể được thiết lập bằng phần mềm hoặc thông qua các ngắt
bên ngoài hoặc thông qua quá trình xử lý ngoại lệ . Phần lớn các chương trình ứng
dụng được thực thi trong chế độ User .Mỗi chế độ điều khiển đều có các băng thanh
ghi hỗ trợ để tăng tốc độ bắt các ngoại lệ . Chế độ FIQ có năm băng thanh ghi hỗ trợ từ
r8_fiq đến r12_fiq làm tăng tốc độ xử lý các ngắt .
b. Các thanh ghi :
ARM7TDMI có tất cả 37 thanh ghi , trong đó có 31 thanh ghi dùng cho mục
đích chung 32 bit , và 6 thanh ghi trạng thái .
 Các thanh ghi được sử dụng trong trạng thái ARM ( The ARM-state register
set ):
Trong trạng thái ARM , 16 thanh ghi chung và một hoặc hai thanh ghi trạng
thái có thể được sử dụng ở mọi thời điểm . Trong chế độ đặc quyền , băng thanh ghi
ứng với chế độ cụ thể sẽ được thiết lập .
Bảng các thanh dùng chung được sử dụng tương ứng với mỗi chế độ hoạt động :

- Thiết lập trạng thái hoạt động của vi xử lý .
Lương Thế Oanh
25


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status