You are on page 1of 23

TRƯỜNG ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ


------      -----

BÁO CÁO
ĐỀ TÀI:

HỆ THỐNG NHÚNG

Giảng viên hướng dẫn: TS. Đinh Thị Thái Mai


Nhóm thực hiện : Nhóm 2
Lớp : QH – 2021 – I/CQ – ĐACLC1
Khóa : K66

1
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG
1.1. Giới thiệu về hệ thống nhúng
1.2. Lịch sử hình thành và phát triển của hệ thống nhúng
1.3. Ứng dụng của hệ thống nhúng
1.3.1. Ứng dụng trong viễn thông
1.3.2. Ứng dụng trong tự động hóa và điện tử
1.3.3. Ứng dụng trong công nghiệp
1.3.4. Ứng dụng trong y tế
1.3.5. Ứng dụng trong công nghiệp quốc phòng
1.4. Đặc điểm của hệ thống nhúng
1.4.1. Đặc điểm chung của hệ thống nhúng
1.4.2. Đặc điểm chi tiết của hệ thống nhúng
1.4.2.1. Giao diện
1.4.2.2. Bộ vi xử lý trong hệ thống nhúng (CPU)
1.4.2.3. Các thiết bị ngoại vi
1.4.2.4. Công cụ phát triển
1.4.2.5. Độ tin cậy
CHƯƠNG 2: CÁC KIẾN TRÚC PHẦN MỀM CỦA HỆ THỐNG NHÚNG
1.1. Vòng lặp kiểm soát đơn giản
1.2. Hệ thống ngắt điều khiển
1.3. Đa nhiệm tương tác
1.4. Đa nhiệm ưu tiên - đa luồng
1.5. Vi nhân và nhân ngoại - Microkernels and Exokernels
1.6. Nhân khối - Monolithic kernels
CHƯƠNG 3: KIỂM THỬ HỆ THỐNG NHÚNG – DEBUGGING
1.1. Tổng quan về gỡ lỗi trong hệ thống nhúng
1.2. Yêu cầu trong việc gỡ lỗi
1.3. Mẫu hệ thống gỡ lỗi
1.3.1. Những công cụ gỡ lỗi
1.3.1.1. Trình giả lập – Simulators
1.3.1.2. Trình gỡ lỗi từ xa – Remote Debuggers

2
TÀI LIỆU THAM KHẢO

[1] Michael Barr. "Embedded Systems Glossary". Neutrino Technical


Library. Retrieved 2007-04-21.

[2] Heath, Steve (2003). Embedded systems design. EDN series for design
engineers (2 ed.). Newnes. p. 2. ISBN 978-0-7506-5546-0. An embedded
system is a microprocessor based system that is built to control a function or a
range of functions.

[3] Michael Barr; Anthony J. Massa (2006). "Introduction". Programming


embedded systems: with C and GNU development tools. O'Reilly. pp. 1–
2. ISBN 978-0-596-00983-0.

[4] Shirriff, Ken (30 August 2016). "The Surprising Story of the First
Microprocessors". IEEE Spectrum. Institute of Electrical and Electronics
Engineers. 53 (9): 48–
54. doi:10.1109/MSPEC.2016.7551353. S2CID 32003640. Retrieved 13
October 2019.
https://en.wikipedia.org/wiki/Embedded_system
https://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh
%C3%BAng
https://vi.wikipedia.org/wiki/
Hệ_thống_nhúng#Các_kiến_trúc_phần_mềm_hệ_thống_nhúng
https://www.ssla.co.uk/embedded-software-architecture/
https://en.wikipedia.org/wiki/
Embedded_system#Embedded_software_architectures
https://slideplayer.com/slide/235681/
https://vi.wikipedia.org/wiki/Monolithic
https://en.wikipedia.org/wiki/Subroutine

3
Chương 1: Tổng quan về hệ thống nhúng

1.1. Giới thiệu về hệ thống nhúng


