Đồ án tốt nghiệp
Đặt vấn đề
Ngày nay, cùng với sự phát triển chung của công nghệ, lĩnh vực hệ
điều hành đã có những bước tiến dài trong quá trình hình thành và
phát triển của mình. Từ sự khởi đầu đơn giản có bản quyền trên máy
tính cá nhân như Hệ điều hành DOS, tiến lên các phiên bản Windows
như win3.1 rồi win95, win 98 mới đây nhất là hệ điều hành đa
nhiệm thời gian thực Win7, bên cạnh đó phải kể đến các hệ điều hành
mã nguồn mở như Max OS, Linux, Ubuntu hiện nay đã xuất hiện
những hệ điều hành dành cho điện thoại đi động như Windown
Mobile, và đặc biệt trong lĩnh vực điện tử có những hệ điều hành
chuyên biệt cho các chip xử lý như VxWork, uCLinux,FreeRTOS,
OpenRTOS và SAFERTOS Trong đó cần phải nói đến FreeRTOS,
với tính thời gian thực và các ưu điểm đã giải quyết nhiều yêu cầu
trong công nghệ vi xử lý. Để làm rõ điều này, đề tài của em trình bày
3 phần:
PHẦN I : MỞ ĐẦU
PHẦN NÀY TRÌNH BÀY VỀ TÌNH HÌNH NGHIÊN CỨU VỀ ĐỀ
TÀI NÀY TRONG VÀ NGOÀI NƯỚC, MỤC TIÊU CỦA ĐỀ TÀI
PHẦN II: GIỚI THIỆU HĐH NHÚNG THỜI GIAN THỰC
FREERTOS VÀ VI ĐIỀU KHIỂN ATMEGA 128
1
Đồ án tốt nghiệp
PHẦN NÀY TRÌNH BÀY NGUYÊN LÝ HỆ ĐIỀU HÀNH NÓI
CHUNG VÀ GIẢI THÍCH CÁC KHÁI NIỆM, TRÌNH BÀY VỀ
FREERTOS VÀ VĐK ATMEGA 128
PHẦN III: CÁC BƯỚC THIẾT KẾ ỨNG DỤNG MINH HỌA
PHẦN NÀY TRÌNH BÀY CÁC BƯỚC THIẾT KẾ ỨNG DỤNG
TRÊN HĐH FREERTOS
PHẦN IV: CÁC KẾT QUẢ ĐẠT ĐƯỢC VÀ ĐÁNH GIÁ
PHẦN NÀY NÊU RA NHỮNG KẾT QUẢ ĐA ĐẠT ĐƯỢC VÀ
THIS STEP PRESENTATION OF DESIGN APPLICATIONS
ON OS FREERTOS
PART IV: THE RESULTS OF ASSESSMENT AND DAT
THIS YET ACHIEVED RESULTS AND GENERAL
ASSESSMENT
4
Đồ án tốt nghiệp
PHẦN I : MỞ ĐẦU
I.1 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU NGOÀI NƯỚC
Ngoài nước : đề tài đang được nghiên cứu rất mạnh mẽ có thể nói hệ
thống nhúng được sử dụng trong rất nhiều lĩnh vực, rất nhiều mặt hàng từ
các thiết bị cao cấp như vệ tinh, tên lửa, tàu con thoi đến các thiết bị tiêu
dùng như lò vi ba, máy sấy, máy hút bụi…
Thị trường hệ thống nhúng có tiềm năng phát triển vô cùng lớn. Theo các
nhà thông kê trên thế giới thì số chip xử lý trong các máy PC và các
server, các mạng LAN, WAN, Internet chỉ chiếm không đầy 1% tổng số
chip vi xử lý có trên thế giới. Hơn 99% số vi xử lý còn lại nằm trong các
hệ thống nhúng.
Tại Châu Á, Nhật Bản đang dẫn đầu về thị trường nhúng và là một trong
những thị trường phần mềm nhúng hàng đầu thế giới. Đây được coi là thị
trường đầy hứa hẹn với các đối tác chuyên sản xuất phần mềm nhúng như
Trung Quốc, Indonesia, Nga, Ireland, Israel, và cả Việt Nam.
I.2 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU TRONG NƯỚC
Trong nước: Hệ thống nhúng mới được quan tâm trong thời gian gần
đây. Các doanh nghiệp làm phần mềm nhúng cũng chưa nhiều, mới có
5
Đồ án tốt nghiệp
một số trung tâm thuộc các trường Đại học Quốc gia, Đại học Bách khoa,
các đơn vị như Học viện Kỹ thuật quân sự, Viện nghiên cứu Điện tử - Tin
học và Tự động hóa, Tổng công ty Điện tử - Tin học, Công ty thiết bị
sử dụng phần cứng cho những ứng dụng khác nhau của nhiều người sử
7
Đồ án tốt nghiệp
dụng khác nhau. Hệ điều hành cung cấp một môi trường mà các chương
trình có thể làm việc hữu hiệu trên đó.
Hình 1.1 Mô hình trừu tượng của hệ thống máy tính
Hệ điều hành có thể được coi như là bộ phân phối tài nguyên của máy
tính. Nhiều tài nguyên của máy tính như thời gian sử dụng CPU, vùng bộ
nhớ, vùng lưu trữ tập tin, thiết bị nhập xuất v.v… được các chương trình
yêu cầu để giải quyết vấn đề. Hệ điều hành hoạt động như một bộ quản lý
các tài nguyên và phân phối chúng cho các chương trình và người sử
dụng khi cần thiết. Do có rất nhiều yêu cầu, hệ điều hành phải giải quyết
vấn đề tranh chấp và phải quyết định cấp phát tài nguyên cho những yêu
cầu theo thứ tự nào để hoạt động của máy tính là hiệu quả nhất. Một
hệ điều hành cũng có thể được coi như là một chương trình kiểm soát
việc sử dụng máy tính, đặc biệt là các thiết bị nhập xuất.
8
Đồ án tốt nghiệp
Tuy nhiên, nhìn chung chưa có định nghĩa nào là hoàn hảo về hệ điều
hành. Hệ điều hành tồn tại để giải quyết các vấn đề sử dụng hệ thống máy
tính. Mục tiêu cơ bản của nó là giúp cho việc thi hành các chương trình
dễ dàng hơn. Mục tiêu thứ hai là hỗ trợ cho các thao tác trên hệ thống
máy tính hiệu quả hơn. Mục tiêu này đặc biệt quan trọng trong những hệ
thống nhiều người dùng và trong những hệ thống lớn(phần cứng + quy
mô sử dụng). Tuy nhiên hai mục tiêu này cũng có phần tương phản vì vậy
lý thuyết về hệ điều hành tập trung vào việc tối ưu hóa việc sử dụng tài
nguyên của máy tính.
II.1.2 PHÂN LOẠI HỆ ĐIỀU HÀNH
II.1.2.1 Hệ thống xử lý theo lô
Ý tưởng như sau : hệ điều hành lưu giữ một phần của các công việc ở nơi
lưu trữ trong bộ nhớ . CPU sẽ lần lượt thực hiện các phần công việc này.
10
Đồ án tốt nghiệp
Khi đang thực hiện, nếu có yêu cầu truy xuất thiết bị thì CPU không nghỉ
mà thực hiện tiếp công việc thứ hai…
Với hệ đa chương hệ điều hành ra quyết định cho người sử dụng vì
vậy, hệ điều hành đa chương rất tinh vi. Hệ phải xử lý các vấn đề lập lịch
cho công việc, lập lịch cho bộ nhớ và cho cả CPU nữa.
II.1.2.3 Hệ thống chia xẻ thời gian
Hệ thống chia xẻ thời gian là một mở rộng logic của hệ đa chương. Hệ
thống này còn được gọi là hệ thống đa nhiệm (multitasking). Nhiều công
việc cùng được thực hiện thông qua cơ chế chuyển đổi của CPU như
hệ đa chương nhưng thời gian mỗi lần chuyển đổi diễn ra rất nhanh.
Hệ thống chia xẻ được phát triển để cung cấp việc sử dụng bên trong của
một máy tính có giá trị hơn. Hệ điều hành chia xẻ thời gian dùng lập lịch
CPU và đa chương để cung cấp cho mỗi người sử dụng một phần nhỏ
trong máy tính chia xẻ. Một chương trình khi thi hành được gọi là một
tiến trình. Trong quá trình thi hành của một tiến trình, nó phải thực hiện
các thao tác nhập xuất và trong khoảng thời gian đó CPU sẽ thi hành một
tiến trình khác. Hệ điều hành chia xẻ cho phép nhiều người sử dụng chia
xẻ máy tính một cách đồng bộ do thời gian chuyển đổi nhanh nên họ có
cảm giác là các tiến trình đang được thi hành cùng lúc.
11
Đồ án tốt nghiệp
Hệ điều hành chia xẻ phức tạp hơn hệ điều hành đa chương. Nó phải có
các chức năng : quản trị và bảo vệ bộ nhớ, sử dụng bộ nhớ ảo. Nó cũng
cung cấp hệ thống tập tin truy xuất on-line…
Hệ điều hành chia xẻ là kiểu của các hệ điều hành hiện đại ngày nay.
II.1.2.4 Hệ thống song song
lớn, trong đó hầu hết thời gian hoạt động đều dành cho xử lý nhập xuất.
II.1.2.5 Hệ thống phân tán
Hệ thống này cũng tương tự như hệ thống chia xẻ thời gian nhưng các
bộ xử lý không chia xẻ bộ nhớ và đồng hồ, thay vào đó mỗi bộ xử lý có
bộ nhớ cục bộ riêng. Các bộ xử lý thông tin với nhau thông qua
các đường truyền thông như những bus tốc độ cao hay đường dây điện
thoại.
Các bộ xử lý trong hệ phân tán thường khác nhau về kích thước và chức
năng. Nó có thể bao gồm máy vi tính, trạm làm việc, máy mini, và những
13
Đồ án tốt nghiệp
hệ thống máy lớn. Các bộ xử lý thường được tham khảo với nhiều tên
khác nhau như site, node, computer v.v tùy thuộc vào trạng thái làm
việc của chúng.
Các nguyên nhân phải xây dựng hệ thống phân tán là:
Chia xẻ tài nguyên : Một người sử dụng A có thể sử dụng máy in laser
của người sử dụng B và người sử dụng B có thể truy xuất những tập tin
của A. Tổng quát, chia xẻ tài nguyên trong hệ thống phân tán cung cấp
một cơ chế để chia xẻ tập tin ở vị trí xa, xử lý thông tin trong một cơ sở
dữ liệu phân tán, in ấn tại một vị trí xa, sử dụng những thiết bị ở xa đểõ
thực hiện các thao tác.
Tăng tốc độ tính toán : Một thao tác tính toán được chia làm nhiều
phần nhỏ cùng thực hiện một lúc. Hệ thống phân tán cho phép phân chia
việc tính toán trên nhiều vị trí khác nhau để tính toán song song.
An toàn : Nếu một vị trí trong hệ thống phân tán bị hỏng, các vị trí
khác vẫn tiếp tục làm việc.
Thông tin liên lạc với nhau :Có nhiều lúc , chương trình cần
chuyển đổi dữ liệu từ vị trí này sang vị trí khác. Ví dụ trong hệ thống
Windows, thường có sự chia xẻ và chuyển dữ liệu giữa các cửa sổ. Khi
các vị trí được nối kết với nhau trong một hệ thống mạng, việc trao đổi
- 64 thanh ghi I/O
-160 thanh ghi vào ra mở rộng
-32 thanh ghi đa mục đích.
- 2 bộ định thời 8 bit (0,2).
-2 bộ định thời 16 bit (1,3).
-Bộ định thời watchdog
-Bộ dao động nội RC tần số 1 MHz, 2 MHz, 4 MHz, 8 MHz
-ADC 8 kênh với độ phân giải 10 bit (Ở dòng Xmega lên tới 12 bit )
-2 kênh PWM 8 bit
-6 kênh PWM có thể lập trình thay đổi độ phân giải từ 2 tới 16 bit
-Bộ so sánh tương tự có thể lựa chọn ngõ vào
-Hai khối USART lập trình được
-Khối truyền nhận nối tiếp SPI
-Khối giao tiếp nối tiếp 2 dây TWI
-Hỗ trợ boot loader
-6 chế độ tiết kiệm năng lượng
-Lựa chọn tần số hoạt động bằng phần mềm
16
Đồ án tốt nghiệp
-Đóng gói 64 chân kiểu TQFP.
-Tần số tối đa 16MHz
-Điện thế : 4.5v - 5.5v.
Vi điều khiển AVR do hãng Atmel ( Hoa Kì ) sản xuất được gới thiệu lần
đầu năm 1996. AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny
AVR ( như AT tiny 13, ATtiny 22…) có kích thước bộ nhớ nhỏ, ít bộ
phận ngoại vi, rồi đến dòng AVR ( chẳn hạn AT90S8535, AT90S8515,
…) có kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega
( như ATmega32, ATmega128,…) với bộ nhớ có kích thước vài Kbyte
đến vài trăm Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên
chip, cũng có dòng tích hợp cả bộ LCD trên chip ( dòng LCD AVR ). Tốc
19
Đồ án tốt nghiệp
reset vi điều khiển CPU sẽ nhảy tới thực thi chương trình boot loader
trước, chương trình boot loader sẽ dò xem có chương trình nào cần nạp
vào vi điều khiển hay không, nếu có chương trình cần nạp, boot loader sẽ
nạp chương trình vào vùng nhớ ứng dụng (Application program section ),
rồi thực thi chương trình này. Ngược lại, boot loader sẽ chuyển tới
chương trình ứng dụng có sẵn trong vùng nhớ ứng dụng để thực thi
chương trình này.
Phần ứng dụng (Application program section ) là vùng nhớ chứa
chương trình ứng dụng của người dùng. Kích thước của phần boot loader
và phần ứng dụng có thể tùy chọn. Thể hiện cấu trúc bộ nhớ chương trình
có sử dụng và không sử dụng boot loader, khi sử dụng phần boot loader
ta thấy 4 word đầu tiên thay vì chỉ thị cho CPU chuyển tới chương trình
ứng dụng của người dung (là chương trình có nhãn start ) thì chỉ thị CPU
nhảy tới phần chương trình boot loader để thực hiện trước, rồi mới quay
trở lại thực hiện chương trình ứng dụng.
Bộ Nhớ Dữ Liệu : Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là
bộ nhớ SRAM và bộ nhớ EEPROM. Tuy cùng là bộ nhớ dữ liệu nhưng
hai bộ nhớ này lại tách biệt nhau và được đánh địa chỉ riêng.
Bộ nhớ SRAM có dụng lượng 4 K bytes, Bộ nhớ SRAM có hai chế
độ hoạt động là chế độ thông thường và chế độ tương thích với
ATmega103, muốn thiết lập bộ nhớ SRAM hoạt động theo chế độ nào ta
sử dụng bit cầu chì M103C (M103C fuse bit (9) ).
20
Đồ án tốt nghiệp
Bộ nhớ SRAM ở chế độ bình thường : Ở chế độ bình thường bộ nhớ
SRAM được chia thành 5 phần: Phần đầu là 32 thanh ghi chức năng
chung (General Purpose Register ) R0 đến R31 có địa chỉ từ $0000 tới
$001F. Phần thứ 2 là không gian nhớ vào ra với 64 thanh ghi vào ra ( I/O
kiểu chọn địa chỉ : Nếu xem chúng là vùng nhớ vào ra thì địa chỉ sẽ là
$00 - $3F, khi sử dụng các lệnh in, out … ta phải sử dụng địa chỉ này.
Nếu xem chúng như là một phần của bộ nhớ SRAM thì sẽ có địa chỉ là
$0020 - $005F, khi ta dùng các lệnh như LD, ST… ta phải sử dụng kiểu
địa chỉ này.
Tiệp ghanh ghi ( register file ) : Tiệp 32 thanh ghi đa chức năng
( $0000 - $001F ) đã được nói ở trên, ngoài chức năng là các thanh ghi đa
chức năng, thì các thanh ghi từ R26 tới R31 từng đôi một tạo thành các
thanh ghi 16 bit X, Y, Z được dùng làm con trỏ trỏ tới bộ nhớ chương
trình và bộ nhớ dữ liệu ( Hình 1.4 ). Thanh ghi con trò X, Y có thể dung
làm con trỏ trỏ tới bộ nhớ dữ liệu, còn thanh ghi Z có thể dùng làm con
trỏ trỏ tới bộ nhớ chương trình. Các trình biên dịch C thường dùng các
thanh ghi con trỏ này để quản lí Data stack của chương trình C.
23
Đồ án tốt nghiệp
Bộ nhớ EEPROM : Đây là bộ nhớ dữ liệu có thể ghi xóa ngay trong
lúc vi điều khiển đang hoạt động và không bị mất dữ liệu khi nguồn điện
cung cấp bị cắt. Có thể ví bộ nhớ dữ liệu EEPROM giống như là ổ cứng (
Hard disk ) của máy vi tính. Với vi điều khiển ATmega128, bộ nhớ
EEPROM có kích thước là 4 Kbyte. EEPROM được xem như là một bộ
nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta
cần sử dụng các lệnh in, out … khi muốn truy xuất tới EEPROM. Để điều
khiển vào ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau :
2. Thanh Ghi EEAR ( EEARH và EEARL )
EEAR là thanh ghi 16 bit lưu giữ địa chỉ của các ô nhớ của
EEPROM, thanh ghi EEAR được kết hợp từ 2 thanh ghi 8 bit là EEARH
và thanh ghi EEARL. Vì bộ nhớ EEPROM của ATmega128 có dung
24
Đồ án tốt nghiệp
lượng 4 Kbyte = 4096 byte = 212 byte nên ta chỉ cần 12 bit của thanh ghi