BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH: CÔNG NGHỆ THÔNG TIN
NGHIÊN CỨU, TRIỂN KHAI MÔI TRƯỜNG
PHÁT TRIỂN HỆ THỐNG NHÚNG TRONG BÀI TOÁN
ĐIỀU KHIỂN NHÀ KÍNH
TRỊNH THỊ PHÚ
Người hướng dẫn khoa học: TS. CAO TUẤN DŨNG
HÀ NỘI 2010
1
LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Nghiên cứu, triển khai môi trường phát triển hệ
thống nhúng” là do tôi thực hiện dưới sự hướng dẫn của TS. Cao Tuấn Dũng –
Khoa Công nghệ thông tin, trường Đại học Bách khoa Hà Nội. Mọi trích dẫn và
tài liệu tham khảo được sử dụng trong luận văn đều được tôi chỉ rõ nguồn gốc.
Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan trên.
Hà Nội, ngày 2 tháng 4 năm 2010
Tác giả luận văn
Trịnh Thị Phú
Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của luận văn tốt nghiệp
1.3. Thiết kế và phát triển ứng dụng cho hệ thống nhúng .........................................24
1.3.1. Thiết kế hệ thống nhúng.................................................................................24
1.3.2. Phần mềm nhúng .........................................................................................27
1.3.3. Các công cụ phát triển phần mềm nhúng .............................................................33
1.3.4. Các kỹ thuật gỡ rối .......................................................................................33
1.4. Xu hướng phát triển của các hệ nhúng .............................................................34
1.5. Những thách thức và các vấn đề tồn tại của các hệ nhúng ..................................34
1.5. Kết chương....................................................................................................35
CHƯƠNG 2: VI ĐIỀU KHIỂN AVR ......................................................................37
2.1. Vi điều khiển .................................................................................................37
2.2. Kiến trúc của vi điều khiển AVR .....................................................................38
2.2.1. Tổ chức của AVR ........................................................................................40
2.2.2. Hoạt động của AVR .....................................................................................44
2.2.3. Thanh ghi trạng thái – SREG (STATUS REGISTER) .............................................46
2.3. Bộ truyền nhận dữ liệu nối tiếp USART ...........................................................47
2.3.1. Truyền thông nối tiếp ....................................................................................48
2.3.2. Truyền thông nối tiếp không đồng bộ với AVR (UART) .........................................51
3
2.4. Chuyển đổi ADC trên AVR.............................................................................59
2.4.1. Chuyển đổi dữ liệu tương tự (analog) sang dữ liệu số (digital)...................................59
2.4.2. Chuyển đổi ADC trên AVR ............................................................................60
2.5. Quy trình thiết kế một mạch ứng dụng dùng vi điều khiển .................................66
2.6. Các công cụ dùng với AVR .............................................................................68
4
DANH MỤC CÁC TỪ VIẾT TẮT
STT
Từ viết tắt
1
ADC
Analog to Digital
Converter
Bộ chuyển đổi tương tự - số
2
BCD
Binary Coded Decimal
Thập phân được mã hóa nhị
phân
3
CPU
Only Memory
Bộ nhớ ROM có thể lập trình
7
I/O
Input/Output
Vào/ra hoặc nhập/xuất
8
ISR
Interrupt SubRoutine
Đoạn chương trình xử lý ngắt
9
RAM
Random Access
Memory
Bộ nhớ dùng để đọc
10
SW
Software
Phần mềm
14
5
DANH MỤC BẢNG BIỂU
Bảng 2.1: Chọn kiểm tra parity. ............................................................................... 55
Bảng 2.2: Độ dài dữ liệu truyền. .............................................................................. 56
Bảng 2.3: Tính tốc độ baud. ..................................................................................... 57
Bảng 2.4: Một số tốc độ baud mẫu........................................................................... 58
Bảng 2.5: Chọn điện áp tham chiếu ......................................................................... 62
Bảng 2.4: Hệ số chia xung nhịp cho ADC. .............................................................. 65
Bảng 2.5: Nguồn kích ADC trong chế độ Auto Trigger. ......................................... 66
6
DANH MỤC HÌNH VẼ
Hình 1.1: Cấu trúc của các hệ thống thời gian thực.............................................18
Hình 2.1: Cấu trúc bộ nhớ của AVR....................................................................40
Hình 2.2: Thanh ghi 8 bits. ..................................................................................41
Hình 2.3: Register file. .........................................................................................43
Hình 2.4. Cấu trúc bên trong AVR ......................................................................45
Hình 2.5. Thanh ghi trạng thái .............................................................................46
8
MỞ ĐẦU
Xã hội càng phát triển, công nghệ thông tin càng giữ vị trí quan trọng
trong đời sống và kỹ thuật. Cùng với xu hướng phát triển của công nghệ thông
tin, việc xây dựng các hệ thống điều khiển trở thành một vấn đề tất yếu, một nhu
cầu cấp thiết, đặc biệt đối với những ứng dụng là các hệ thống phục vụ đời sống.
Nước ta là một nước nông nghiệp nên vai trò của nông nghiệp có ý nghĩa
vô cùng quan trọng trong việc làm tiền đề để thúc đẩy nền công nghiệp hóa, hiện
đại hóa phát triển. Ngược lại công nghiệp hóa, hiện đại hóa sẽ làm thay đổi cách
thức lao động và trang thiết bị máy móc trong nông nghiệp, để cho ra xã hội
những sản phẩm nông nghiệp phong phú, đa dạng và đảm bảo chất lượng. Khó
khăn lớn nhất của ngành nông nghiệp nước ta là thời thiết thất thường, các sản
phẩm nông nghiệp không được bảo vệ trước yếu tố thiên nhiên. Vì vậy mô hình
nhà kính, nhà lưới được áp dụng trong nông nghiệp để nâng cao sản lượng và
chất lượng của các sản phẩm nông nghiệp, giúp vượt qua các trở ngại về mặt khí
hậu. Một trong những mục đích chính của nhà kính là kiểm soát được các thông
số như nhiệt độ, độ ẩm, ánh sáng,... cho phù hợp với yêu cầu sinh trưởng của cây
trồng. Để kiểm soát được các thông số này một cách tự động hoặc bán tự động
cần có sự can thiệp của các thiết bị điện tử.
Với mục đích nghiên cứu, triển khai môi trường phát triển hệ thống nhúng
tác giả lựa chọn đề tài này với mong muốn có một cái nhìn tổng quan về việc
phát triển hệ thống nhúng và bước đầu thực hiện triển khai áp dụng cho việc điều
khiển các thông số cho môi trường nhà kính.
Luận văn được trình bày trong ba chương với nội dung mỗi chương như
sau:
Chương 1 Trình bày các nội dung tìm hiểu về hệ thống nhúng, hệ thống
thời gian thực, phần mềm nhúng, các vấn đề về thiết kế và phát triển hệ thống
Chúng ta có thể hiểu hệ thống nhúng là một phần hệ thống xử lý thông
minh nằm trong sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện
một số chức năng của hệ thống. Nói một cách đơn giản khi một hệ tính toán được
nhúng vào trong một sản phẩm hay một hệ thống một cách hữu cơ và thực hiện
một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống nhúng [1].
Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chuyên
biệt nào đó. Khác với các máy tính đa chức năng, chẳng hạn như máy tính cá
nhân, một hệ thống nhúng chỉ thực hiện một hoặc một vài chức năng nhất định,
thường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và
phần cứng chuyên dụng mà ta không tìm thấy trong một máy tính đa năng nói
chung. Vì hệ thống chỉ được xây dựng cho một số nhiệm vụ nhất định nên các
nhà thiết kế có thể tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất.
Các hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn. Hệ thống
nhúng rất đa dạng, phong phú về chủng loại. Đó có thể là những thiết bị cầm tay
nhỏ gọn như đồng hồ kĩ thuật số và máy chơi nhạc MP3, hoặc những sản phẩm
lớn như đèn giao thông, bộ kiểm soát trong nhà máy hoặc hệ thống kiểm soát các
máy năng lượng hạt nhân. Xét về độ phức tạp, hệ thống nhúng có thể rất đơn
giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại
vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn.
Các hệ nhúng được tích hợp trong các thiết bị đo lường điều khiển và các
sản phẩm cơ điện tử tạo nên đầu não và linh hồn của sản phẩm.
Trong các hệ nhúng, hệ thống điều khiển nhúng đóng một vai trò hết sức
quan trọng.
11
Hệ điều khiển nhúng là hệ thống mà máy tính được nhúng vào vòng điều
khiển của sản phẩm nhằm điều khiển một đối tượng, điều khiển một qúa trình
công nghệ đáp ứng các yêu cầu đặt ra. Hệ thống điều khiển nhúng lấy thông tin
hub,…
Các thiết bị ngoại vi
Máy in, máy quét, bàn phím, màn hình, modem, các ổ
đĩa cứng, các ổ đĩa CD-ROM
Các thiết bị trong gia Máy giặt, lò vi sóng, tivi, VCRs, stereo, các hệ thống
đình
báo cháy/báo trộm, điều khiển máy tưới cỏ, máy điều
nhiệt, clock radio, máy trả lời tự động,…
Trong công nghiệp
Điều khiển thang máy, các hệ thống giám sát, robots,…
Trong nông nghiệp
Nhà kính vi tính hóa,…
12
Thiết bị đo đạc
Tập hợp dữ liệu, máy hiện sóng, máy phát tín hiệu,
máy phân tích tín hiệu, cung cấp năng lượng,..
Trong y tế
Một hệ thống nhúng cần có một bộ xử lý và bộ nhớ. Hầu hết các hệ thống
nhúng không có các phần sau:
13
- Bàn phím (keyboard). Một vài hệ thống có thể có một ít nút bấm cho
người sử dụng.
- Màn hình (screen). Nhiều hệ thống, đặc biệt trong các sản phẩm người
tiêu dùng, có một màn hình tinh thể lỏng hiển thị các thông số giúp người
sử dụng theo dõi dễ dàng hơn.
- Ổ đĩa (disk drive). Chương trình được lưu trữ trong bộ nhớ, và hầu hết
các hệ thống nhúng không cần thiết phải lưu trữ nhiều dữ liệu một cách cố
định.
Tiếp theo, ta sẽ xem xét cụ thể đặc điểm của các thành phần của hệ thống
nhúng.
1.1.3.1. Giao diện
Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống
đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các
hệ điều hành trong các thiết bị để bàn. Đối với các hệ thống đơn giản, thiết bị
nhúng sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số,
thường đi kèm với một hệ thống menu đơn giản [5].
Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng
hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà
tối thiểu hóa được khoảng không gian cần sử dụng; ý 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. Các hệ thống nhúng thường có một
màn hình với một nút bấm dạng cần điểu khiển (joystick button). Sự phát triển
mạnh mẽ của mạng internet đã mang đến cho những nhà thiết kế hệ nhúng một
lựa chọn mới là sử dụng một giao diện web thông qua việc kết nối mạng. Điều
này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng
• Universal Serial Bus (USB)
• Networks: Controller Area Network, LonWorks...
• Bộ định thời: PLL(s), Capture/Compare và Time Processing Units
• Discrete IO: General Purpose Input/Output (GPIO)
15
1.1.3.4. Công cụ phát triển
Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng
cũng được phát triển nhờ việc 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ỡ rối (debuggers). Tuy nhiên,
các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như:
• Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)
• Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình,
giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của 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 phép toán.
• Các trình biên dịch và trình liên kết (linker) chuyên dụng đượ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á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 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.3.5. Độ tin cậy
Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ
khác nhau, tất cả các giới hạn và các mức ưu tiên khác nhau, sẽ đòi hỏi một kiến
trúc phức tạp hơn.
Ở đây có 4 kiến trúc:
• Round-Robin:
Kiến trúc Round-Robin chỉ có duy nhất một ưu điểm
so với các kiến trúc khác là đơn giản, trong khi có một số vấn đề làm cho
nó không thích hợp với nhiều hệ thống.
17
Kiến trúc Round-Robin chỉ có thể thích hợp cho các thiết bị rất đơn
giản như đồng hồ số và các lò vi sóng và không thể thích hợp cho các hệ
thống khác.
• Round-Robin với các ngắt (Round-Robin-with-Interrupts): thiếu sót
cơ bản của kiểu kiến trúc này là tất cả các mã lệnh tác vụ thực thi ở cùng
một mức ưu tiên (nhưng hơn kiến trúc Round-Robin là không đơn giản
quá)
• Function-queue-scheduling: Kiến trúc function-queue-scheduling là
một kiến trúc cũng không phức tạp hơn nhiều.
• Hệ điều hành thời gian thực (real-time operating): Sự khác nhau giữa
hệ điều hành thời gian thực và các hệ thống trước là:
- Việc cần thiết báo hiệu giữa các trình ngắt và các mã lệnh
tác vụ được xử lý bằng hệ điều hành thời gian thực.
- Không lặp trong mã lệnh quyết định cần phải thực hiện
tiếp theo. Mã lệnh bên trong hệ điều hành thời gian thực quyết định
kiểu hàm mã lệnh tác vụ nên thực hiện. Hệ điều hành thời gian thực
biết về nhiều trình con mã lệnh-tác vụ khác nhau và sẽ thực hiện
Như vậy chúng ta có thể xem, hệ thống thời gian thực là một hệ thống mà
sự hoạt động tin cậy của nó không chỉ phụ thuộc vào sự chính xác của kết quả,
mà còn phụ thuộc vào thời điểm đưa ra kết quả, hệ thống có lỗi khi yêu cầu về
thời gian không được thoả mãn.
Hình 1.1: Cấu trúc của các hệ thống thời gian thực
19
Như vậy, vấn đề của lập trình thời gian thực chính là việc thiết kế hệ
thống sao cho nó có thể tiếp nhận một cách chính xác các ràng buộc về mặt thời
gian trong suốt quá trình các sự kiện ngẫu nhiên và không đồng bộ xảy ra.
1.2.2. Các đặc điểm của hệ thống thời gian thực
Một hệ thống thời gian thực có các đặc trưng tiêu biểu sau:
• Ràng buộc thời gian (timing constrainst): Đặc trưng đầu tiên của hệ thống
thời gian thực là ràng buộc thời gian hay tính phản ứng nhanh. Hệ thống
phải xử lý thông tin một cách nhanh chóng để có thể đưa ra kết quả một
cách kịp thời. Một chương trình không những phải đưa ra kết quả tính
toán đúng mà còn phải đưa ra kết quả đúng thời gian. Hay nói một cách
khác, tính đúng đắn của một chương trình không chỉ phụ thuộc vào kết
quả tính toán logic mà còn phụ thuộc vào thời gian mà kết quả này được
sinh ra. Tổng quát hơn, phần mềm thời gian thực phải thỏa mãn các khẳng
định (assertion) thời gian, khẳng định này bao gồm cả quan hệ đối với thời
gian tuyệt đối và thời gian tương đối. Cách xác nhận đơn giản nhất và phổ
biến nhất là một mốc tới hạn (thời hạn) - giới hạn về thời gian tương đối
hoặc tuyệt đối mà một tính toán phải hoàn thành.
• Tính bị động: Hệ thống phải phản ứng với các sự kiện xuất hiện vào các
thời điểm thường không biết trước. Ví dụ, sự vượt ngưỡng của một giá trị
đo, sự thay đổi trạng thái của một thiết bị quá trình phải dẫn đến các phản
• Tính tiền định: Dự đoán trước được thời gian phản ứng tiêu biểu, thời gian
phản ứng chậm nhất cũng như trình tự đưa ra các phản ứng. Nếu một bộ
điều khiển phải xử lý đồng thời nhiều nhiệm vụ, ta phải tham gia quyết
định được về trình tự thực hiện các công việc và đánh giá được thời gian
xử lý mỗi công việc. Như vậy người sử dụng mới có cơ sở để đánh giá về
khả năng đáp ứng tính thời gian thực của hệ thống.
1.2.3. Các dạng của hệ thống thời gian thực
Về cơ bản, chương trình có tính thời gian thực phải có khả năng phản ứng
lại các sự kiện trong môi trường mà hệ thống làm việc trong khoảng thời gian
nhất định cho trước. Những hệ thống như vậy được gọi là hệ thống "điều khiển
sự kiện" (hay hệ thống hướng sự kiện event-driven) và có thể được mô tả bằng
21
thời gian trễ tính từ khi sự kiện xảy ra tới khi hệ thống có hoạt động phản ứng lại
sự kiện đó.
Thời gian thực, mặt khác, đòi hỏi một giới hạn cao hơn về thời gian trễ,
được gọi là "thời hạn lập lịch" (scheduling deadline) hoặc gọi tắt là thời hạn. Hệ
thống thời gian thực thường được phân thành hai loại: hệ thống thời gian thực
cứng (hard real-time system) và hệ thống thời gian thực mềm (soft real- time
system).
Hệ thống thời gian thực cứng là hệ thống mà các hành động của nó phải
không bao giờ được vi phạm các ràng buộc thời gian trong đó có thời hạn lập
lịch, hệ thống phải tiếp nhận và nắm bắt được thời hạn lập lịch của nó tại mọi
thời điểm. Hệ thống có lỗi hoặc sai sót trong việc tiếp nhận thời hạn sẽ gây ra các
hậu quả rất nghiêm trọng, thiệt hại về vật chất, gây ảnh hưởng xấu đến sức khoẻ,
đời sống của con người, thậm chí chết người. Với hệ thống thời gian thực cứng,
dữ liệu trễ là dữ liệu tồi. Một ví dụ về hệ thống thời gian thực cứng là hệ thống
kiểm soát không lưu. Trong hệ thống này, một phân phối đường bay, thời gian
bảo tính năng thời gian thực của nó. Như vậy, xử lý thời gian thực cũng có các
đặc điểm tiêu biểu nêu trên như tính bị động, tính nhanh nhạy, tính đồng thời và
tính tiền định. Để có thể phản ứng với nhiều sự kiện diễn ra cùng một lúc, một hệ
thống xử lý thời gian thực sử dụng các quá trình tính toán đồng thời.
Quá trình tính toán là một tiến trình thực hiện một hoặc một phần chương
trình tuần tự do hệ điều hành quản lý trên một máy tính, có thể tồn tại đồng thời
với các quá trình khác kể cả trong thời gian thực hiện lệnh và thời gian xếp hàng
chờ đợi thực hiện.
Các hình thức tổ chức các quá trình tính toán đồng thời:
- Xử lý tương tranh: Nhiều quá trình tính toán chia sẻ thời gian xử lý thông
tin của một bộ xử lý.
- Xử lý song song: Các quá trình tính toán được phân chia thực hiện song
song trên nhiều bộ xử lý của hệ thống máy tính.
- Xử lý phân tán: Mỗi quá trình tính toán được thực hiện riêng trên một máy
tính.
23
Trong các hình thức trên đây thì hình thức xử lý tương tranh có vai trò chủ
chốt. Mặc dù hệ thống điều khiển có thể có nhiều trạm, và mỗi trạm có thể là một
hệ đa vi xử lý, số lượng các quá trình tính toán cần thực hiện thường bao giờ
cũng lớn hơn số lượng vi xử lý. Trong khi một vi xử lý không thể thực hiện song
song nhiều lệnh, nó phải phân chia thời gian để thực hiện xen kẽ nhiều nhiệm vụ
khác nhau theo thứ tự tùy theo mức ưu tiên và phương pháp lập lịch.
Trong các hệ thống điều khiển, khái niệm tác vụ (task) cũng hay được sử
dụng bên cạnh quá trình tính toán. Có thể nói, tác vụ là một nhiệm vụ xử lý thông
tin trong hệ thống có thể thực hiện theo cơ chế tuần hoàn (periodic task) hoặc
theo sự kiện (event task). Các dạng tác vụ qui định trong chuẩn IEC 61131-3
(Programmable Controllers – Part3: Programming Languages). Ví dụ, một tác vụ
- Hệ thống điều khiển trong các nhà máy: như nhà máy năng lượng, nhà máy
hóa chất và các nhà máy sản xuất bia và nước uống có ga, ….
- Hệ thống y tế như hệ thống chữa bệnh bằng bức xạ, giám sát bệnh nhân,
phục hồi nhịp đập bình thường của tim.
- Hệ thống vũ khí quân sự sử dụng trong quân đội tạo các vũ khí cháy nổ,
hiệu chỉnh tín hiệu, ….
- Hệ thống chế tạo sử dụng robot.
- Hệ thống xử lý các luồng Video và Audio.
....
1.3. Thiết kế và phát triển ứng dụng cho hệ thống nhúng
Trong phần này trình bày các vấn đề về thiết kế và phát triển phần mềm
nhúng, những khác biệt so với vấn đề thiết kế và phát triển ứng dụng, vấn đề
kiểm thử phần mềm nhúng…
1.3.1. Thiết kế hệ thống nhúng
1.3.1.1. Vấn đề chung về thiết kế hệ nhúng
Thiết kế các hệ thống nhúng là thiết kế phần cứng và phần mềm phối hợp
bao gồm những bước sau:
- Mô hình hoá hệ thống: Mô tả các khối chức năng với các đặc tính và
thuật toán xử lý.
- Chi tiết hoá các khối chức năng.