Hệ thống nhúng là một hệ thống máy tính kết hợp từ bộ xử lý máy tính, bộ
nhớ máy tính và các thiết bị ngoại vi đầu vào, đầu ra; có chức năng chuyên dụng
trong một hệ thống cơ hoặc điện tử. Hệ thống này được nhúng như một phần của
một thiết bị hoàn chỉnh. [1][2]
Hệ thống nhúng bao gồm: phần cứng điện hoặc điện tử và các bộ phận cơ
khí. Hệ thống nhúng kiểm soát các hoạt động vật lý của máy được nhúng bên
trong . Hệ thống nhúng điều khiển nhiều thiết bị đang được sử dụng phổ biến hiện
nay. [3]
Các hệ thống nhúng hiện đại sử dụng vi điều khiển (vi xử lý có bộ nhớ tích
hợp và giao diện ngoại vi). Tiêu chuẩn chung của các bộ xử lý chuyên dụng là bộ
xử lý tín hiệu kỹ thuật số (DSP).
Các hệ thống nhúng có kích thước đa dạng từ các thiết bị cá nhân di động
như: đồng hồ kỹ thuật số, máy nghe nhạc MP3 đến các máy lớn hơn như: thiết bị
gia dụng, dây chuyền lắp ráp công nghiệp, robot, phương tiện giao thông, bộ điều
khiển đèn giao thông và hệ thống hình ảnh y tế. Các công trình lắp đặt lớn như nhà
máy , đường ống và lưới điện được vận hành thông qua nhiều hệ thống nhúng được
nối mạng với nhau.
Các hệ thống nhúng có phạm vi từ độ phức tạp thấp, với một chip vi điều
khiển đến rất cao với nhiều đơn vị, thiết bị ngoại vi và mạng, có thể nằm trong các
giá đỡ thiết bị hoặc trên các khu vực địa lý rộng lớn được kết nối thông qua các
đường liên lạc đường dài.

1.2. Lịch sử hình thành và phát triển của hệ thống nhúng

Nguồn gốc của bộ vi xử lý và vi điều khiển bắt nguồn từ mạch tích hợp
MOS, là một chip mạch tích hợp được chế tạo từ MOSFETs (bóng bán dẫn hiệu
ứng trường kim loại-oxit-bán dẫn) và được phát triển vào đầu những năm
1960. Đến năm 1964, chip MOS đã đạt đến mật độ bóng bán dẫn cao hơn và chi
phí sản xuất thấp hơn so với chip lưỡng cực. Các chip MOS tăng thêm độ phức tạp

4
với tốc độ được dự đoán bởi định luật Moore, dẫn đến tích hợp quy mô lớn (LSI)
với hàng trăm bóng bán dẫn trên một chip MOS duy nhất vào cuối những năm
1960. Ứng dụng của chip MOS LSI vào máy tính là cơ sở cho các bộ vi xử lý đầu
tiên, khi các kỹ sư bắt đầu nhận ra rằng một hệ thống vi xử lý máy tính hoàn chỉnh
có thể được chứa trên một số chip MOS LSI. [4]

Một trong những hệ thống nhúng hiện đại đầu tiên được công nhận là máy
tính hướng dẫn Apollo, được phát triển vào năm 1965 bởi Charles Stark
Draper tại phòng thí nghiệm dụng cụ MIT. Vào năm 1961, Hệ thống nhúng được
sản xuất hàng loạt là máy tính dẫn đường Autonetics D-17 cho tên lửa Minuteman.
Khi Minuteman II đi vào sản xuất năm 1966, D-17 đã được thay thế bằng một máy
tính mới đại diện cho độ cao đầu tiên khối lượng sử dụng của các mạch tích hợp.

Kể từ những ứng dụng ban đầu này vào những năm 1960, các hệ thống
nhúng đã giảm giá và có sự gia tăng đáng kể về sức mạnh và chức năng xử lý.  Bộ
vi xử lý đầu tiên, Intel 4004 (1971), được thiết kế cho máy tính và các hệ thống
nhỏ khác nhưng vẫn yêu cầu bộ nhớ ngoài và chip hỗ trợ. Vào đầu những năm
1980, các thành phần bộ nhớ, đầu vào và đầu ra của hệ thống đã được tích hợp vào
cùng một con chip với bộ xử lý tạo thành một bộ vi điều khiển. Bộ vi điều khiển
tìm các ứng dụng mà một máy tính đa năng sẽ quá tốn kém. Khi chi phí của bộ vi
xử lý và vi điều khiển giảm, sự phổ biến của các hệ thống nhúng tăng lên.

