Đề tài : NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH Chương 1 Giới thiệu chung Chương 2 Kiến trúc điển hình của hệ điều hành nhúng Chương 3 Tìm hiểu một số hệ thống nhúng điển hình Chương 4 Xác định phạm vi và tiêu chí bài toán ứng dụng
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2BỘ 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
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
Trang 3LỜI CẢM ƠNTô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ưuchí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ẫntrực tiếp - Tiến sĩ Hoàng Minh đã tạo điều kiện giúp đỡ, hỗ trợ và động viên tôihoàn thành luận văn này
Hà nội, 2008
Nguyễn Hải Hà
Trang 4Mục lục
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT iv
DANH MỤC CÁC BẢNG BIỂU v
DANH MỤC CÁC HÌNH VẼ vi
MỞ ĐẦU 1
Chương 1 - Giới thiệu chung 2
1.1 Thế nào là một hệ thống nhúng 2
1.2 Ứng dụng của hệ thống nhúng 3
1.3 Mục đích của việc nghiên cứu 6
1.4 Nội dung nghiên cứu 8
1.5 Kết chương 8
Chương 2 - Kiến trúc của hệ điều hành nhúng 9
2.1 Lịch sử và sự phát triển trong tương lai 9
2.2 Các hệ thống thời gian thực 10
2.3 Đặc điểm nổi bật so với Multi-purpose OS 10
2.4 Mô hình 12
2.5 Quản lý tiến trình 13
2.6 Lập lịch 15
2.6.1 Quyền ưu tiên của tác vụ 16
2.6.2 Quyền ưu tiên tĩnh 16
2.6.3 Quyền ưu tiên động 16
2.6.4 Đảo ngược quyền 16
2.6.5 Cấp quyền ưu tiên 17
2.6.6 Thuật toán lập lịch 17
2.7 Nhân hệ điều hành 18
2.7.1 Nhân không hỗ trợ đoạt quyền ưu tiên 18
2.7.2 Nhân hỗ trợ đoạt quyền ưu tiên 20
2.8 Quản lý bộ nhớ 21
2.8.1 RAM 22
2.8.2 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
3.2 Đặc tính của các hệ thống nhúng 37
Trang 53.3 Phân loại các hệ thống nhúng 38
3.4 Phần cứng nhúng 39
3.4.1 Kiến trúc phần cứng 39
3.5 Phần mềm 43
3.5.1 Nhân hệ điều hành 43
3.5.2 Hệ con điều khiển tác vụ hoặc tiến trình 43
3.5.3 Hệ con quản lý driver thiết bị hoặc I/O 43
3.5.4 Các loại OS ứng dụng trong các hệ thống nhúng 43
3.5.5 Ngôn ngữ lập trình hệ nhúng 44
3.5.6 API 44
3.6 Các bước phát triển ứng dụng 44
3.7 Kết chương 46
Chương 4 - Xác định phạm vi và tiêu chí bài toán ứng dụng 47
4.1 Đặt vấn đề 47
4.2 Chỉ tiêu kỹ thuật 48
4.2.1 Các chỉ tiêu đối với hệ điều hành 48
4.2.2 Các yêu cầu khác về hệ thống 48
4.3 Các hệ thống giám sát hiện có trên thị trường 50
4.4 Phạm vi bài toán ứng dụng 50
4.4.1 Đặc điểm của FreeRT OS 50
4.4.2 Một số hàm API của Free RTOS 51
4.4.3 Xây dựng hệ thống giám sát cảnh báo 53
4.5 Kết chương 53
Chương 5 - Thiết kế, phát triển hệ thống và kết quả thử nghiệm 54
5.1 Thiết kế tổng thể 54
5.1.1 Mô hình một trạm tổng đài vệ tinh 54
5.1.2 Mô hình hệ thống 54
5.2 Thiết kế chi tiết 56
5.2.1 Thiết kế phần cứng 57
5.2.2 Thiết kế phần mềm 57
5.2.3 Cổng đo DI (các cổng cắm thiết bị đo) 59
5.3 Thực hiện giải pháp 66
5.3.1 Thiết bị đo + cảm biến 66
5.3.2 Phân tích, xử lý các tín hiệu và điều khiển đầu ra 66
5.4 Các sơ đồ đấu nối thiết bị 67
5.4.1 Sơ đồ đấu nối DI-DO 67
5.4.2 Sơ đồ chân DI/DO 67
5.5 Kết quả thử nghiệm 67
5.6 Kết chương 68
TÀI LIỆU THAM KHẢO 70
Trang 6DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
API Application Programming Interface Giao diện lập trình ứng dụng
ACNMS Alarm, Control network
management system
Hệ thống quản lý mạng cảnhbáo và điều khiển
TCP Transmission Control Protocol Giao thức điều khiển truyền vận
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
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ự
MMI Monitor Management Interface Giao diện quản lý giám sátPLC Programmable Logic Controller Bộ điều khiển logic lập trình
được
ATS Automatic Transfer Switch Tự động chuyển nguồn
Trang 7DANH MỤC CÁC BẢNG BIỂUBảng 1-1 Các yêu cầu thiết kế chung cho các hệ thống nhúng 6Bảng 2-1 Đặc tính của bộ nhớ 22
Trang 8DANH MỤC CÁC HÌNH VẼ
Hình 1-1 Hệ thống nhúng điển hình 4
Hình 2-1 Kiến trúc nhân hệ điều hành nhúng 13
Hình 2-2 Trạng thái của tác vụ 13
Hình 2-3 Multiple tasks 15
Hình 2-4 Đảo ngược quyền ưu tiên 17
Hình 2-5 Hoạt động của nhân không hỗ trợ đoạt quyền ưu tiên 19
Hình 2-6 Hoạt động của nhân có hỗ trợ đoạt quyền ưu tiên 21
Hình 2-7 Các loại bộ nhớ trong hệ thống nhúng 21
Hình 2-8 Công tắc bàn phím 24
Hình 2-9 Ma trận bàn phím 24
Hình 2-10 Các kiểu LCD 26
Hình 2-11 Các đầu vào rời rạc 28
Hình 2-12 Các đầu ra rời rạc 29
Hình 2-13 Đọc các đầu vào rời rạc sử dụng 74251 30
Hình 2-14 Kênh đầu vào rời rạc 31
Hình 2-15 Cập nhật các đầu ra rời rạc sử dụng 74259 32
Hình 2-16 Kênh đầu ra rời rạc 32
Hình 2-17 Biến đổi tương tự - số 33
Hình 3-1 Ví dụ về các hệ thống nhúng những năm đầu 35
Hình 3-2 Các ứng dụng của hệ thống nhúng 36
Hình 3-3 Một số mạch logic 37
Hình 3-4 PLC và Embedded System 38
Hình 3-5 Kiến trúc phần cứng 39
Hình 3-6 Một số bộ vi xử lý 40
Hình 3-7 Một số loại bộ nhớ sử dụng trong hệ thống nhúng 40
Hình 3-8 Các loại hiển thị 41
Hình 3-9 Ví dụ về bộ cảm biến áp suất 42
Hình 3-10 Các bước phát triển ứng dụng 45
Hình 3-11 Ví dụ về một bo mạch đánh giá 46
Hình 5-1 Mô hình một trạm tổng đài vệ tinh 54
Hình 5-2 Mô hình hệ thống 55
Hình 5-3 Sơ đồ khối PLC tại trạm vệ tinh 57
Hình 5-4 Sơ đồ DI/DO trên PLC 67
Trang 9MỞ ĐẦ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 conngườ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óiriê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ĩnhvự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ứutrong lĩnh vực Công nghệ thông tin và Viễn thông chỉ tập trung vào hướng pháttriể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ốngnhú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ànhnhúng là cần thiết, để có thể đưa ra được những hệ thống thông minh ứng dụngtrong 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ậncác kỹ thuật liên quan và mong muốn đưa ra được các ứng dụng cụ thể
Trang 10Chươ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ò visó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 ítngười nhận ra được đã có một bộ xử lý và phần mềm có dính dáng đến việc chuẩn
bị bữa ăn trưa hoặc ăn tối của họ
Điều này đối lập với máy tính cá nhân của mỗi gia đình Máy tính cá nhân cũng cóphần cứng, phần mềm và một số phần cơ khí (như các ổ đĩa, ) Nhưng máy tính cánhân không được thiết kế để thực hiện một chức năng xác định mà ngược lại, chúng
có khả năng thực hiện rất nhiều việc Rất nhiều người dùng sử dụng cụm từ máytính “đa dụng” để làm rõ sự khác biệt này Khi được xuất xưởng, một máy tính đadụng là một sản phẩm trống, nhà sản xuất không biết khách hàng sẽ làm gì với nó.Một khách hàng có thể dùng nó để chứa dữ liệu trên mạng, khách hàng khác có thểdùng nó chỉ để chơi game, trong khi người khác có thể dùng nó để viết các tiểuthuyết nổi tiếng
Nói chung một hệ thống nhúng thường là một thành phần trong một hệ thống lớnhơn Ví dụ, các ô tô và xe tải hiện đại có chứa rất nhiều hệ thống nhúng Một hệthống nhúng điều khiển các phanh chống khoá, một hệ thống khác theo dõi và điềukhiển bộ phát của xe, hệ thống khác nữa thì hiển thị thông tin trên bảng đồng hồ.Trong một số trường hợp, các hệ thống nhúng này được nối với nhau bằng cácmạng thông tin liên lạc, nhưng đó không phải là một yêu cầu bắt buộc
Một điều cần chú ý là máy tính đa dụng cũng được tạo nên từ nhiều hệ thống nhúng
Ví dụ, máy tính có bàn phím, chuột, cạc màn hình, modem, ổ cứng, ổ mềm và cạctiếng – mỗi thành phần đó là một hệ thống nhúng Mỗi thiết bị đó có một bộ xử lý
và một phần mềm được thiết kế để thực hiện một chức năng chuyên biệt Ví dụ,modem được thiết kế để gửi và nhận các dữ liệu số qua một đường dây điện thoại
Trang 11tương tự Tất cả chỉ có thế Và mọi thiết bị khác đều có thể tóm tắt chức năng bằngmột câu đơn như vậy.
Nếu một hệ thống nhúng được thiết kế tốt, người dùng thiết bị sẽ không thể nhậnthấy sự có mặt của bộ xử lý và phần mềm Ví dụ như các trường hợp lò vi sóng,VCR, hay đồng hồ báo thức Trong một số trường hợp, có thể thay thế thiết bị đóbằng một thiết bị tương tự mà không có bộ xử lý và phần mềm Lúc đó, chúng đượcthay thế bằng một mạch tích hợp riêng thực hiện cùng chức năng trong phần cứng.Tuy nhiên, khi thiết kế được gắn sẵn trong phần cứng như thế này sẽ làm mất đi tínhlinh 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ềmnhú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ửaquan 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ứngtrong mỗi hệ thống nhúng được thiết kế riêng cho mỗi ứng dụng, nhằm mục đíchsao 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ầnsau đâ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ạisao 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ơichứ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 ứngchí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ứaluô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ácloạ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à
Trang 12cá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ốngnhú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útbấ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ôitrườ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
kỳ yêu cầu nào cũng ảnh hưởng đến sự thoả hiệp trong suốt quá trình phát triển sảnphẩm Ví dụ, nếu hệ thống cần phải có một sản phẩm có giá thành nhỏ hơn 10 đô,thì những yêu cầu khác như khả năng xử lý và độ tin cậy có thể chỉ cần trung bình
để thoả mãn yêu cầu về giá
Tất nhiên, giá thành sản phẩm chỉ là một trong các ràng buộc có thể mà việc thiết kế
hệ thống nhúng phải tuân theo Các yêu cầu thiết kế chung khác bao gồm:
Năng lực xử lý
Là tổng năng lực xử lý cần thiết để hoàn thành tác vụ Năng lực xử lý thườngđược tính bằng tốc độ MIPS (millions of instructions per second – hàng triệulệnh mỗi giây) Nếu 2 bộ xử lý có tốc độ là 25 MIPS và 40 MIPS, bộ thứ 2 sẽđược nói là có năng lực xử lý mạnh hơn Bên cạnh năng lực xử lý, các đặctính quan trọng khác của bộ xử lý cũng cần được xem xét Một trong các đặctính đó là độ rộng thanh ghi, thường trong dải từ 8 đến 64 bit Máy tính đa
Trang 13dụng ngày nay sử dụng các bộ xử lý 32- và 64-bit, nhưng các hệ thống nhúngvẫn thường dùng các bộ xử lý 8 và 16-bít cũ hơn và giá thành rẻ hơn.
Bộ nhớ
Là tổng dung lượng bộ nhớ (ROM và RAM) cần thiết để lưu trữ phần mềmthực thi và dữ liệu chạy Người thiết kế phần cứng thường phải dự đoántrước lượng bộ nhớ cần thiết và sau đó sẽ tăng giảm dung lượng thực khiphần mềm được phát triển Tổng dung lượng phần mềm cần thiết có thể ảnhhưởng đến việc lựa chọn bộ xử lý Nói chung, độ rộng thanh ghi của bộ xử lýthiết lập giới hạn trên của dung lượng bộ nhớ mà nó có thể truy nhập (ví dụ,một thanh ghi địa chỉ 8-bit chỉ chó thể lựa chọn 256 vị trí bộ nhớ)
Giá thành phát triển
Là chi phí của quá trình làm phần cứng và phần mềm Đây là chi phí cố định,chỉ tính một lần, do đó có thể không là vấn đề lớn (thường cho các sản phẩmsản xuất khối lượng lớn) hoặc là thước đo chính xác duy nhất cho giá thànhsản phẩm (trong trường hợp sản xuất số lượng nhỏ sản phẩm)
Số lượng sản phẩm
Việc cân bằng giữa chi phí sản xuất và chi phí phát triển bị ảnh hưởng nhiềunhấ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ểncá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ìnhthiế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áttriển và sản xuất hệ thống
Độ tin cậy
Trang 14Sản phẩm cuối cùng phải có độ tin cậy như thế nào? Nếu là một đồ chơi chotrẻ 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ắnluôn luôn làm đúng chức năng của nó mỗi khi hoạt động và trong mọi lầnhoạ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ếtriê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ốngnhú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ốiquan 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ảnxuấ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 chiphí 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
Chi phí phát triển < $100,000 $100,000$1,000,000 to> $1,000,000Chi phí sản xuất < $10 $10 to $1,000 > $1,000
Thời gian hoạt động
mong muốn Vài ngày, vài tuần
hay vài tháng
Độ tin cậy Có thể đôi khi sai Phải hoạt động tin cậyPhải được dựphòng sai
1.2 Mục đích của việc nghiên cứu
Với đặc điểm hướng ứng dụng của các hệ thống nhúng, các nhu cầu về các hệ thốngthông minh, nhỏ gọn, tiêu thụ điện năng ít, … các chip vi xử lý được sản xuất với
Trang 15giá thành rất rẻ, đồng thời với nền công nghệ thông tin phát triển rất mạnh mẽ hiệnnay nên việc nghiên cứu hệ thống nhúng và đưa ra được những ứng dụng cụ thểtrong lĩnh vực viễn thông là cần thiết Hiện nay, cùng với sự phát triển mạnh mẽ củathị trường viễn thông và các ứng dụng của công nghệ thông tin, các trạm thiết bịviễn thông – tin học ngày càng tăng về số lượng và yêu cầu khắt khe về chất lượnghoạt động, mang đến nhiều thách thức cho các doanh nghiệp cung cấp dịch vụ viễnthông hay ứng dụng công nghệ thông tin như:
Số lượng trạm thiết bị lớn, đòi hỏi số lượng lớn nhân viên quản lý trực trạm do
đó dẫn đến chi phí sản xuất lớn kéo theo hiệu quả kinh doanh thấp
Các thông số môi trường phòng máy, trạng thái hoạt động của các thiết bị phụtrợ được theo dõi bằng nhân công, phân tán, nên không nhận biết kịp thời cảnhbáo hay sự cố, dễ gây ra các hậy quả đáng tiếc do sự cố trong phòng máy
Các trạm thiết bị được quản lý tại chỗ, phân tán nên trình độ quản lý thiết bị phụtrợ không đồng đều, các thông số môi trường phòng máy khó đảm bảo yêu cầu
kỹ thuật, làm rút ngắn tuổi thọ của cả thiết bị viễn thông – tin học và các thiết bịphụ trợ
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ạmthiế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ồmmộ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ámsá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ũngnhư 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ũngphả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
Trang 16nhiệ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ợpvớ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ệcnghiên cứu và nội dụng nghiên cứu của đề tài
Trang 17Chươ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ểxuất hiện trước năm 1971 Đó là năm Intel giới thiệu hệ thống vi xử lý đầu tiên trênthế giới Con chíp này, chíp 4004, được thiết kế cho dòng sản phẩm máy tính cánhân sản xuất bởi công ty Nhật Bản Busicom Năm 1969, Busicom đề nghị Intelthiết kế một tập các mạch tích hợp riêng theo yêu cầu của họ - mỗi mạch được dùngcho một dòng sản phẩm máy tính mới của họ Chíp 4004 là câu trả lời của Intel cho
đề nghị này Thay vì thiết kế phần cứng riêng cho mỗi dòng máy tính, Intel đề xuấtgiải pháp sản xuất một mạch đa năng có thể sử dụng cho tất cả các dòng máy tính
Bộ xử lý đa năng mày được thiết kế để đọc và thực thi một tập các lệnh – phần mềm– lưu trữ trong một con chíp nhớ ngoài Ý tưởng của Intel là phần mềm sẽ làm nêntập đặc điểm riêng của mỗi máy tính
Bộ vi xử lý đã là một thành công bất ngờ, và được sử dụng ngày càng rộng rãi trongthập kỷ sau Các ứng dụng nhúng đầu tiên bao gồm tàu vũ trụ không người lái, cácđèn tín hiệu giao thông được máy tính hoá, và các hệ thống điều khiển các chuyếnbay Vào những năm 1980, các hệ thống nhúng dấy lên làn sóng của thời đại vi tính
và mang các bộ vi xử lý vào mọi ngóc ngách của cuộc sống Rất nhiều thiết bị điện
tử trong bếp của chúng ta (các máy làm bánh mì, các máy xử lý thức ăn và các lò visóng), trong phòng khách (tivi, các dàn âm thanh và các điều khiển từ xa), và tại nơilàm việc (các máy fax, máy nhắn tin, máy in laze, các máy đọc thẻ cá nhân) đều làcác hệ thống nhúng
Có vẻ hiển nhiên là số lượng các hệ thống nhúng sẽ tiếp tục tăng lên nhanh chóng.Một số thiết bị nhúng mới hứa hẹn sẽ được sản xuất với số lượng lớn: các công tắcđèn và bộ ổn nhiệt có thể điều khiển bởi một máy tính trung tâm, các hệ thống túikhí thông minh sẽ không bơm phồng khi trẻ nhỏ hoặc người lớn có kích thước bénhỏ có mặt, các máy sắp lịch làm việc điện tử có kích thước bằng bàn tay và cácmáy hỗ trợ số cá nhân (PDA), các máy quay số, và các hệ thống định vị hiển thị số
Trang 18Rõ ràng rằng một lúc nào đó sẽ cần các cá nhân có khả năng và nguyện vọng thiết
kế thế hệ tiếp theo các hệ thống nhúng
2.2 Các hệ thống thời gian thực
Các hệ thống thời gian thực là một phân lớp của hệ thống nhúng Hệ thống thời gianthực được định nghĩa chung là một hệ thống máy tính có các ràng buộc về thời gian.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 trongmộ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ờihạ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ũngnhư 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ộtgó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ạicà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ặtchẽ (hard real-time system) Nếu yêu cầu về thời gian thực thấp thì hệ thống đượccoi 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ốngcon 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àyphả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 ứngdụ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à cungcấ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
Trang 19cấ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 chokhở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ậpvớ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ântá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
in chứa ba tác vụ phần mềm rõ ràng sau:
Tác vụ 1: Nhận dữ liệu từ máy tính nối qua cổng nối tiếp A
Tác vụ 2: Nhận dữ liệu từ máy tính nối qua cổng nối tiếp B
Tác vụ 3: Định dạng và gửi dữ liệu đang đợi (nếu có) tới máy in qua cổngsong song
Các tác vụ mô tả nhiệm vụ chủ yếu của phần mềm, khiến cho việc phát triển và thựchiện phần nhúng dễ dàng hơn, mã nguồn kết quả cũng đơn giản, dễ hiểu và dễ bảotrì hơn Bằng cách phân tách một chương trình lớn thành các mảnh nhỏ, các lậptrình viên có thể dễ dàng tập trung năng lực và tài trí vào các đặc tính riêng của hệthống mà chưa được phát triển
Nói đúng ra, một hệ điều hành không phải là một thành phần cần có của bất kỳ hệthống máy tính nào – dù là nhúng hay không Luôn luôn có thể xây dựng các chứcnăng của hệ điều hành trong bản thân phần mềm ứng dụng Chương trình chỉ có một
cách đơn giản để thực thi – bắt đầu tại hàm main – đó là tải vào hệ thống và chạy.
Điều này tương đương với chỉ một tác vụ Nhưng khi độ phức tạp của chương trìnhứng dụng tăng lên chứ không chỉ là làm nhấp nháy một đèn LED, lợi ích của hệđiều hành cũng tăng lên rất nhiều so với chi phí liên quan
Nếu trước đây bạn chưa bao giờ làm việc với phần bên trong của hệ điều hành, bạn
có thể nghĩ là chúng rất phức tạp Tôi chắc chắn rằng các nhà sản xuất hệ điều hànhcũng muốn bạn tiếp tục tin như vậy và rằng chỉ có một nhóm nhỏ các nhà khoa học
Trang 20máy tính có khả năng viết một cái như thế Nhưng tôi ở đây để chỉ ra một sự thậtrằng: nó không quá khó như vậy! Thực tế, các hệ điều hành nhúng thậm chí còn dễviết hơn các hệ điều hành máy để bàn – chúng yêu cầu ít chức năng hơn và dễ địnhnghĩa hơn Một khi bạn đã học được các chức năng đó là gì và một số kỹ thuật thựchiện, bạn sẽ thấy rằng hệ điều hành cũng không khó phát triển hơn bất kỳ mảnhphần mềm nhúng nào.
Hệ điều hành nhúng nhỏ bởi vì chúng thiếu rất nhiều thứ mà bạn mong muốn tìmthấy trên máy tính để bạn Ví dụ các hệ thống nhúng hiếm khi có ổ cứng hoặc hiểnthị đồ hoạ, và vì vậy chúng không cần có hệ thống file hoặc giao diện đồ hoạ ngườidùng trong hệ điều hành Thêm vào đó, chỉ có duy nhất một “người dùng” (tức là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ànbả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ộtphầ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ếtphải 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ộ địnhthờ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
Trang 21Phụ 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ứcnă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ụctiê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đáp ứng tác vụ cho mỗi phần của vấn đề cần giải quyết Mỗi tác vụ được gán một
Trang 22quyền ưu tiên, nó chiếm các thanh ghi của CPU, và vùng stack của nó Hình vẽ 2-3minh hoạ điều đó.
Mỗi tác vụ cụ thể là một vòng lặp vô tận, trạng thái của nó có thể là bất kỳ trạngthái nào trong năm trạng thái sau: DORMANT, READY, RUNNING, WAITINGhoặc ISR Hình 2-2 minh hoạ điều này
Trạng thái DORMANT tương ứng với một tác vụ mà nằm bên trong bộ nhớnhưng không làm để nhân đa nhiệm sử dụng
Một tác vụ ở trạng thái READY khi nó có thể được thực hiện nhưng quyền ưutiên của nó thấp hơn tác vụ đang thực hiện
Một tác vụ ở trạng thái RUNNING khi nó điều khiển CPU
Một tác vụ ở trạng thái WAITING khi nó yêu cầu một sự kiện nào đó xảy ra(đợi một quá trình IO hoàn thành, tài nguyên dung chung là khả dụng với nó,hoặc một xung thời gian xảy ra, hoặc thời gian đã đạt đến, v v )
Một tác vụ trạng thái ISR khi một ngắt đã xảy ra và CPU đang trong quá trình
xử lý ngắt
Chúng ta đã biết được nghe về đa nhiệm và ý tưởng là một hệ điều hành có thể thựchiện nhiều chương trình tại cùng thời điểm Nhưng điều đó có nghĩa là gì? Làm thếnào nó có thể thực hiện được nhiều tác vụ cùng xảy ra? Trong thực tế, các tác vụkhông được thực hiện tại cùng thời điểm Thay vào đó, chúng được thực hiện songsong một cách giả tạo Chúng đơn thuần sử dụng lần lượt bộ xử lý Nó giống vớicách mà nhiều người có thể đọc cùng một cuốn sách, nhưng chỉ một người thực sự
sử dụng cuốn sách tại một thời điểm, nhưng họ có thể cùng đọc bằng cách lần lượtđọc cuốn sách
Một hệ điều hành chịu trách nhiệm cho việc xác định tác vụ nào sử dụng bộ xử lýtại một thời điểm cụ thể Ngoài ra, nó duy trì thông tin về trạng thái của mỗi tác vụ.Thông tin này được gọi là ngữ cảnh (context) của tác vụ, và nó phục vụ cho mộtmục đích tương tự như đánh dấu sách (bookmark) Trong kịch bản nhiều người đọc
Trang 23sách, mỗi người đọc coi như có một bookmark riêng của họ Và họ phải có khảnăng nhận ra bookmark của họ, và nó phải biểu thị rằng vị trí mà họ ngừng đọc sách
ở 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ộttá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âulệnh tiếp theo được thực hiện (instruction pointer), địa chỉ của cao nhất hiện tại củastack (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ụngCPU 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ủatác vụ
Trang 242.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ốtquá 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ó đượcxá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ụngnhâ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 caohơn Task 2, Task2 cao hơn Task 3 Task 1 và Task 2 đang đợi trong khi Task3 đangthực hiện Tại một thời điểm nào đó, Task 3 yêu cầu một semaphore trước khi truycập vào tài nguyên dùng chung, Task 3 thực hiện hoạt động trên tài nguyên đó chođến khi nó bị chiếm bởi Task 1 có quyền ưu tiên cao hơn Task 1 thực hiện và nócũng muốn truy cập vào tài nguyên Bởi vì Task 3 đang chiếm tài nguyên, do đóTask 1 phải đợi cho đến khi Task 3 giải phóng semaphore Khi Task 1 cố gắng lấysemaphore, thì kernel thông báo semaphore đang được sử dụng, và Task1 bị treo ở
đó, và Task 3 được chạy Task 3 lại chạy cho đến khi Task 2 đoạt quyền, Task 2thực hiện cho đến khi hết, và nó giải phóng CPU cho Task 3 Khi Task 3 kết thúc,
nó giải phóng semaphore cho Task 1, Task 1 đang đợi semaphore khi có đượcsemaphore, thì nó chiếm CPU và truy cập vào tài nguyên để thực hiện nốt phần tác
vụ còn lại
Trang 25Như vậy là quyền của Task 1 coi như thấp so với Task 3 vì nó phải đợi tài nguyên
do Task 3 chiếm Tình trạng này trở nên trầm trọng hơn do Task 2 đoạt quyền điềukhiển CPU của Task 3, và như vậy nó làm trễ việc thực hiện Task 1 thêm một thờigian nữa
Hình 2-5 Đảo ngược quyền ưu tiên
2.6.5 Cấp quyền ưu tiên
Cấp quyền ưu tiên không phải là một công việc tầm thường vì sự phức tạp của các
hệ điều hành thời gian thực Trong hầu hết hệ thống, không phải tất cả các tác vụđều là quan trọng Các tác vụ không quan trọng hiển nhiên sẽ được gán một quyền
ưu tiên thấp Hầu hết các hệ thời gian thực có sự kết hợp các yêu cầu cứng và mềm(SOFT and HARD) Trong một hệ thời gian thực SOFT, các tác vụ được thực hiệnnhanh nhất có thể, nhưng chúng không phải kết thúc trong một khoảng thời gian xácđịnh Trong các hệ thời gian thực HARD, các tác vụ không những chỉ chính xác màcòn phải đúng thời gian
2.6.6 Thuật toán lập lịch
Có một số các thuật toán chung cho lập lịch như: FIFO, shortest job first, và roudrobin Tuy nhiên, các hệ điều hành nhúng không sử dụng những thuật toán đơn giảntrên Các hệ nhúng (cụ thể là các hệ thời gian thực) luôn luôn yêu cầu một cách thức
để 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ý ngaykhi 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ịchdự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
Trang 26bất kỳ thời điểm nào mà một tác vụ đang sử dụng bộ xử lý thì được đảm bảo là tác
vụ có quyền cao nhất Các tác vụ có quyền ưu tiên thấp phải đợi cho đến khi các tác
vụ có quyền cao hơn kết thúc sử dụng bộ xử lý và trước khi các tác vụ khôi phục lạicông việc của nó Việc đoạt quyền thêm vào để đảm bảo rằng tất cả các tác vụ đangchạy có thể bị ngắt bởi hệ điều hành nếu một tác vụ có quyền ưu tiên cao hơn ởtrạng thái READY
2.7 Nhân hệ điều hành
Lập lịch (scheduler), cũng còn được gọi là điều vận (dispatcher), là một phần củanhân chịu trách nhiệm xác định tác vụ nào sẽ chạy tiếp theo Hầu hết các nhân thờigian thực đều dựa trên quyền ưu tiên Mỗi tác vụ được gán một quyền ưu tiên dựatrên mức độ quan trọng của nó Quyền của tác vụ là do ứng dụng xác định Trongmột nhân dựa trên quyền ưu tiên, việc điều khiển CPU luôn được trao cho tác vụ ởtrạng thái READY có quyền ưu tiên cao nhất Tuy nhiên, khi tác vụ có quyền ưutiên cao nhất chiếm được CPU, được xác định bởi loại kernel được sử dụng Có hailoại nhân dựa trên quyền ưu tiên là nhân có hỗ trợ đoạt quyền ưu tiên và nhânkhông hỗ trợ đoạt quyền ưu tiên
2.7.1 Nhân không hỗ trợ đoạt quyền ưu tiên
Các nhân không hỗ trợ đoạt quyền ưu tiên yêu cầu mỗi tác vụ làm một việc gì đó để
từ bỏ dứt khoát việc điều khiển CPU Để duy trì sự đánh lừa về sự trùng lặp về thờigian, thì quá trình này phải được làm một cách tuần tự Việc lập lịch không đoạtquyền ưu tiên cũng còn được gọi là sự phối hợp nhiều tác vụ (cooperativemultitasking), các tác vụ phối hợp với nhau để chia sẻ CPU Các sự kiện khôngđồng bộ vẫn được xử lý bởi các ISR Một ISR có thể tạo ra một tác vụ có quyền caohơn ở trạng thái READY và sẵn sàng để chạy, nhưng ISR luôn trả về cho tác vụ bịngắt Một tác vụ mới có quyền ưu tiên cao hơn sẽ có được quyền điều khiển CPUchỉ khi tác vụ hiện tại từ bỏ quyền điều khiển CPU
Trang 27Đáp ứng mức tác vụ sử dụng nhân không hỗ trợ đoạt quyền ưu tiên có thể thấp hơnrất nhiều so với mức nền/đáy hệ thống bởi vì đáp ứng mức tác vụ được đo bằng thờigian của tác vụ dài nhất.
Một ưu điểm nữa của nhân không hỗ trợ đoạt quyền ưu tiên ít cần thiết phải bảo vệ
dữ liệu dùng chung thông qua việc sử dụng các semaphore Mỗi tác vụ chiếm CPUthành của riêng nó, và không phải sợ rằng tác vụ sẽ bị đoạt quyền Điều này khôngphải là một quy tắc tuyệt đối, và trong một vài trường hợp, các semaphore cũng nênđược sử dụng các thiết bị chia sẻ I/O cũng có thể yêu cầu việc sử dụng semaphore,
ví dụ, một tác vụ cũng có thể cần thiết phải truy cập tới một máy in
Hình 2-6 Hoạt động của nhân không hỗ trợ đoạt quyền ưu tiên
Hình vẽ 2-5 sau minh hoạ hoạt động của nhân không hỗ trợ đoạt quyền ưu tiên Mộttác vụ đang được thực hiện[F2,4(1)], nhưng nhận được ngắt Nếu các ngắt được chophép, thì các vector CPU chuyển tới ISR [L2.4(2)] Ngắt xử lý sự kiện [F2.4(3)] vàtạo một tác vụ ở trạng thái READY có quyền ưu tiên cao hơn Khi kết thúc ngắt, thìlệnh RFI (Return From Interrupt) được thực hiện, và việc điều khiển CPU chuyển
về cho tác vụ bị ngắt [F2.4(4)] Tác vụ bị ngắt sẽ khôi phục và bắt đầu thực hiện tạilệnh tiếp theo của lệnh bị ngắt [F2.4(5)] Khi tác vụ hoàn thành, nó gọi một servicecung cấp bở nhân để giải phóng CPU cho tác vụ khác [F2.4(6)] Tác vụ có quyền ưutiên cao hơn sẽ được thực hiện để xử lý sự kiện gây ra bởi ngắt ISR
Trang 28Bất lợi quan trọng của nhân không hỗ trợ đoạt quyền ưu tiên là khả năng đáp ứng.Một tác vụ có quyền ưu tiên cao hơn mà đang ở trạng thái READY có thể phải đợimột thời gian dài để chạy bởi vì tác vụ hiện tại phải giải phóng CPU khi nó sẵn sànglàm như vậy Thời gian đáp ứng của mức tác vụ trong nhân không hỗ trợ đoạt quyền
ưu tiên là không xác định, ta không thể biết khi nào thì tác vụ có quyền ưu tiên caohơn chiếm được quyền điều khiển CPU Nó do ứng dụng quyết định giải phóngđiều khiển CPU
Tổng kết lại, một nhân không hỗ trợ đoạt quyền ưu tiên cho phép mỗi tác vụ chạycho đến khi nó tự nguyện từ bỏ quyền điều khiển CPU Ngắt đoạt quyền ưu tiên củatác vụ, khi hoàn thành ngắt ISR, ISR trả CPU lại cho tác vụ bị chiếm Tác vụ đápứng tốt hơn so với hệ foreground/background nhưng nó vẫn không xác định Rất ítnhân thương mại là loại không hỗ trợ đoạt quyền ưu tiên
2.7.2 Nhân hỗ trợ đoạt quyền ưu tiên
Nhân hỗ trợ đoạt quyền ưu tiên được sử dụng khi đáp ứng hệ thống là quan trọng.Tác vụ có quyền ưu tiên cao nhất ở trạng thái READY luôn luôn được sử dụngCPU Khi một tác vụ tạo ra một tác vụ khác có quyền ưu tiên cao hơn ở trạng tháiREADY, thì tác vụ hiện tại bị ngưng và tác vụ có quyền cao hơn được trao quyềnđiều khiển CPU ngay lập tức Nếu một ngắt tạo ra một tác vụ có quyền cao hơn ởtrạng thái READY, khi ngắt kết thúc, tác vụ bị ngắt bị ngưng và tác vụ có quyền ưutiên cao hơn sẽ được chạy Hình vẽ 2-6 miêu tả điều này
Với nhân có đoạt quyền ưu tiên, việc thực hiện các tác vụ có quyền ưu tiên cao nhất
là xác định, có thể xác định khi nào nó đoạt quyền điều khiển CPU Do đó, đáp ứngthời gian mức tác vụ được tối thiểu hoá do sử dụng nhân có đoạt quyền ưu tiên.Tóm lại, nhân có đoạt quyền ưu tiên luôn thực hiện tác vụ có quyền ưu tiên cao nhất
ở trạng thái READY Ngắt đoạt quyền của tác vụ Khi hoàn thành ISR, nhân chuyểnquyền chiếm CPU cho tác vụ ở trạng thái READY mà có quyền ưu tiên cao hơn đểchạy
Trang 29Hình 2-7 Hoạt động của nhân có hỗ trợ đoạt quyền ưu tiên
2.8 Quản lý bộ nhớ
Có rất nhiều thiết bị nhớ đang được sử dụng cho các hệ thống máy tính hiện tại Taphải hiểu biết về sự khác nhau giữa chúng và hiểu cách sử dụng hiệu quả các loại bộnhớ đó Trong phần thảo luận của ta, ta sẽ tiếp cận các loại bộ nhớ này từ quan điểmcủa phần mềm
Hầu hết ta đã nghe đến RAM hoặc ROM Nhưng thực tế, nó chia thành nhiều loại.RAM, dữ liệu được lưu trong các vị trí nhớ có thể đọc, ghi theo ý muốn ROM, dữliệu được lưu trong vị trí nhớ chỉ có thể đọc, nhưng không bao giờ được ghi Trongmột vài trường hợp, nó có thể ghi đè dữ liệu trong một bộ nhớ giống như ROM.Những thiết bị như vậy được gọi bộ nhớ lai ghép vì nó tồn tại những đặc tính củaRAM và ROM Hình vẽ 2-7 minh hoạ việc phân chia thiết bị nhớ mà thường thấytrong các hệ thống nhúng
Hình 2-8 Các loại bộ nhớ trong hệ thống nhúng
Trang 30Có hai loại thiết bị nhớ quan trọng trong họ RAM là: SRAM và DRAM Sự khácnhau chủ yếu giữa chúng là thời gian sống của dữ liệu được lưu trữ SRAM (staticRAM) sẽ bị mất dữ liệu nếu nguồn điện cấp cho nó bị mất DRAM (dynamicRAM), thời gian sống của dữ liệu cực kỳ ngắn, thường ít hơn ¼ giây, cho dù nguồnđiện cấp cho nó không bị mất
ROM
Họ ROM được phân loại bằng phương pháp sử dụng để ghi dữ liệu vào bộ nhớ và
số lần có thể ghi lại dữ liệu Sự phân loại này phản ánh sự phát triển của các thiết bịROM từ loại có thể lập trình được một lần tới loại có thể lập trình lại nhiều lần Mộtđặc điểm chung đối với các thiết bị loại này là khả năng lưu trữ dữ liệu và chươngtrình mãi mãi của chúng cho dù nguồn điện có thể mất
Bảng 2-2 Đặc tính của bộ nhớ
Loại
bộ nhớ Có thể ghi? thước xóa Kích Số lượt xóa tương đối Giá tương đối Tốc độ
Masked
PROM 1 lần, bằng bộlập trình Không hỗ trợ Không hỗ trợ Trung bình Nhanh
EPROM có, bằng bộ lập trình Toàn bộ chip Bị giới hạn Trung bình Nhanh
ghi chậm
Trang 312.9 Keyboard
Hầu hết các sản phẩm của hệ thống nhúng như lò vi sóng, máy fax, máy photocopy, máy in laser, PLC, … đều có giao diện keyboard để nhận những tác động,điều khiển từ người sử dụng Keyboad có thể được sử dụng để nhập dữ liệu số nhưlựa chọn chế độ hoạt động của một thiết bị điều khiển Trong phần này, ta sẽ tìmhiểu bộ xử lý có thể quét bàn phím như thế nào
2.9.1 Cơ sở về bàn phím
Bàn phím thường sử dụng một công tác tiếp xúc tạm thời, và kết thúc phím đượcphát hiện bằng một bộ vi xử lý sử dụng một mạch điện đơn giản như trong hình 2-8.Điện trở nhảy bậc có mức logic 1 khi công tắc mở và mức logic 0 khi công tắcđóng Đáng tiếc là các công tắc không thể tạo ra được các mức cứng 1 và 0 khichúng được đóng hoặc mở Mặc dù phần tiếp xúc có thể đóng chuẩn xác và nhanhchóng, bằng với tốc độ của bộ vi xử lý, hành động này vẫn được coi là tương đốichậm Khi công tắc đóng, phần tiếp xúc bật lên giống như một quả bóng Hiệu ứngbật rung này tạo ra vô số xung như trên Hình 2-8 Quá trình bật rung kéo dài khoảng
từ 5 đến 30 ms Nếu cần nhiều phím bấm, mỗi công tắc có thể kết nối đến cổng vàocủa chính nó trên bộ vi xử lý Tuy nhiên khi số công tắc tăng lên, phương thức này
sẽ nhanh chóng dùng hết sạch số cổng vào
Cách hiệu quả nhất để sắp xếp các công tắc trên một bàn phím (khi cần có hơn nămphím) là theo định dạng ma trận hai chiều như trên Hình 2-9 Cách sắp xếp tối ưunhất (trong đó các đường I/O được nối với nhau) là khi số hàng và số cột bằng nhau,
đó là ma trận vuông Công tắc tiếp xúc tạm thời (nút bấm) được đặt tại điểm giaonhau của mỗi hàng và mỗi cột Số các phím cần thiết trong ma trận dĩ nhiên phụthuộc vào mỗi ứng dụng Mỗi hàng được thể hiện bằng một bit của một cổng ra, cònmỗi cột tương ứng với một điện trở và một bít cổng vào
Trang 32Hình 2-9 Công tắc bàn phím
Hình 2-10 Ma trận bàn phím
Bộ vi xử lý quét bàn phím bằng cách xem xét ma trận bàn phím lặp đi lặp lại theomột chu kỳ nhất định để tìm ra phím được bấm Sau khi bộ vi xử lý xác định đã cóphím được bấm, phần mềm quét bàn phím lọc ra các xung bật và tìm xem đó là cácphím nào Mỗi phím được gán một số nhận dạng duy nhất gọi là mã quét Mã quétđược dùng trong chương trình ứng dụng để xác định hành động tiếp theo Nói mộtcách khác, mã quét nói cho chương trình ứng dụng biết phím nào đã được bấm.Hiện tượng bấm hơn một phím trong một lần (chẳng may hay cố ý) được gọi là
quay tròn Bất cứ thuật toán nào có thể nhận dạng chính xác một phím mới được
bấm – thậm chí đã có n-1 phím được bấm trước đó – thì được gọi là có khả năng
Trang 33quay tròn n-phím Bộ mã mô tả ở đây chỉ dự định dùng cho các hệ thống nhúngnhỏ, trong đó đầu vào mong đợi các phím được bấm từng phím một Các hệ thốngnhư vậy thường không yêu cầu một bàn phím đầy đủ chức năng như các bàn phímcủa các hệ thống máy tính.
Hiển thị chuỗi ASCII
Định nghĩa tới tám ký hiệu dạng ma trận 5x7 chấm
Hiển thị biểu độ dạng vạch
2.10.1 Màn hình tinh thể lỏng
Màn hình tinh thể lỏng (LCD) là một công nghệ hiển thị thụ động, không tự phát raánh sáng mà điều khiển ánh sáng bao quanh, do đó tiêu thụ rất ít năng lượng Đặctính này đã làm cho LCD trở thành một công nghệ được ưa thích hiện nay LCDthực chất là một phần phản chiếu, nó cần phần sáng bao quanh để phản xạ lại mắtngười dùng
Điều khiển LCD là công việc đòi hỏi sự tinh tế hơn điều khiển đèn LED Các LCDthường được điều khiển bằng các phần cứng dành riêng Hình 2-10 mô tả ba loạiLCD thông dụng hiện nay
Trang 34Hình 2-11 Các kiểu LCD
Hiển thị tuỳ ý với các điều khiển phân mảnh riêng (tương tự như hiển thịLED) LCD được bố trí như đèn LED (xem trên Hình 2-10) Kiểu hiển thịnày tương tự đèn LED do mỗi phân mảnh được điều khiển riêng lẻ
Hiển thị kiểu chữ số hoặc ký tự Kiểu hiển thị này hiện được đóng gói trongcác module Việc hiển thị ký tự được thực hiện bằng cách kết hợp một đến 4dòng của 16 đến 40 khối ký tự Mỗi khối ký tự chứa một ma trận 5x8 điểmchấm (dot), được dùng để hiển thị bất kỳ ký tự ASCII nào và một số ký hiệukhác
Hiển thị đồ hoạ đầy đủ Như với hiển thị ký tự, hiển thị đồ hoạ đầy đủ cũngđược đóng gói trong các module Các module đồ hoạ cung cấp độ linh hoạtlớn khi định dạng dữ liệu trên màn hình Chúng cho phép hiển thị đoạn chữ,hình ảnh, tranh, và kết hợp các loại trên Do kích cỡ ký tự được định nghĩa từphần mềm nên các module đồ hoạ cho phép hiển thị bất kỳ phông chữ vàngôn ngữ nào Các giới hạn chị phụ thuộc vào độ phân giải Các module đồhoạ được tổ chức theo các hàng và cột điểm ảnh (pixel) Mỗi điểm ảnh đượcđánh một địa chỉ riêng, cho phép mỗi pixel có một trạng thái riêng ON hoặcOFF Hiển thị độ hoạ thường có sẵn dưới nhiều cấu hình biến đổi từ 64x32cho đến 640x480 điểm ảnh (cột x hàng) Nhìn từ quan điểm phần mềm, giao
Trang 35tiếp với hiển thị đồ hoạ phức tạp hơn với hai loại hiển thị còn lại Loại hiểnthị này sẽ không được bàn luận sâu hơn trong luận văn này.
2.10.2 Module LCD ký tự
Việc hiển thị ký tự được thực hiện bằng cách kết hợp một đến 4 dòng, mỗi dòng có
từ 16 đến 40 khối ký tự Mỗi khối ký tự chứa một ma trận 5x8 điểm chấm (dot),được dùng để hiển thị bất kỳ ký tự ASCII nào và một số ký hiệu khác Chương này
mô tả module giao diện phần mềm cho các module hiển thị ký tự Các module ký tự
có rất nhiều ứng dụng trong các hệ thống nhúng như: Điều hoà nhiệt độ, Tăng âmtiếng, Máy FAX, Máy in laser, Thiết bị y tế, Các hệ thống bảo mật, Máy điện thoại,
Khởi tạo hoạt động
Bắt đầu định thời
Giám sát các điều kiện mong muốn Nếu thoả mãn các điều kiện, ngừng địnhthời
Trang 36 Nếu định thời hết hạn, dừng hoạt động và thông tin cho nhà điều hành
2.12 Các cổng vào/ra rời rạc
Các cổng vào và cổng ra rời rạc (I/O) có mặt trong hầu hết các hệ thống giám sátvà/hoặc điều khiển Thuật ngữ “rời rạc” phản ánh sự thật thật rằng các đầu vào chỉchấp nhận một trong hai mức trạng thái Ví dụ:
- 1 hoặc 0
- TRUE hoặc FALSE
- ON hoặc OFF
- ENABLED hoặc DISABLED
- PRESENT hoặc ABSENT
- …
Hình 2-12 Các đầu vào rời rạc
Như chỉ ra trong Hình 2-11, các đầu vào rời rạc thường được dùng để giám sát trạngthái của các chuyển mạch điều khiển bằng tay, các chuyển mạch áp suất (áp suất cóvượt quá hay không), các chuyển mạch nhiệt độ (nhiệt độ có vượt quá hay không),chuyển mạch giới hạn (thiết bị có đạt mức giới hạn của nó hay không), rơ-le tiếpxúc (mở hay đóng), các bộ phát hiện trạng thái ở gần (ở đó hay không ở đó), vv.Các đầu vào rời rạc thường được dùng để xác định trạng thái của một đầu vào Tuynhiên, trong một số ứng dụng, bạn cần phải biết liệu rằng đầu vào rời rạc có phảivừa thay đổi trạng thái hay không, và có thể là nó đã thay đổi bao nhiêu lần
Trang 37Các đầu ra rời rạc thường dùng để điều khiển đèn, rơ-le, quạt, còi báo động, bếpsưởi, van, (Xem Hình 2-12) Một đầu ra rời rạc thường ở trạng thái này hoặc trạngthái kia Một ánh đèn nhấp nháy khác với một đèn luôn ở trạng thái BẬT, nó hiệuquả hơn trong việc lưu ý người dùng về một trạng thái lỗi.
Chương này mô tả một module giám sát các đầu vào rời rạc và điều kiển các đầu rarời rạc Module cho phép tới 250 đầu vào và 250 đầu ra Với mỗi đầu vào rời rạcmodule cung cấp các khả năng:
- Xác định đầu vào là 1 hay 0
- Xác định sự chuyển đổi từ 1 sang 0 hay từ 0 sang 1 ở đầu vào
- Xác định đã có bao nhiêu chuyển đổi từ 1 sang 0 hay từ 0 sang 1 ở đầu vào
- Mô phỏng một công tắc đóng mở với một công tắc tiếp xúc tạm thời
- Bỏ qua phần cứng phục vụ cho các mục đích gỡ lỗi
Với mỗi đầu ra rời rạc, module cung cấp các khả năng:
Trang 382.12.1 Các đầu vào rời rạc
Đọc các đầu vào rời rạc là một công việc khá đơn giản Chỉ cần cung cấp các đầuvào rời rạc cần đọc tại các đường vào song song của bộ vi xử lý Bộ vi xử lý chỉ cầnđọc các cổng vào, đặt mặt nạ giấu đi các cổng không cần thiết, và đưa ra kết quảdựa và trạng thái của đầu vào
Mặt nạ là một giá trị 8-bit nhằm lựa chọn các bít cần đọc Ví dụ, để đọc trạng tháicủa bít 4 (các bít được đánh số từ 0 đến 7 theo thứ tự từ phải sang trái), mặt nạ sẽ là0x10 Với một hàm như trên, mã chương trình sẽ chỉ hơi chậm và kích thước mã sẽtăng lên một chút nhưng lợi ích thu được lại rất lớn Nó cho phép thay đổi phầncứng bao nhiêu lần cũng được mà mã chương trình giữ nguyên không đổi Bằngcách đóng gói phần truy nhập phần cứng, chúng ta cũng có thể xử lý các trường hợptrong đó một số đầu vào bị đảo trạng thái bởi phần cứng và vẫn trả đúng trạng tháiđến cho mã ứng dụng Nói cách khác, nếu một đầu vào được coi là có mức logic 0khi nó ở trạng thái cao (HIGH) thì hàm DIGet() sẽ đảo giá trị của đầu vào đọc được
và trả về 0 tới mã ứng dụng
Sử dụng bộ ghép chọn dữ liệu vào 74251 (xem Hình 2-13) trong phần cứng chophép tăng số lượng đầu vào rời rạc dễ dàng chỉ bằng cách thêm vào các con 74251khác
Hình 2-14 Đọc các đầu vào rời rạc sử dụng 74251
Trang 39Hình 2-15 Kênh đầu vào rời rạc
Module I/O rời rạc trong chương này cho phép người dùng cấu hình bất kỳ đầu vàorời rạc nào Mỗi đầu vào rời rạc được coi là một kênh logic Module cho phép đến
250 kênh Hình 2-14 mô tả biểu đồ luồng của một kênh đầu vào rời rạc Trong hình
vẽ các ký hiệu điện được dùng để mô tả các chức năng, nhưng tất nhiên trên thực tếmọi chức năng này đều được thực hiện trong phần mềm
2.12.2 Các đầu ra rời rạc
Cập nhật các đầu ra rời rạc cũng tương đối dễ dàng, tuy nhiên đòi hỏi một chút khéoléo hơn so với cập nhật đầu vào rời rạc Chỉ cần cung cấp đủ các đầu ra rời rạc tạicác đường vào song song của bộ vi xử lý Cũng như với trường hợp đầu vào rời rạc,giải pháp ở đây cũng dùng một lớp phần mềm giữa phần mã ứng dụng và phầncứng Nó giúp cho ứng dụng không phụ thuộc vào phần cứng và cách truy cập phầncứng, dễ dàng chuyển đổi sang dùng phần cứng khác bằng cách thay đổi các hàmgiao diện Có thể có hai trường hợp xảy ra: hoặc là có thể đọc lại nội dung của cáccổng ra (với Intel 8255A hoặc Motorola 6821) hoặc là cổng chỉ ghi (với 7427333,74373,vv) Hình 2-15 mô tả một ví dụ phần cứng cập nhật các đầu ra rời rạc sửdụng 74259
Trang 40Hình 2-17 Kênh đầu ra rời rạc
2.13 Các đầu vào ra tương tự
Các thông số tự nhiên như nhiệt độ, áp suất, độ dịch chuyển, độ cao, độ ẩm, luồng
chảy, đều có tính tương tự (analog) Nói cách khác, các thông số này có giá trị thay
đổi liên tục thay cho các bước nhảy rời rạc Để máy tính có thể xử lý được, các