NGUYỄN HẢI HÀ
BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
NGUYỄN HẢI HÀ
KỸ THUẬT ĐIỆN TỬ
NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS
VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH
LUẬN VĂN THẠC SỸ KỸ THUẬT
2005 – 2008
HÀ NỘI
2008
HÀ NỘI - 2008
BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN THÔNG VIỆT NAM
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
NGUYỄN HẢI HÀ
NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS
VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH
CHUYÊN NGÀNH : KỸ THUẬT ĐIỆN TỬ
MÃ SỐ:23.060.52.704.3898
LUẬN VĂN THẠC SỸ KỸ THUẬT
Người hướng dẫn khoa học : TS. HOÀNG MINH
HÀ NỘI - 2008
i
LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn đối với các thầy, cô giáo trong Học Viện Công nghệ
Bưu chính Viễn thông, các bạn bè, đồng nghiệp, người thân và nhất là người hướng
dẫn trực tiếp - Tiến sĩ Hoàng Minh đã tạo điều kiện giúp đỡ, hỗ trợ và động viên tôi
hoàn thành luận văn này.
Hà nội, 2008
RAM 22
ROM 22
2.9 Keyboard 23
2.9.1 Cơ sở về bàn phím 23
2.10 Module LCD ký tự 25
2.10.1 Màn hình tinh thể lỏng 25
2.10.2 Module LCD ký tự 27
2.11 Quản lý định thời 27
2.12 Các cổng vào/ra rời rạc 28
2.12.1 Các đầu vào rời rạc 30
2.12.2 Các đầu ra rời rạc 31
2.13 Các đầu vào ra tương tự 32
2.13.1 Đọc ADC 33
2.14 Kết chương 34
Chương 3 - Tìm hiểu một số hệ thống nhúng và cách thức phát triển hệ thống nhúng 35
3.1 Ví dụ về một số hệ thống nhúng 35
Đặc tính của các hệ thống nhúng 37
Phân loại các hệ thống nhúng 38
iii
Phần cứng nhúng 39
Kiến trúc phần cứng 39
Phần mềm 43
3.1.2 Nhân hệ điều hành 43
3.1.3 Hệ con điều khiển tác vụ hoặc tiến trình 43
3.1.4 Hệ con quản lý driver thiết bị hoặc I/O 43
3.1.5 Các loại OS ứng dụng trong các hệ thống nhúng 43
3.1.6 Ngôn ngữ lập trình hệ nhúng 44
3.1.7 API 44
Các bước phát triển ứng dụng 44
3.2 Kết chương 46
OS Oprating system Hệ điều hành
API Application Programming Interface Giao diện lập trình ứng dụng
ROM Read only memory Bộ nhớ chỉ đọc
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
ACNMS Alarm, Control network
management system
Hệ thống quản lý mạng cảnh
báo và điều khiển
DB Database Cơ sở dữ liệu
SMS Short message system Hệ thống nhắn tin ngắn
ACS Access control service Module quản lý truy cập
TCP Transmission Control Protocol Giao thức điều khiển truyền vận
IC Intergrated curcirt Mạch tổ hợp
I/O Input/Output Vào/ra
MIPS Millions of instructions per second Hàng triệu lệnh mỗi giây
RT OS RealTime Oprating system Hệ điều hành thời gian thực
LCD Liquid crystal display Màn hình tinh thể lỏng
CPU Central Processing Unit Đơn vị xử lý trung tâm
ISR Interrupt service routine Tiến trình dịch vụ ngắt
ADC Analog and Digital Converters Biến đổi tương tự số
DAC Digital and Analog Converters Biến đổi số tương tự
MC Microchip Chíp micro
CRC Cyclic redundancy check Kiểm tra mã vòng
MMI Monitor Management Interface Giao diện quản lý giám sát
PLC Programmable Logic Controller Bộ điều khiển logic lập trình
được
NCB Ngưỡng cảnh báo
ATS Automatic Transfer Switch Tự động chuyển nguồn
DANH MỤC CÁC BẢNG BIỂU
Bảng 1-1 Các yêu cầu thiết kế chung cho các hệ thống nhúng 6
Hình 3-29 Ví dụ về một bo mạch đánh giá 46
Hình 5-30 Mô hình một trạm tổng đài vệ tinh 54
Hình 5-31 Mô hình hệ thống 55
Hình 5-32 Sơ đồ khối PLC tại trạm vệ tinh 57
Hình 5-33 Sơ đồ DI/DO trên PLC 67
MỞ ĐẦU
Các nghiên cứu về Hệ điều hành nhúng (Embedded OS) ứng dụng trong các hệ
thống nhúng (Embedded System) đã có lịch sử phát triển và là một trong những
động lực phát triển của Công nghệ thông tin và Viễn thông trong những thập kỷ
qua. Với đặc tính hướng ứng dụng của mình, hệ điều hành nhúng giúp cho các hệ
thống nhúng thông minh hơn, đáp ứng nhu cầu về công việc, về đời sống cho con
người ngày một thiết thực hơn.
Từ việc nghiên cứu hệ điều hành nói chung, hệ điều hành nhúng thời gian thực nói
riêng, để có được một hệ thống nhúng ứng dụng vào một lĩnh vực cụ thể trong lĩnh
vực Viễn thông đòi hỏi quá trình đầu tư lâu dài và liên tục. Trên thế giới, các hệ
thống nhúng đã tiến một bước dài. Tuy nhiên ở Việt Nam, hầu hết các nghiên cứu
trong lĩnh vực Công nghệ thông tin và Viễn thông chỉ tập trung vào hướng phát
triển phần mềm ứng dụng, chưa quan tâm nhiều lĩnh vực phần mềm hệ thống
nhúng. Với sự phát triển mạnh mẽ của công nghệ phần cứng trên thế giới, các bộ vi
xử lý được sản xuất hàng loạt với giá thành hạ, thì việc nghiên cứu hệ điều hành
nhúng là cần thiết, để có thể đưa ra được những hệ thống thông minh ứng dụng
trong các lĩnh vực khác nhau của đời sống nói chung và Viễn thông nói riêng.
Đề tài nghiên cứu này nhằm mục tiêu góp phần nhỏ bé vào những nỗ lực tiếp cận
các kỹ thuật liên quan và mong muốn đưa ra được các ứng dụng cụ thể.
Chương 1 - Giới thiệu chung
Thế nào là một hệ thống nhúng
Một hệ thống nhúng là một kết hợp giữa phần cứng và phần mềm máy tính, và có
thể thêm một số phần cơ khí khác, được thiết kế để thực hiện một chức năng xác
định. Lò vi sóng là một ví dụ cụ thể. Gần như mọi gia đình đều có ít nhất một lò vi
sóng trong nhà, và hàng chục triệu sản phẩm được sử dụng mỗi ngày, nhưng rất ít
tính linh hoạt của sản phẩm. Việc thay đổi một vài dòng lệnh trong phần mềm sẽ dễ
dàng hơn và rẻ hơn nhiều so với thiết kế lại một mạch phần cứng riêng.
1.1 Ứng dụng của hệ thống nhúng
Không giống như các phần mềm được thiết kế cho các máy tính đa dụng, phần mềm
nhúng không thể chạy trên các hệ thống nhúng khác mà không có các chỉnh sửa
quan trọng cần thiết. Lý do chủ yếu là tại các phần cứng nằm bên dưới. Phần cứng
trong mỗi hệ thống nhúng được thiết kế riêng cho mỗi ứng dụng, nhằm mục đích
sao cho chi phí hệ thống thấp nhất. Kết quả là các mạch không cần thiết sẽ bị loại
bỏ và tài nguyên phần cứng được chia sẻ dùng chung bất cứ chỗ nào có thể. Phần
sau đây trình bày các đặc tính phần cứng chung cho mọi hệ thống nhúng và lý do tại
sao có rất nhiều tuỳ biến phần cứng.
Các hệ thống nhúng được định nghĩa là có chứa một bộ xử lý và phần mềm, vậy các
đặc điểm chung của chúng là gì? Rõ ràng, để có phần mềm, hệ thống phải có nơi
chứa mã thực thi và phần chưa tạm cho các dữ liệu thời gian chạy. Đó tương ứng
chính là hình thức của ROM và RAM, và bất cứ hệ thống nhúng nào cũng đều có
một vài bộ nhớ này. Nếu chỉ yêu cầu có một số lượng nhỏ bộ nhớ, nó sẽ được chứa
luôn trong cùng một con chip với bộ xử lý. Ngược lại, nếu cần nhiều bộ nhớ thì các
loại bộ nhớ sẽ có thể được chứa trong các con chíp bộ nhớ ngoài.
Mọi hệ thống nhúng đều có một số loại đầu vào và đầu ra. Ví dụ, trong hệ thống lò
vi sóng, các đầu vào là các nút ở mặt trước máy và đầu dò nhiệt độ, và các đầu ra là
các hiển thị đọc được và nhiệt lượng toả ra của lò vi sóng. Các đầu ra của hệ thống
nhúng hầu như luôn luôn là một hàm của các đầu vào và một số các nhân tố khác
(như thời gian trôi qua, nhiệt độ hiện tại,…) Các đầu vào của hệ thống thường có
dạng của các sensor và đầu dò, các tín hiệu thông tin, hoặc núm điều khiển và nút
bấm. Các đầu ra thường là các hiển thị, các tín hiệu thông tin, hoặc chuyển sang môi
trường vật lý. Hình sau là một ví dụ điển hình của một hệ thống nhúng.
Hình 1-1 Hệ thống nhúng điển hình
Trừ các đặc tính chung được nêu ở trên, phần còn lại của hệ thống nhúng thường là
duy nhất. Trong thiết kế thường có các đặc tính cạnh tranh nhau tạo nên các biến
đổi trong hệ thống. Mỗi hệ thống phải đáp ứng một tập các yêu cầu khác nhau, bất
nhất bởi số lượng sản phẩm dự định sản xuất và bán ra. Ví dụ, việc phát triển
các cấu thành phần cứng theo yêu cầu riêng của bạn cho một số ít sản phẩm
là việc không mong muốn.
Thời gian hoạt động mong muốn
Trung bình hệ thống sẽ làm việc được trong bao lâu? Một tháng, một năm,
hay một thế kỷ? Điều này ảnh hưởng đến mọi quyết định trong quá trình
thiết kế kể từ việc lựa chọn thành phần phần cứng cũng như đến chi phí phát
triển và sản xuất hệ thống.
Độ tin cậy
Sản phẩm cuối cùng phải có độ tin cậy như thế nào? Nếu là một đồ chơi cho
trẻ em, hoạt động của nó không cần phải luôn luôn chính xác, nhưng nếu nó
là một phần của tàu con thoi vũ trụ, nó cần phải được đảm bảo chắc chắn
luôn luôn làm đúng chức năng của nó mỗi khi hoạt động và trong mọi lần
hoạt động.
Bên cạnh các yêu cầu chung kể trên, còn có một số các yêu cầu chức năng chi tiết
riêng cho từng hệ thống. Đó là các yêu cầu làm nên tính đơn nhất của từng hệ thống
nhúng như lò vi sóng, máy điều hoà nhịp tim hay máy nhắn tin.
Bảng 1-1 mô tả dải các giá trị có thể cho mỗi yêu cầu thiết kế có trước. Đây chỉ là
các giá trị ước lượng. Trong một số trường hợp, hai hoặc nhiều đặc tính có mối
quan hệ với nhau. Ví dụ như tăng năng lực xử lý có thể dẫn đến tăng chi phí sản
xuất. Ngược lại, chúng ta lại có thể giả thiết tăng năng lực xử lý có thể làm giảm chi
phí phát triển – bằng cách giảm độ phức tạp trong thiết kế phần mềm và phần cứng.
Do vậy, các giá trị trong một cột xác định không nhất thiết phải tỉ lệ thuận với nhau.
Bảng 1-1 Các yêu cầu thiết kế chung cho các hệ thống nhúng
Đặc tính Thấp Trung binh Cao
Bộ xử lý 4- hoặc 8-bit 16-bit 32- hoặc 64-bit
Bộ nhớ < 16 KB 64 KB đến 1 MB > 1 MB
Chi phí phát triển < $100,000
$100,000 to
$1,000,000
Từ những lý do trên, cần thiết phải xây dựng một mạng lưới để quản lý các trạm
thiết bị viễn thông - tin học. Các trạm này sẽ được quản lý tập trung. Tức là gồm
một trung tâm điều khiển, giám sát đặt tại trung tâm tỉnh thành, còn các trạm giám
sát sẽ đặt tại các trạm vệ tinh, các thông số giám sát về môi trường, điện áp, … cũng
như việc điều khiển được trao đổi với trung tâm trên nền IP.
Để đảm bảo rằng các thông số đo về môi trường như nhiệt độ, độ ẩm, các thông số
đo về điện áp, dòng điện, pha, cảnh báo gia tăng nhiệt độ, cảnh báo khói, cháy nổ,
cảnh báo mở cửa, kính vỡ … được cập nhật thường xuyên, chính xác và kịp thời, hệ
thống giám sát cần phải có khả năng đáp ứng kịp thời các sự kiện, đồng thời cũng
phải thực hiện song song nhiều tác vụ trong một khoảng thời gian. Có nhiều cách để
thực hiện điều này, trong đó có thể sử dụng một hệ điều hành thời gian thực, đa
nhiệm… Đối với bài toán về giám sát trạm vệ tinh, thì hệ thống nhúng là phù hợp
với quy mô giám sát một trạm.
1.3 Nội dung nghiên cứu
Phần 1: Nghiên cứu về Embedded OS
Chương 1: Giới thiệu chung
Chương 2: Kiến trúc của hệ điều hành nhúng
Chương 3: Tìm hiểu về một số hệ thống nhúng và cách thức phát triển hệ
thống nhúng
Phần 2: Đề xuất ứng dụng Embedded OS vào bài toán giám sát trạm vệ tinh
Chương 4: Xác định phạm vi và tiêu chí bài toán ứng dụng
Chương 5: Thiết kế, phát triển hệ thống và kết quả thử nghiệm
Kết luận và khuyến nghị hướng phát triển tiếp theo
1.4 Kết chương
Chương này nhằm mục đích giới thiệu về hệ thống nhúng nói chung, ứng dụng của
nó trong đời sống cũng như trong các lĩnh vực khác. Trình bày mục đích của việc
nghiên cứu và nội dụng nghiên cứu của đề tài.
Chương 2 - Kiến trúc của hệ điều hành nhúng
2.1 Lịch sử và sự phát triển trong tương lai
Các hệ thống như trong định nghĩa của hệ thống nhúng đã nêu ở trên không thể
Nói cách khác, một hệ thống thời gian thực một phần phải có khả năng thực thi một
số tác vụ hoặc ra quyết định kịp thời. Tức là phải hoàn thành các tính toán trong
một khoảng thời gian khống chế. Và trên thực tế, việc không hoàn thành đúng thời
hạn cũng bị coi là kết quả xấu như hoàn thành sai tác vụ.
Kết quả xảy đến nếu hệ thống không hoàn thành đúng thời hạn cũng là một vấn đề
mang tính quyết định. Ví dụ, nếu hệ thống thời gian thực là một phần của một hệ
thống điều khiển bay trên máy bay, có thể tính mạng của toàn bộ hành khách cũng
như phi hành đoàn sẽ bị đe doạ bởi một phép tính không đúng thời hạn. Tuy nhiên,
nếu hệ thống được dùng trong thông tin vệ tinh thì mối nguy hại chỉ làm sai lạc một
gói dữ liệu. Khi hậu quả càng nghiêm trọng thì việc hoàn thành đúng thời hạn lại
càng “chặt chẽ” (hard) và vì vậy, hệ thống được gọi là hệ thống thời gian thực chặt
chẽ (hard real-time system). Nếu yêu cầu về thời gian thực thấp thì hệ thống được
coi là có thời hạn “mềm” (sotf).
Người thiết kế hệ thống thời gian thực phải thật siêng năng vì cần phải đảm bảo độ
tin cậy của phần cứng và phần mềm trong mọi điều kiện có thể. Và nếu cuộc sống
con người phụ thuộc vào việc thực thi đúng hay sai của hệ thống thì sự đảm bảo này
phải được tính toán và mô tả trình bày trên giấy.
2.3 Đặc điểm nổi bật so với Multi-purpose OS
Trong thời kỳ sơ khai của máy tính không có mặt hệ điều hành. Người lập trình ứng
dụng chịu trách nhiệm hoàn toàn về điều khiển và giám sát các trạng thái của bộ xử
lý và các phần cứng khác. Trên thực tế, mục đích của hệ điều hành đầu tiên là cung
cấp nền tảng phần cứng ảo, giúp cho việc viết chương trình ứng dụng trở nên dễ
dàng hơn. Để hoàn thành mục tiêu này, các nhà phát triển hệ điều hành chỉ cần cung
cấp một tập các thủ tục – gần giống như thư viện phần mềm hiện nay – dùng cho
khởi động lại phần cứng về một trạng thái đã biết, đọc trạng thái các đầu vào, và
thay đổi trạng thái các đầu ra.
Các hệ điều hành hiện đại có khả năng thực thi đa tác vụ đồng thời trên một bộ xử
lý đơn lẻ. Mỗi tác vụ này là một đơn vị phần mềm có thể chạy riêng và chạy độc lập
với phần còn lại. Tập các yêu cầu của một phần mềm nhúng thường có thể phân
tách thành một số các đơn vị phần mềm như thế. Ví dụ như một thiết bị chia sẻ máy
mọi tác vụ liên kết phần mềm nhúng), vì vậy không cần phải có các đặc tính an toàn
bảo mật của các hệ điều hành đa người dùng. Mọi đặc tính kể trên có thể là một
phần cả hệ điều hành nhúng nhưng trong hầu hết các trường hợp không nhất thiết
phải có.
2.4 Mô hình
Phần mềm viết cho hệ thống nhúng có độ phức tạp khác nhau, tùy thuộc vào ứng
dụng. Có một số kiến trúc phần mềm sau đây:
- Phần mềm chỉ đơn giản là một vòng lặp. Vòng lặp gọi các tiến trình con, mỗi
tiến trình quản lý một phần của phần cứng hoặc phần mềm.
- Một số hệ thống nhúng thì phần mềm chủ yếu là các tiến trình xử lý ngắt. Có
nghĩa là các tác vụ được thực hiện khi có các sự kiện xảy ra. Ngắt có thể được
tạo ra bởi một bộ định thời hoặc khi cổng điều khiển thu được dữ liệu. Thường
thì loại kiến trúc phần mềm này được sử dụng để xử lý các sự kiện xảy ra với
tốc độ thấp và thời gian xử lý các sự kiện này ngắn và đơn giản. Hệ thống này
chỉ gồm một vòng lặp chính, nhưng tác vụ này không nhạy cảm với những độ
trễ không mong muốn.
- Một phần mềm mức thấp chuyển mạch giữa các tác vụ dựa trên một bộ định
thời. Với mức này thì phần mềm được xem như là có một nhân hệ điều hành.
Phụ thuộc vào các chức năng yêu cầu, thì có thể đưa vào nhiều hay ít các chức
năng phức tạp để quản lý các tác vụ chạy đồng thời. Hình 2-1 dưới đây mô tả
một nhân hệ điều hành nhúng.
Hình 2-2 Kiến trúc nhân hệ điều hành nhúng
Với đề tài này thì kiến trúc phần mềm nhúng sử dụng nhân hệ điều hành sẽ là mục
tiêu nghiên cứu và ứng dụng vào hệ thống giám sát trạm vệ tinh. Phần tiếp theo sẽ
trình bày về các vấn đề liên quan đến hệ điều hành nhúng.
2.5 Quản lý tiến trình
Hình 2-3 Trạng thái của tác vụ
Một tác vụ (task) (cũng còn được gọi là một tiến trình (thread)) là một chương trình
đơn giản, nó chiếm toàn bộ CPU cho việc thực hiện tác vụ đó. Quy trình thiết kế
cho một ứng dụng thời gian thực bao gồm việc phân chia việc phải làm thành các
ở lần cuối cùng họ sử dụng cuốn sách. Cái này gọi là ngữ cảnh của người đọc
(reader’context).
Một ngữ cảnh của một tác vụ ghi lại trạng thái của bộ xử lý chỉ ngay trước khi một
tác vụ khác đoạt quyền điều khiển. Ngữ cảnh thường gồm một con trỏ trỏ tới câu
lệnh tiếp theo được thực hiện (instruction pointer), địa chỉ của cao nhất hiện tại của
stack (stack pointer), và nội dung của các cờ của bộ vi xử lý và các thanh ghi chung.
Hình 2-4 Multiple tasks
2.6 Lập lịch
Trái tim và linh hồn của bất kỳ hệ điều hành nào là lập lịch. Nó là một phần của hệ
điều hành, dùng để xác định tác vụ nào ở trạng thái READY có quyền được sử dụng
CPU tại một thời điểm xác định.
Để quyết định tác vụ nào sẽ chạy, thì phần lập lịch của hệ điều hành (Scheduler) sẽ
ra quyết định. Trước khi đi vào phần này, ta sẽ tìm hiểu thêm về một số tham số của
tác vụ.
2.6.1 Quyền ưu tiên của tác vụ
Mỗi tác vụ sẽ có một quyền ưu tiên (priority), các tác vụ càng quang trọng, thì
quyền ưu tiên càng cao sẽ gán cho nó.
2.6.2 Quyền ưu tiên tĩnh
Các quyền ưu tiên của tác vụ là tĩnh khi các quyền ưu đó không thay đổi trong suốt
quá trình thực hiện ứng dụng. Do đó, mỗi tác vụ được gán một quyền ưu tiên cố
định tại thời điểm biên dịch. Tất cả các tác vụ và thời gian ràng buộc của nó được
xác định tại thời điểm biên dịch trong hệ thống ở đó các quyền ưu tiên là tĩnh.
2.6.3 Quyền ưu tiên động
Quyền ưu tiên của các tác vụ là động khi mà các quyền đó được thay đổi trong quá
trình thực hiện ứng dụng. Mỗi tác vụ có thể đổi quyền của nó trong thời gian chạy.
Đây là một đặc điểm mong muốn phải có trong nhân thời gian thực để tránh việc
đảo ngược quyền.
2.6.4 Đảo ngược quyền
Đây là vấn đề trong hệ thống thời gian thực và xảy ra thường xuyên khi sử dụng
nhân thời gian thực. Hình vẽ 2-4 sau miêu tả quá trình này. Task 1 có quyền cao
để chia sẻ bộ xử lý sao cho hầu hết các tác vụ quan trọng chiếm được bộ xử lý ngay
khi chúng cần đến. Vì vậy, hầu hết hệ điều hành nhúng sử dụng thuật toán lập lịch
dựa trên quyền ưu tiên mà hỗ trợ việc đoạt quyền ưu tiên. Điều có cho phép rằng tại