Ngày nay, một bộ vi điều khiển tương đối rẻ có thể được lập trình để thực
hiện vai trò tương tự như một số lượng lớn các thành phần riêng biệt. Với bộ vi
điều khiển, việc thay thế, ngay cả trong các sản phẩm tiêu dùng, các linh kiện
tương tự dạng núm vặn đắt tiền như chiết áp và tụ điện có nút lên / xuống hoặc nút
bấm được bộ vi xử lý đọc ra đã trở nên khả thi. Mặc dù trong bối cảnh này, một hệ
thống nhúng thường phức tạp hơn một giải pháp truyền thống, phần lớn sự phức
tạp được chứa trong chính bộ vi điều khiển. Có thể cần rất ít thành phần bổ sung và
phần lớn công sức thiết kế là ở phần mềm. Quá trình thử nghiệm và nguyên mẫu
phần mềm có thể nhanh hơn so với việc thiết kế và xây dựng một mạch mới không
sử dụng bộ xử lý nhúng.

1.3. Ứng dụng của hệ thống nhúng

5
Hệ thống nhúng thường được tìm thấy trong các ứng dụng tiêu dùng, công
nghiệp, ô tô , thiết bị gia dụng , y tế, viễn thông, thương mại, hàng không và quân
sự.

1.3.1. Ứng dụng trong viễn thông


Hệ thống viễn thông sử dụng nhiều hệ thống nhúng từ chuyển mạch điện
thoại cho mạng đến điện thoại di động ở người dùng cuối . Mạng máy tính sử
dụng bộ định tuyến chuyên dụng và cầu nối mạng để định tuyến dữ liệu.

1.3.2. Ứng dụng trong tự động hóa và điện tử


Điện tử tiêu dùng bao gồm máy nghe nhạc MP3 , máy thu hình , điện thoại
di động , máy chơi trò chơi điện tử , máy ảnh kỹ thuật số , máy thu GPS và máy
in . Các thiết bị gia dụng, chẳng hạn như lò vi sóng , máy giặt và máy rửa bát ,
bao gồm các hệ thống nhúng để cung cấp tính linh hoạt, hiệu quả và tính
năng. Hệ thống HVAC tiên tiến sử dụng bộ điều nhiệt được nối mạng để kiểm
soát chính xác và hiệu quả hơn nhiệt độ có thể thay đổi theo thời gian trong
ngày và theo mùa . Tự động hóa nhà sử dụng mạng có dây và không dây có thể
được sử dụng để điều khiển đèn, khí hậu, an ninh, âm thanh / hình ảnh, giám
sát, v.v., tất cả đều sử dụng thiết bị nhúng để cảm biến và điều khiển.

6
Các thiết bị không dây thu nhỏ được gọi là motes là các cảm biến không dây
được nối mạng. Mạng cảm biến không dây tận dụng khả năng thu nhỏ nhờ thiết
kế vi mạch tiên tiến để ghép nối các hệ thống con không dây đầy đủ với các
cảm biến tinh vi, cho phép mọi người và các công ty đo lường vô số sự vật
trong thế giới vật lý và hành động dựa trên thông tin này thông qua các hệ
thống giám sát và điều khiển. Những động cơ này hoàn toàn khép kín và thường
sẽ cạn nguồn pin trong nhiều năm trước khi pin cần được thay đổi hoặc sạc.

1.3.3. Ứng dụng trong công nghiệp


Các hệ thống vận chuyển từ máy bay đến ô tô ngày càng sử dụng các hệ
thống nhúng. Máy bay mới có các thiết bị điện tử hàng không tiên tiến như hệ
thống dẫn đường quán tính và máy thu GPS cũng có các yêu cầu an toàn đáng
kể. Tàu vũ trụ dựa vào hệ thống điện tử hàng không để hiệu chỉnh quỹ đạo. Các
động cơ điện khác nhau - động cơ DC không chổi than , động cơ cảm ứng và
động cơ DC - sử dụng bộ điều khiển động cơ điện tử. Ô tô , xe điện và xe
hybrid ngày càng sử dụng các hệ thống nhúng để tối đa hóa hiệu quả và giảm
thiểu ô nhiễm. Các hệ thống an toàn ô tô khác sử dụng hệ thống nhúng bao gồm
hệ thống chống bó cứng phanh (ABS), Kiểm soát ổn định điện tử (ESC /
ESP), kiểm soát lực kéo (TCS) và dẫn động bốn bánh tự động.

7
1.3.4. Ứng dụng trong y tế
Thiết bị y tế sử dụng các hệ thống nhúng để theo dõi các hình ảnh y sinh
khác nhau như: PET, chụp cắt lớp vi tính phát xạ đơn photon (SPECT), CT và
MRI để kiểm tra nội bộ. Hệ thống nhúng trong thiết bị y tế thường được cung
cấp bởi máy tính công nghiệp.

8
1.3.5. Ứng dụng trong công nghiệp quốc phòng
Hệ thống nhúng được sử dụng cho các hệ thống quan trọng về an toàn trong
hàng không vũ trụ và các ngành công nghiệp quốc phòng. Trừ khi được kết nối
với mạng có dây hoặc không dây thông qua mạng di động 3G trên chip hoặc
các phương pháp khác cho mục đích giám sát và điều khiển IoT, các hệ thống
này có thể được cách ly khỏi bị hack và do đó an toàn hơn. Để an toàn cháy nổ,
các hệ thống có thể được thiết kế để có khả năng xử lý nhiệt độ cao hơn và tiếp
tục hoạt động. Trong việc giải quyết vấn đề bảo mật, các hệ thống nhúng có thể
tự cung cấp và có thể đối phó với các hệ thống điện và thông tin liên lạc bị cắt.

9
1.4. Đặc điểm của hệ thống nhúng

1.4.1. Đặc điểm chung của hệ thống nhúng

Hệ thống nhúng được thiết kế để đảm nhận một số nhiệm vụ chuyên dụng
chứ không đóng vai trò là các máy tính đa chức năng. Một số hệ thống đòi hỏi ràng
buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng; một
số khác không có điều kiện ràng buộc chặt chẽ, cho phép hệ thống phần cứng được
đơn giản hóa và giảm thiểu giá thành.
Hệ thống nhúng không chỉ là những thiết bị độc lập mà chúng còn là một hệ
thống phức tạp nằm trong thiết bị mà chúng điều khiển để phục vụ một mục đích
chung.
Phần mềm được viết cho hệ thống nhúng được lưu trữ trong ROM hoặc bộ
nhớ flash. Chúng được chạy với tài nguyên bộ cứng hạn chế: dung lượng bộ nhớ
thấp, nhỏ, không bàn phím hay màn hình.

1.4.2. Đặc điểm chi tiết của hệ thống nhúng

1.4.2.1. Giao diện

10
Một số hệ thống nhúng có thể không có giao diện (các hệ thống đơn
nhiệm) hoặc có đầy đủ hệ thống giao diện như hệ điều hành trong máy tính
hiện đại. Các hệ thống nhúng đơn giản sử dụng nút bấm, đèn LED, hiển thị
cỡ chử nhỏ hoặc hiển thị chỉ số thường đi với menu cơ bản. Một số thiết bị

phức tạp hơn sử dụng màn hình đồ họa, cảm ứng hoặc có nút bấm ở lề màn
hình tạo ra sự tiện dụng, đồng thời tối ưu hóa không gian trên thiết bị, ý nghĩa
của các nút bấm có thể thay đổi theo màn hình và các lựa chọn dựa trên nhu
cầu của người dùng.
Một số hệ thống có thể điều khiển từ xa nhờ việc trao đổi thông tin dữ
liệu ( ví dụ: RS-232) hoặc qua kết nối internet. Sự phát triển mạnh mẽ của
mạng toàn cầu đã mang đến cho những nhà thiết kế hệ nhúng một tiềm năng
mới để phát triển hệ thống nhúng thông qua việc sử dụng giao diện web.

1.4.2.2. Bộ vi xử lý trong hệ thống nhúng (CPU)


Có thể được chia thành 2 loại: vi xử lý và vi điều khiển. Các vi điều
khiển thường có các thiết bị ngoại vi được tích hợp trên chip nhằm giảm kích
thước của hệ thống.
Có rất nhiều loại kiến trúc CPU được sử dụng trong thiết kế hệ nhúng
như ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR,
Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … Điều này trái ngược với
các loại máy tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính
nhất định.

11
Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động
trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền
tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ
điều hành nhúng thời gian thực như QNX hay VxWorks.
Các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình
chung là hệ thống on chip (System on a chip – SoC), một bảng mạch tích hợp
cho một ứng dụng cụ thể (an application-specific integrated circuit – ASIC).
Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip.
Một chiến lược tương tự là sử dụng FPGA (field-programmable gate array)
và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả
CPU.

1.4.2.3. Các thiết bị ngoại vi

Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi
như:
 Serial Communication Interfaces (SCI): RS-232, RS-422, RS-
485...
 Synchronous Serial Communication Interface: I2C, JTAG, SPI,
SSC và ESSI
 Universal Serial Bus (USB)
 Bộ điều khiển giao diện mạng: Ethernet, WiFi, …
 Bộ định thời: PLL(s), Capture/Compare và Time Processing Units

12
 Discrete IO: General Purpose Input/Output (GPIO)

13
1.4.2.4. Công cụ phát triển

Tương tự với các sản phẩm phần mềm khác, các nhà thiết kế hệ thống
nhúng sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ
(assembler) hoặc các công cụ gỡ lỗi (debuggers) nhằm phát triển phần mềm
hệ thống nhúng. Tuy nhiên, họ cũng sử dụng một số công cụ chuyên dụng:
 Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)
 Hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình nhờ
vào việc thêm các giá trị checksum hoặc CRC vào chương trình.
 Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có
thể sử dụng phần mềm workbench như MathCad hoặc
Mathematica để mô phỏng các thuật toán.
 Các trình biên dịch và linker (trình liên kết) chuyên dụng có thể
được sử dụng để tối ưu hóa một thiết bị phần cứng.
 Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết
kế riêng của nó hoặc sử dụng và cải tiến từ một ngôn ngữ đã có
sẵn.
 Cách làm khác là thêm vào hệ điều hành thời gian thực hoặc hệ
điều hành hệ thống nhúng.
Các công cụ phần mềm có thể được tạo ra bởi các công ty phần mềm
chuyên dụng về hệ thống nhúng hoặc chuyển đổi từ các công cụ phát triển
phần mềm GNU. Đôi khi, các công cụ phát triển dành cho máy tính cá
nhân cũng được sử dụng

14
nếu bộ xử lý của hệ thống nhúng đó gần giống với bộ xử lý của một máy PC
thông dụng.

1.4.2.5. Độ tin cậy

Các hệ thống nhúng thường được kỳ vọng sẽ chạy hàng năm trời mà
không bị lỗi hoặc có thể tự khôi phục hệ thống khi có lỗi, chính vì vậy các
phần mềm hệ thống nhúng được phát triển và kiểm thử một cách vô cùng cẩn
thận. Ngoài ra, các thiết bị rời không đáng tin cậy như ổ đĩa, công tắc hoặc
nút bấm thường bị hạn chế sử dụng. Việc khôi phục hệ thống khi gặp lỗi có
thể được thực hiện bằng cách sử dụng các kỹ thuật như watchdog timer – nếu
phần mềm không đều đặn nhận được các tín hiệu watchdog định kì thì hệ
thống sẽ bị khởi động lại.
Một số vấn đề cụ thể về độ tin cậy như:
 Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ
như ở các hệ thống không gian, hệ thống dây cáp dưới đáy biển,
các đèn hiệu dẫn đường,… Giải pháp: chuyển sang sử dụng các hệ
thống con dự trữ hoặc các phần mềm cung cấp một phần chức
năng.
 Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như các
thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các
nhà máy hóa chất,… Giải pháp: lựa chọn backup hệ thống.
 Nếu hệ thống ngừng hoạt động sẽ gây thất thoát nhiều tiền của ví
dụ như các dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ
thống kiểm soát trong các nhà máy,...

Chương 2: Các kiến trúc phần mềm của


hệ thống nhúng

15
Hiện nay, có rất nhiều kiểu kiến trúc phần mềm hệ thống nhúng khác nhau
đang được sử dụng một cách phổ biến, dưới đây là các kiểu kiến trúc điển hình:

1.1. Vòng lặp kiểm soát đơn giản

Ở kiểu thiết kế này, các phần mềm sử dụng những vòng lặp, trong đó
các vòng lặp này gọi đến các chương trình con – thứ chịu trách nhiệm quản lý một
phần của phần cứng hoặc phần mềm.

1.2. Hệ thống ngắt điều khiển


Các hệ thống nhúng này thường được điều khiển bằng các ngắt. Đây là một
phương pháp để giải quyết các tình huống mà trong đó hệ thống bị gián đoạn bởi
nhiều hành động xảy ra cùng một lúc. Ở đây các bộ vi xử lý giải quyết theo cách
hoàn thành các tác vụ có mức độ ưu tiên cao rồi mới xử lý đến các tác vụ khác
(Các tác vụ phức tạp hơn). Khi đó, hệ thống gần giống với kiểu nhân đa nhiệm
nhưng các tiến trình rời rạc.
Loại kiến trúc này thường được sử dụng trong các hệ thống có bộ quản lý sự
kiện đơn giản.

16
(Sơ đồ ví dụ về thường trình dịch vụ ngắt (ISR))

1.3. Đa nhiệm tương tác

Đa nhiệm tương tác hay còn có tên gọi khác là đa nhiệm không ưu tiên (non-
preemptive multitasking). Hiểu một cách cơ bản, nó là một kiểu đa nhiệm của máy
tính mà trong đó hệ điều hành không bao giờ khởi tạo chuyển đổi nội dung của một
tiến trình đang chạy sang một tiến trình khác. Nói cách khác, các nhà lập trình sẽ
định nghĩa một loạt các nhiệm vụ, mỗi nhiệm vụ sẽ chạy trong một môi trường
riêng của nó. Khi không cần thực hiện nữa, nó gọi đến các tiến trình con tạm nghỉ
(bằng cách gọi “pause”, “wait”, etc.)

Đa nhiệm tương tác khá giống với kỹ thuật vòng lặp kiểm soát đơn giản, do
đó ưu và nhược điểm của 2 loại kiến trúc này về cơ bản là như nhau. Tuy nhiên,
việc thêm một phần mềm mới thì có thể được thực hiện một cách dễ dàng bằng
cách lập trình một tác vụ mới hoặc thêm vào hàng đợi thông dịch (queue-

17
interpreter), thứ sẽ trở nên rất phức tạp khi đưa vào một vòng lặp kiểm soát đơn
giản có trước.

1.4. Đa nhiệm ưu tiên – đa luồng

Ở loại kiến trúc này, hệ thống sử dụng một đoạn mã đơn giản có nhiệm vụ
chuyển đổi giữa các tác vụ hoặc luồng khác nhau thông qua một bộ định thời. Như
vậy, hệ thống được coi như là có một nhân “hệ điều hành” mà hệ điều hành ở đây
chính là đoạn mã đơn giản kia.

Bất kì tác vụ nào có thể gây hại đến một tác vụ riêng biệt khác đều cần phải
được tách biệt một cách chính xác. Do đó, giải pháp thường được đưa ra là sử dụng
một hệ điều hành thời gian thực. Từ đó, tính linh hoạt về mức độ phức tạp từ việc
quản lý nhiều tác vụ chạy song song được tăng đáng kể, và các nhà lập trình có thẻ
tập trung vào việc phát triển các chức năng của thiết bị chứ không cần quan tâm
đến các dịch vụ của hệ điều hành nữa.

18
Sơ đồ so sánh giữa đa nhiệm tương tác và đa nhiệm ưu tiên, các tác vụ của
đa nhiệm tương tác được thực hiện dưới dạng vòng lặp vô hạn, ở đa nhiệm ưu tiên
các tác vụ được thực hiện tuần tự bởi một hệ điều hành riêng, nếu tác vụ tốn quá
nhiều thời gian thì sẽ được cân nhắc gián đoạn, tuy nhiên ở đa nhiệm tương tác thì
bắt buộc phải chia chúng ra.

1.5. Vi nhân và nhân ngoại – Microkernels and Exokernels

Trong khoa học máy tính nói chung, một vi nhân thường được biết đến như
là lượng phần mềm gần như tối thiểu có thể cung cấp các cơ chế cần thiết để tạo ra
một hệ điều hành. Trong hệ thống nhúng cũng vậy, khái niệm vi nhân đóng vai trò
như một bước tiến gần hơn khái niệm hệ điều hành thời gian thực. Nhân hệ điều
hành thực hiện việc cấp phát bộ nhớ và chuyển CPU cho các luồng.
Vi nhân là kiểu kiến trúc mà “dùng nhanh thì rất uy tín còn dùng chậm thì
tạch” khi nó rất hữu dụng trong việc chuyển đổi giao tiếp giữa các tác vụ nhanh
còn chậm thì lại là một câu chuyện khác.
Về nhân ngoại, chúng giải quyết vấn đề liên quan đến hiệu quả hoạt động bằng
cách giao tiếp một cách hiệu quả bằng việc gọi chương trình con thông thường.
Phần cứng và toàn bộ phần mềm trong hệ thống sẽ luôn đáp ứng và có thể được
mở rộng bởi các ứng dụng.

1.6. Nhân khối – Monolithic kernels

Về định nghĩa, một nhân khối là một kiến trúc hệ điều hành có nhiệm vụ thực
hiện toàn bộ mã hệ điều hành trong cùng một địa chỉ bộ nhớ để tăng hiệu năng hệ
thống. Trong kiến trúc này, nó là một nhân đầy đủ có khả năng phức tạp được
chuyển đổi để phù hợp với môi trường nhúng. Từ đó, nó sẽ giúp các nhà lập trình
có được một môi trường như là một hệ điều hành (Linux hoặc Microsoft Windows)
thu nhỏ và theo đó rất thuận lợi cho việc phát triển. Tuy nhiên, điểm yếu của kiến
trúc này là nhân lại đòi hỏi một lượng lớn tài nguyên hệ thống để tăng chi phí hệ
thống.

19
Chi phí tăng lên là thế nhưng loại hệ thống nhúng này đang rất được ưa
chuộng, đặc biệt là trong các thiết bị nhúng mạnh như Wireless router hoặc hệ
thống định vị GPS.

Chương 3: Kiểm thử hệ thống nhúng –


debugging

1.1. Tổng quan về gỡ lỗi trong hệ thống nhúng

Trình gỡ lỗi được cho là một chương trình máy tính nhằm phát hiện và xóa
các lỗi có trong các chương trình khác. Nó được sử dụng để xác định liệu rằng
chương trình có đang chạy chính xác, cùng với đó xác định nguyên nhân của lỗi
khi chưa hoàn thành chính xác chức năng của nó.
Gỡ lỗi hệ thống nhúng là một kỹ thuật quan trọng để tìm và loại bỏ những
lỗi có trong chương trình.

1.2. Yêu cầu trong việc gỡ lỗi

Ba tiêu chí để gỡ lỗi hệ thống nhúng hoặc thời gian thực:

 Run Control: Khả năng khởi động, dừng và truy cập và bộ xử lí và bộ


nhớ.

 Memory substitution: Việc thay thế bộ nhớ ROM cùng với RAM làm
tăng tốc độ tải xuống mã, gỡ và sửa chữa lỗi.
 Real-time analysis: Phân tích thời gian thực theo dòng mã trong thời
gian thực với phân tích theo dõi thời gian thực

1.3. Mẫu hệ thống gỡ lỗi

Luồng dữ liệu được đưa từ công cụ gỡ lỗi đại diện cho bản ký hiệu thông tin
cho phép ánh xạ thông tin đến các cấu trúc mức nguồn. Bất kỳ hệ thống gỡ lỗi nào
cũng thực thi hai quy trình sau:

20
 Chương trình thử nghiệm (Test program)
 Trình gỡ lỗi (Debugger)

Hình 1 – Mẫu hệ thống gỡ lỗi


Một phần của trình gỡ lỗi được chạy trên máy chủ (Host computer) và phần
còn lại chạy trên máy đích (target machine). Để tránh không bị xâm nhập, chúng ta
chỉ cần thực thi mã lệnh tại điểm ngắt - breakpoint (sự cố ý dùng hoặc tạm dừng
trong chương trình) và chạy trình gỡ lỗi như một chương trình riêng biệt và cấp
một lệnh thực thi riêng để chạy trình gỡ lỗi.

Hình 2 – Những công cụ gỡ lỗi

Gỡ lỗi là một hoạt động cần thiết trong quá trình phát triển của hệ thống
nhúng.

21
1.3.1. Trình giả lập – Simulators

Hình 3 – Debugging with simulators

Trình giả lập là một công cụ sử dụng để mô phỏng hệ thống nhúng. Mã


được kiểm tra cho bộ vi điều khiển bằng cách mô phỏng mã lệnh trên máy
tính chủ. Trình giả lập được sử dụng để mô hình hóa hoạt động của bộ vi điều
khiển hoàn chỉnh trong phần mềm. Tuy nhiên, nhược điểm của phương pháp
này là nó chỉ mô phỏng bộ xử lý chứ không phải thiết bị ngoại vi.

1.3.2. Trình gỡ lỗi từ xa – Remote Debuggers

Hình 4 – Debugging with Remote Debuggers

22
Trình gỡ lỗi từ xa được sử dụng để giám sát hay điều khiển phần mềm
nhúng nhằm thực thi và gỡ lỗi phần mềm nhúng qua một liên kết truyền thông.
Chương trình chạy trên máy chủ của trình gỡ lỗi từ xa có giao diện người dùng
giống như bất kỳ trình gỡ lỗi nào khác mà bạn có thể đã sử dụng. Màn hình gỡ lỗi
chính thường là giao diện dòng lệnh hoặc giao diện người dùng đồ họa (GUI).
Trình gỡ lỗi GUI thường chứa một số cửa sổ nhỏ hơn để hiển thị đồng thời phần
đang hoạt động của mã nguồn, nội dung đăng ký hiện tại và thông tin liên quan
khác về việc thực thi chương trình. Lưu ý rằng trong hệ thống nhúng, trình gỡ lỗi
và phần mềm được gỡ lỗi đang thực thi trên hai hệ thống máy tính khác nhau. Nó
hỗ trợ mức độ tương tác cao hơn giữa máy chủ và máy đích:
 Các điểm ngắt phần mềm (Breakpoints).
 Đọc / ghi thanh ghi hoặc dữ liệu tại địa chỉ xác định.
Trình gỡ lỗi từ xa là một trong những công cụ tải xuống và kiểm tra được sử
dụng phổ biến nhất trong quá trình phát triển phần mềm nhúng. Điều này chủ yếu
là do giá của một trình gỡ lỗi từ xa không cộng thêm đáng kể vào chi phí của một
bộ công cụ phát triển chéo (trình biên dịch, trình liên kết, trình định vị, ...). Tuy
nhiên, có một số nhược điểm khi sử dụng trình gỡ lỗi từ xa, bao gồm cả việc không
thể gỡ lỗi mã khởi động. Một bất lợi khác là mã phải thực thi từ RAM, vì vậy, hệ
thống này yêu cầu một bộ xử lý đích để chạy gói phần mềm cuối cùng.

23

You might also like