P. 1
Bao Cao Phan Mem Nhung

Bao Cao Phan Mem Nhung

|Views: 36|Likes:
Published by Metal28032013
BTL Kiem thu phan mem, bao cao phan mem nhung
BTL Kiem thu phan mem, bao cao phan mem nhung

More info:

Categories:Types, School Work
Published by: Metal28032013 on May 24, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/26/2013

pdf

text

original

Sections

  • MỤC LỤC
  • CHƯƠNG 1 : MỞ ĐẦU
  • 1.1 Đặt vấn đề
  • 1.2. Phạm vi nghiên cứu
  • 1.3 Cấu trúc Bài tập lớn
  • CHƯƠNG 2 : PHẦN MỀM NHÚNG VÀ HỆ THỐNG NHÚNG
  • 2.1. Hệ thống nhúng
  • Hình 2.1 Minh họa một số thiết bị có phần mềm nhúng
  • 2.2 Phần Mềm Nhúng
  • 2.3.1. Khái niệm
  • Hình 2.2Phần mềm nhúng chạy trên mạch đèn LED
  • 2.3.2. Đặc điểm
  • Hình 2.3 IC của một vi mạch điện tử
  • 2.3.3. So sánh phần mềm nhúng với phần mềm thông thường
  • 2.3 Lĩnh vực ứng dụng của Hệ Nhúng
  • 2.4 Đặc điểm công nghệ và xu thế phát triển của hệ nhúng
  • 2.4.1 Đặc điểm công nghệ
  • 2.4.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng, phần mềm nhúng
  • CHƯƠNG 3: QUY TRÌNH PHÁT TRIỂN PHẦN MỀM
  • 3.1 Ngôn ngữ phát triển phần mềm nhúng
  • 3.2 Quy trình phát triển
  • Hình 3.1 Lưu đồ quá trình phát triển hệ thống nhúng
  • 3.2.1. Các bước phát triển phần mềm nhúng
  • Bảng 3.2: Ba bước trong quy trình phát triển một phần mềm nhúng
  • 3.2.2. Một số mô hình phát triển
  • Hình 3.2 Sơ đồ khối mô hình thác nước
  • 3.2.3 Chi tiết phát triển phần mềm nhúng
  • Hình 3.3 Sơ đồ phân tích yêu cầu phần mềm nhúng
  • 3.2.3.2. Thiết kế
  • Hình 3.4 Sơ đồ quan hệ (call graph) phân mềm trong hệ thống điều khiển động cơ
  • 3.2.3.3 Mã hóa và kiểm thử
  • 3.2.3.4. Kiểm thử, gỡ lỗi
  • CHƯƠNG 4: TRIỂN KHAI VÀ CÀI ĐẶT PHẦN MỀM NHÚNG
  • 4.1 Ví dụ Thiết kế mạch quang báo giao tiếp bàn phím máy tính
  • 4.1.1. Cơ sở lý thuyết
  • 4.1.1.1 Giới thiệu vi điều khiển ATmega16L
  • Hình 4.1 Sơ đồ chân của ATmega16L
  • Hình 4.2 Bộ nhớ chương trình
  • Hình 4.3 Bộ nhớ dữ liệu
  • Bảng 4.3 Thanh ghi UCSRA
  • Bảng 4.4 Thanh ghi UCSRB
  • Hình 4.4 Thanh ghi UCSRC
  • Bảng 5.5 Độ dài dữ liệu truyền
  • Hình 4.5 Thanh ghi UBRRH và UBRRL
  • 4.1.1.2 Led ma trận
  • Hình 4.6 Led ma trận 8x8
  • Hình 4.7 Sáng chữ A
  • 4.1.1.3 Bàn phím PS/2
  • Hình 4.8 Cổng PS/2
  • Hình 4.9 Mã scancode của bàn phím
  • Hình 4.10 Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ
  • 4.1.2 Sơ đồ khối
  • 4.1.2.1 Sơ đồ khối
  • Hình 4.11 Sơ đồ khối
  • 4.1.2.2 Chức năng các khối
  • 4.1.3 Thiết kế
  • 4.1.3.1 Thiết kế các khối
  • 4.1.3.2 Sơ đồ nguyên lý
  • Hình 4.12 Mạch nguyên lý mạch vi điều khiển
  • 4.1.3.2.2 Mạch nguyên lý mạch led ma trận
  • Hình 4.13 Mạch nguyên lý mạch led ma trận
  • 4.1.3.3 Linh kiện sử dụng trong mạch
  • 4.1.4.1 Sơ đồ mạch in
  • Hình 4.14 Mạch in mạch vi điều khiển
  • Hình 4.15 Mạch in mạch led ma trận
  • 4.1.4.2 Hàn và lắp linh kiện
  • 4.1.4.3 Kết quả thi công
  • Hình 4.16 Mạch thực tế
  • 4.2. Kết luận từ Ví dụ thực tế
  • TÀI LIỆU THAM KHẢO

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CNTT
------------





BÀI TẬP LỚN
MÔN HỌC: NHẬP MÔN CÔNG NGHỆ PHẦN MỀM
ĐỀ TÀI : TÌM HIỂU PHẦN MỀM NHÚNG
Giáo viên hướng dẫn : Th.s Hoàng Quang Huy
Nhóm thực hiên:
1.Nguyễn Văn Hậu
2.Nguyễn Bách Phong



Hà Nội 1- 2013
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 2



LỜI NÓI ĐẦU
Trong thế giới hiện đại ngày nay, khi mà Công nghệ thông tin quan trọng hơn bao
giờ hết, sự phát minh các máy móc ngày càng phức tạp để phục vụ sản xuất và đời sống,
vấn đề áp dụng phần mềm nhúng vào máy móc để điều khiển theo ý muốn con người
càngđược đặt lên hàng đầu. Con người ngày càng nâng cao yêu cầu về tính năng của máy
móc lẫn phần mềm chạy trên nó để phục vụ cho những mục đích, yêu cầu khác nhau. Do
đó cần thiết phải có một quy trình phát triển hệ nhúng nói chung và phần mềm nhúng nói
riêng trở nên cần thiết để tạo ra những phần mềm nhanh hơn, tiết kiệm hơn và ít hỏng hóc
hơn.. Tài liệu là Bài Tập Lớn của nhóm Sinh Viên lớp KHMT2-K5, trường Đại Học
Công Nghiệp Hà Nội với đề tài Trình bày về Quy trình phát triển phần mềm nhúng , sẽ
đưa đến kiến thức sơ lược về hệ nhúng, phần mềm nhúng,ứng dụng, cơ sở lý thuyết cũng
như quy trình phát triển của nó nó. Mặc dù đã hết sức cố gắng nhưng vẫn không tránh
khỏi một số thiếu sót, hy vọng được người đọc góp ý chân thành.
Nhóm Sinh Viên xin được gửi lời cảm ơn chân thành tới Giảng Viên – Thạc sỹ
Hoàng Quang Huy đã tận lòng giúp đỡ, hướng dẫn trong quá trình học tập môn học.
Hà Nội, ngày 4 tháng 1 năm 2013
Nhóm Sinh Viên.
Nguyễn Văn Hậu
Nguyễn Bách Phong
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 3


MỤC LỤC
LỜI NÓI ĐẦU .........................................................................................................1
MỤC LỤC ...............................................................................................................3
MỤC LỤC BẢNG, HÌNH VẼ. ................................................................................5
CHƯƠNG 1 : MỞ ĐẦU ..........................................................................................6
1.1 Đặt vấn đề ......................................................................................................6
1.2. Phạm vi nghiên cứu. ......................................................................................6
1.3 Cấu trúc Bài tập lớn ........................................................................................7
CHƯƠNG 2 : PHẦN MỀM NHÚNG VÀ HỆ THỐNG NHÚNG ............................8
2.1. Hệ thống nhúng .............................................................................................8
2.2 Phần Mềm Nhúng ..........................................................................................9
2.3.1. Khái niệm ...............................................................................................9
2.3.2. Đặc điểm .............................................................................................. 11
2.3.3. So sánh phần mềm nhúng với phần mềm thông thường. ..................... 11
2.3 Lĩnh vực ứng dụng của Hệ Nhúng .............................................................. 12
2.4 Đặc điểm công nghệ và xu thế phát triển của hệ nhúng ................................ 13
2.4.1 Đặc điểm công nghệ ............................................................................... 13
2.4.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng, phần mềm nhúng. ... 14
CHƯƠNG 3: QUY TRÌNH PHÁT TRIỂN PHẦN MỀM NHÚNG ....................... 17
3.1 Ngôn ngữ phát triển phần mềm nhúng. ......................................................... 17
3.2 Quy trình phát triển. ...................................................................................... 19
3.2.1. Các bước phát triển phần mềm nhúng ................................................... 20
3.2.2. Một số mô hình phát triển. ..................................................................... 20
3.2.2.1 Mô hình thác nước ........................................................................... 20
3.2.3 Chi tiết phát triển phần mềm nhúng ........................................................ 22
3.2.3.1 Phân tích .......................................................................................... 22
3.2.3.2. Thiết kế ........................................................................................... 24
3.2.3.3 Mã hóa và kiểm thử. ......................................................................... 25
3.2.3.4. Kiểm thử, gỡ lỗi. ............................................................................. 26
CHƯƠNG 4: TRIỂN KHAI VÀ CÀI ĐẶT PHẦN MỀM NHÚNG ....................... 27
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 4

4.1 Ví dụ Thiết kế mạch quang báo giao tiếp bàn phím máy tính. ....................... 27
4.1.1. Cơ sở lý thuyết. ..................................................................................... 27
4.1.1.1 Giới thiệu vi điều khiển ATmega16L ............................................... 27
4.1.1.2 Led ma trận ...................................................................................... 34
4.1.1.3 Bàn phím PS/2 ................................................................................. 36
4.1.2 Sơ đồ khối. ............................................................................................. 38
4.1.2.1 Sơ đồ khối ........................................................................................ 38
4.1.2.2 Chức năng các khối .......................................................................... 38
4.1.3 Thiết kế .................................................................................................. 39
4.1.3.1 Thiết kế các khối .............................................................................. 39
4.1.3.2 Sơ đồ nguyên lý ............................................................................... 39
4.1.3.3 Linh kiện sử dụng trong mạch .......................................................... 42
4.1.4 Cài đặt .................................................................................................... 43
4.1.4.1 Sơ đồ mạch in .................................................................................. 43
4.1.4.2 Hàn và lắp linh kiện ......................................................................... 44
4.1.4.3 Kết quả thi công ............................................................................... 45
4.2. Kết luận từ Ví dụ thực tế. ............................................................................. 45
TÀI LIỆU THAM KHẢO...................................................................................... 46
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 5


MỤC LỤC BẢNG.
Bảng 3.1: Ba bước trong quy trình phát triển một phần mềm nhúng .............................. 20
Bảng 4.2 Thanh ghi UCSRA .......................................................................................... 31
Bảng 4.3 Thanh ghi UCSRB .......................................................................................... 31
Bảng 4.5 Độ dài dữ liệu truyền ...................................................................................... 33

MỤC LỤC HÌNH VẼ
Hình 2.1 Minh họa một số thiết bị có phần mềm nhúng ................................................. 9
Hình 2.2Phần mềm nhúng chạy trên mạch đèn LED ...................................................... 11
Hình 2.3 IC của một vi mạch điện tử. ........................................................................... 11
Hình 3.1 Lưu đồ quá trình phát triển hệ thống nhúng .................................................... 19
Hình 3.2 Sơ đồ khối mô hình thác nước. ........................................................................ 21
Hình 3.3 Sơ đồ phân tích yêu cầu phần mềm nhúng. ...................................................... 23
Hình 3.4 Sơ đồ quan hệ (call graph) phân mềm trong hệ thống điều khiển động cơ ....... 25
Hình 4.1 Sơ đồ chân của ATmega16L ........................................................................... 28
Hình 4.2 Bộ nhớ chương trình ....................................................................................... 29
Hình 4.3 Bộ nhớ dữ liệu ................................................................................................. 29
Hình 4.4 Thanh ghi UCSRC .......................................................................................... 32
Hình 4.5 Thanh ghi UBRRH và UBRRL ....................................................................... 33
Hình 4.6 Led ma trận 8x8 .............................................................................................. 34
Hình 4.7 Sáng chữ A...................................................................................................... 35
Hình 4.8 Cổng PS/2 ....................................................................................................... 36
Hình 4.9 Mã scancode của bàn phím .............................................................................. 37
Hình 4.10 Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ ......................... 38
Hình 4.11 Sơ đồ khối ..................................................................................................... 38
Hình 4.12 Mạch nguyên lý mạch vi điều khiển .............................................................. 40
Hình 4.13 Mạch nguyên lý mạch led ma trận ................................................................. 41
Hình 4.14 Mạch in mạch vi điều khiển........................................................................... 43
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 6

Hình 4.15 Mạch in mạch led ma trận ............................................................................. 44
Hình 4.16 Mạch thực tế ................................................................................................. 45

CHƯƠNG 1 : MỞ ĐẦU
1.1 Đặt vấn đề
Hệ thống nhúng rất đa dạng và phong phú, tuy nhiên có rất ít người biết được tầm
quan trọng và sự hiện hữu của chúng trong thế giới quanh ta. Từ những hệ thống phức
tạp như hàng không vũ trụ, phòng thủ quân sự, máy móc tự động trong công nghiệp, đến
những phương tiện di chuyển thông thường như máy bay, xe điện, xe hơi, các trang thiết
bị y tế trong bệnh viện, cho tới những thiết bị truyền hình và điện thoại di động chúng ta
sử dụng hằng ngày, đâu đâu cũng có sự hiện diện của hệ thống nhúng.
Cùng với sự đa dạng của các hệ thống nhúng, lĩnh vực lập trình phần mềm nhúng
cũng như phần cứng góp phần tạo ra hệ thống nhúng hiện nay rất phát triển. Nó càng
ngày càng thể hiện những đóng góp to lớn vào đời sống kinh tế xã hội của cả nhân loại.
Mỗi người khi bắt đầu bước vào lĩnh vực này, cần tìm hiểu rõ thông tin về nó, về quy
trình phát triển của phần mềm nhúng cũng như việc triển khai và bảo trì, hay tình hình
thực tế hiện nay về nhu cầu cũng như các bước phát triển như thế nào.
Tuy nhiên hiện nay, hệ thống nhúng ở Việt Nam phát triển khá khiêm tốn so với thế
giới. Có rất ít các tài liệu, các bài báo nói về phần mềm nhúng bằng Tiếng Việt cũng như
không có nhiều các công cụ hỗ trợ. Việc nghiên cứu và tìm hiểu các phương pháp, các kĩ
thuật phát triển cho phần mềm nhúng là một vấn đề cần thiết hiện nay, nó sẽ góp phần
thúc đẩy sự phát triển của lĩnh vực hệ thống nhúng, một lĩnh vực giàu tiềm năng nhưng
mới chỉ bước đầu phát triển tại Việt Nam.
1.2. Phạm vi nghiên cứu.
Trong phạm vi nghiên cứu của Bài tập lớn này, chúng tôi nghiên cứu và trình bày
tổng quan về hệ thống nhúng trong đó bao gồm cả phần mềm nhúng cũng như tổng quan
về các thiết bị phần cứng được nhúng phần mềm.
Tôi tập trung nghiên cứu vào khái niệm phần mềm nhúng, ứng dụng của nó vào các
mặt của kinh tế, đời sống xã hội. Cũng như quy trình phát triển phần mềm nhúng, ngôn
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 7

ngữ để lập trình phần mềm nhúng. Và sau cùng tôi đi sâu vào giới thiệu việc triển khai và
bảo trì phần mềm nhúng để đảm bảo tính ổn định của nó
1.3 Cấu trúc Bài tập lớn
Phần còn lại của Bài tập lớn có cấu trúc như sau :
Chương 2 : Phần mềm nhúng và Hệ thống nhúng. Giới thiệu về phần mềm nhúng và
hệ thống nhúng.
Chương 3 : Trình bày về quy trình, các bước để phát triển một phần mềm nhúng
thông thường.
Chương 4 : Giới thiệu phương pháp triển khai và quy trình bảo trì phần mềm nhúng
trong thực tế.
Chương 5 : Kết luận từ những vấn đề nghiên cứu.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 8


CHƯƠNG 2 : PHẦN MỀM NHÚNG VÀ HỆ THỐNG NHÚNG
Kỷ nguyên công nghệ mới đã và đang tiếp tục phát triển không ngừng nhằm
thông minh hoá hiện đại hoá thông suốt các hệ thống. Có thể nói đánh dấu sự ra đời
và phát triển của hệ nhúng trước tiên phải kể đến sự ra đời của các bộ vi xử lý, vi
điều khiển. Nó được đánh dấu bởi sự ra đời của Chip vi xử lý đầu tiên 4004 vào năm
1971 cho mục đích tính toán thương mại bởi một công ty Nhật bản Busicom và sau
đó đã được chắp cánh và phát triển vượt bậc bởi Intel để trở thành các bộ siêu xử lý
như các Chip được ứng dụng cho PC như ngày nay. Thập kỷ 80 có thể được coi là khởi
điểm bắt đầu kỷ nguyên của sự bùng nổ về phát triển các hệ nhúng. Từ đó khởi nguồn
cho làn sóng ra đời của hàng loạt các chủng loại vi xử lý và gắn liền là các hệ nhúng để
thâm nhập rộng khắp trong các ứng dụng hàng ngày của cuộc sống chúng ta ví dụ như,
các thiết bị điện tử sử dụng cho sinh hoạt hàng ngày (lò vi sóng, TV, tủ lạnh, máy
giặt, điều hoà ...) và văn phòng làm việc (máy fax, máy in, máy điện thoại...)... Các bộ
vi xử lý và phần mềm cũng ngày càng được sử dụng rộng rãi trong rất nhiều các hệ
thống nhỏ. Các loại vi xử lý được sử dụng trong các hệ thống nhúng hiện nay đã vượt
xa so với PC về số lượng chủng loại (chiếm đến 79% số các vi xử lý đang tồn tại) và
vẫn còn tiếp tục phát triển để nhằm đáp ứng và thoả mãn rất nhiều ứng dụng đa dạng.
Trong số đó vẫn còn ứng dụng cả các Chip vi xử lý 8 bit, 16 bit và hiện nay chủ
yếu vẫn là 32 bit (chiếm khoảng 75%). Gắn liền với sự phát triển phần cứng, phần
mềm nhúng cũng đã phát triển với tốc độ nhanh không thua kém thậm chí sẽ tăng
nhanh hơn rất nhiều theo sự phát triển hệ nhúng.
2.1. Hệ thống nhúng
Trong thế giới thực của chúng ta bất kỳ một thiết bị hay hệ thống điện/điện tử có
khả năng xử lý thông tin và điều khiển đều có thể tiềm ẩn trong đó một thiết bị hay
hệ nhúng, ví dụ như các thiết bị truyền thông, thiết bị đo lường điều khiển, các thiết
bị phục vụ sinh hoạt hàng ngày như lò vi sóng, máy giặt, camera…Rất dễ dàng để có
thể kể ra hàng loạt các thiết bị hay hệ thống như vậy đang tồn tại quanh ta, chúng là
hệ nhúng. Vậy hệ nhúng thực chất là gì và nên hiểu thế nào về hệ nhúng? Hiện nay
cũng chưa có một định nghĩa nào thực sự thoả đáng để được chuẩn hoá và thừa nhận
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 9

rộng rãi cho hệ nhúng mà vẫn chỉ là những khái niệm diễn tả về chúng thông qua
những đặc thù chung. Tuy nhiên ở đây chúng ta có thể hiểu hệ nhúng là một phần
hệ thống xử lý thông tin nhúng trong các hệ thống lớn, phức hợp và độc lập ví dụ
như trong ôtô, các thiết bị đo lường, điều khiển, truyền thông và thiết bị thông minh nói
chung. Chúng là những tổ hợp của phần cứng và phần mềm để thực hiện một hoặc
một nhóm chức năng chuyên biệt, cụ thể (Trái ngược với máy tính PC mà chúng
ta thường thấy được sử dụng không phải cho một chức năng mà là rất nhiều chức năng
hay phục vụ chung cho nhiều mục đích). PC thực chất lại là một hệ thống lớn, tổ hợp
của nhiều hệ thống nhúng ví dụ như card màn hình, âm thanh, modem, ổ cứng, bàn
phím…Chính điều này làm chúng ta dễ lúng túng nếu được hỏi nên hiểu thế nào về
PC, có phải là hệ nhúng hay không.


Hình 2.1 Minh họa một số thiết bị có phần mềm nhúng
2.2 Phần Mềm Nhúng
2.3.1. Khái niệm
Phần mềm nhúng là gì ? Phần mềm nhúng là một chƣơng trình đƣợc viết,
biên dịch trên máy tính và nạp vào một hệ thống khác (gọi tắt là KIT) bao gồm một
hoặc nhiều bộ vi xử lý đã đƣợc cài sẵn một hệ điều hành, bộ nhớ ghi chép đƣợc,
các cổng giao tiếp với các phần cứng khác… Mục đích của phần mềm nhúng là
nhằm hỗ trợ cho các sản phẩm phần cứng các chức năng hoàn hảo nhất, phục vụ tốt
nhất các nhu cầu của ngƣời dùng với sự bảo mật về sản phẩm tốt nhất. Phần mềm
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 10

nhúng có các tính chất sau:
- Phụ thuộc vào hệ điều hành cài sẵn trên KIT
- Phụ thuộc vào các tính năng đặt trƣng của từng sản phẩm phần cứng có trong
KIT
- Phụ thuộc vào đặc tính của hệ thống
Phần mềm nhúng là sự tích hợp của ngành tin học (phần mềm) với ngành
điện tử (phần cứng). Với các các thiết bị điện tử, phần mềm nhúng mang lại nhiều
sự hữu ích cần thiết cho ngƣời sử dụng và đồng thời giảm chi phí giá thành về phần
cứng cho thiết bị. Thế giới ngày này nhắm tới sự tích hợp của ngành tin học với các
ngành ứng dụng khác. Sự tích hợp này được thực hiện qua các thiết bị thông minh và
phần mềm nhúng là bộ não của các thiết bị đó. Trong thời gian không xa, chúng ta sẽ
bƣớc tới kỷ nguyên của "Hậu-PC" (thời đại của hậu máy tính cá nhân) và khi đó thì
phần mềm nhúng sẽ là phần đa số của ngành công nghiệp phần mềm. Một số ví dụ
phần mềm nhúng: Sản phẩm phần mềm nhúng rất đa dạng, phong phú, thuộc nhiều
chủng loại. Có thể lấy các sản phẩm sau làm ví dụ: máy ảnh kỹ thuật số, lò vi ba, máy
photocopy, máy in laser, máy FAX, các bảng quảng cáo sử dụng hệ thống đèn LED,
màn hình tinh thể lỏng, máy giặt , máy điều hoà nhiệt độ…
• Đó là phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công
nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Đặc điểm của các hệ
thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao.
• Có khả năng tự trị, chạy trong các thiết bị mà không cần tới hệ điều hành.
• Đó 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.

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 11


Hình 2.2Phần mềm nhúng chạy trên mạch đèn LED
2.3.2. Đặc điểm
• Phần mềm được tích hợp vào trong các IC của thiết bị điện tử.
• Ưu điểm nhỏ gọn, dễ cài đặt và sản xuất hàng loạt.
• Mục đích: Nhằm hỗ trợ cho các sản phẩm phần cứng các chức năng hoàn hảo
nhất, phục vụ tốt nhất các nhu cầu của người dùng với sự bảo mật về sản phẩm
tốt nhất.

Hình 2.3 IC của một vi mạch điện tử.


2.3.3. So sánh phần mềm nhúng với phần mềm thông thường.
Tiêu chí Phần mềm thường Phần mềm nhúng
- Nền tảng hoạt động - Chủ yếu trên PC với các
hệ điều hành như
Windows, Linux, Mac…
- Chạy được trên nhiều
thiết bị điện tử, được cài
đặt hệ điều hành nhúng
như Android, Win CE,
QNX, DOS ….
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 12

- Lập trình. - Gắn liền với framenwork
của môi trường hoạt động
, thường chỉ cần 1 hay 2
ngôn ngữ lập trình cho
một phần mềm.
- Không cần quá quan tâm
đến cấu trúc phần cứng
của thiết bị.
- Phải hiểu biết về cấu
trúc phần cứng mà phần
mềm được nhúng vào.
Các vi xử lý như Intel,
Texas, ARM….
- Các hệ điêu hành nhúng
khác nhau : Symbian,
Android, QNX…
- Thiết bị ngoại vi. - Thường phần mềm trên
PC sẽ giúp giao tiếp với
các thiết bị ngoại vi.
- Người lập trình phải
quan tâm tới việc xử lý
các thiết bị ngoại vi liên
quan tới phần mềm. Phải
biết được các kiến thức
như vi xử lý, xử lý tín
hiệu số ….
Bảng 2.1 So sánh phần mềm nhúng với phần mềm thông thường.
2.3 Lĩnh vực ứng dụng của Hệ Nhúng
Chúng ta có thể kể ra được rất nhiều các ứng dụng của hệ thống nhúng đang được sử
dụng hiện nay, và xu thể sẽ còn tiếp tục tăng nhanh. Một số các lĩnh vực và sản phẩm
thị trường rộng lớn của các hệ nhúng có thể được nhóm như sau:
• Các thiết bị điều khiển
• Ôtô, tàu điện
• Truyền thông
• Thiết bị y tế
• Hệ thống đo lường thẩm định
• Toà nhà thông minh
• Thiết bị trong các dây truyền sản xuất
• Rôbốt
• ...
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 13

2.4 Đặc điểm công nghệ và xu thế phát triển của hệ nhúng
2.4.1 Đặc điểm công nghệ
Các hệ thống như vậy đều có chung một số đặc điểm như yêu cầu về khả năng
thời gian thực, độ tin cậy, tính độc lập và hiệu quả. Một câu hỏi đặt ra là tại sao hệ
thống nhúng lại phát triển và được phổ cập một cách nhanh chóng như hiện nay. Câu
trả lời thực ra nằm ở các yêu cầu tăng lên không ngừng trong các ứng dụng công
nghệ hiện nay. Một trong những yêu cầu cơ bản đó là:

Khả năng độc lập và thông minh hoá: Điều này được chỉ rõ hơn thông qua
một số các thuộc tính yêu cầu, cụ thể như:
- Độ tin cậy
- Khả năng bảo trì và nâng cấp
- Sự phổ cập và tiện sử dụng
- Độ an toàn
- Tính bảo mật
Hiệu quả: Yêu cầu này được thể hiện thông qua một số các đặc điểm của hệ
thống như
sau:
- Năng lượng tiêu thụ
- Kích thước về phần cứng và phần mềm
- Hiệu quả về thời gian thực hiện
- Kích thước và khối lượng
- Giá thành

Phân hoạch tác vụ và chức năng hoá: Các bộ vi xử lý trong các hệ nhúng
thường được sử dụng để đảm nhiệm và thực hiện một hoặc một nhóm chức năng rất
độc lập và cũng đặc thù cho từng phần chức năng của hệ thống lớn mà nó được nhúng
vào. Ví dụ như một vi xử lý thực hiện một phần điều khiển cho một chức năng thu
thập, xử lý và hiển thị của ôtô hay hệ thống điều khiển quá trính. Khả năng này làm
tăng thêm sự chuyên biệt hoá về chức năng của một hệ thống lớn và dễ dàng hơn cho
quá trính xây dựng, vận hành và bảo trì.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 14

Khả năng thời gian thực: Các hệ thống đều gắn liền với việc đảm nhiệm một
chức năng chính và phải được thực hiện đúng theo một khung thời gian qui định.
Thông thường một chức năng của hệ thống phải được thực hiện và hoàn thành theo
một yêu cầu thời gian định trước để đảm bảo thông tin cập nhật kịp thời cho phần
xử lý của các chức năng khác và có thể ảnh hưởng trực tiếp tới sự hoạt động đúng và
chính xác của toàn hệ thống. Tuỳ thuộc vào từng bài toán và yêu cầu của hệ thống mà
yêu cầu về khả năng thời gian thực cũng rất khác nhau.
Tuy nhiên, trong thực tế không phải hệ nhúng nào cũng đều có thể thoả mãn
tất cả những yêu cầu nêu trên, vì chúng là kết quả của sự thoả hiệp của nhiều yêu cầu
và điều kiện nhằm ưu tiên cho chức năng cụ thể mà chúng được thiết kế. Chính điều
này lại càng làm tăng thêm tính chuyên biệt hoá của các hệ/thiết bị nhúng mà các
thiết bị đa năng không thể cạnh tranh được.
2.4.2 Xu thế phát triển và sự tăng trưởng của hệ nhúng, phần mềm nhúng.
Vì sự phát triển hệ nhúng là sự kết hợp nhuần nhuyễn giữa phần cứng và phần
mềm nên công nghệ gắn liền với nó cũng chính là công nghệ kết hợp giữa các giải
pháp cho phần cứng và mềm. Vì tính chuyên biệt của các thiết bị / hệ nhúng như đã
giới thiệu nên các nền phần cứng cũng được chế tạo để ưu tiên đáp ứng cho chức năng
hay nhiệm vụ cụ thể của yêu cầu thiết kế đặt ra.
Lớp hệ nhúng ưu tiên phát triển theo tiêu chí về kích thước nhỏ gọn, tiêu thụ
năng lượng ít, giá thành thấp. Các chíp xử lý nhúng cho lớp hệ thống ứng dụng đó
thường yêu cầu về khả năng tính toán ít hoặc vừa phải nên hầu hết được xây dựng trên
cở sở bộ đồng xử lý 8 bít ‐16 bit hoặc cùng lắm là 32 bit và không hỗ trợ dấu phảy
động do sự hạn chế về dung lượng và khả năng tính toán.
Lớp hệ nhúng ưu tiên thực thi khả năng xử lý tính toán với tốc độ thực hiện nhanh.
Các chíp xử lý nhúng cho các hệ thống đó cũng sẽ là các Chip áp dụng các công nghệ
cao cấp với kiến trúc xử lý song song để đáp ứng được cường độ tính toán lớn và tốc độ
mà các Chip xử lý đa chức năng thông thường không đạt tới được.
Lớp hệ thống ưu tiên cả hai tiêu chí phát triển của hai lớp trên, tức là kích thước
nhỏ gọn, mức tiêu thụ năng lượng thấp, tốc độ tính toán nhanh. Tuỳ theo sự thoả hiệp
giữa các yêu cầu và xu thế phát triển chính vì vậy cũng không có gì ngạc nhiên khi
chúng ta thấy sự tồn tại song song của rất nhiều các Chip vi xử lý nhúng, vi điều khiển
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 15

nhúng 8 bit, 16 bit hay 32 bit cùng với các Chíp siêu xử lý khác vẫn đang được ứng
dụng rộng rãi cho hệ nhúng. Đó cũng là sự kết hợp đa dạng và sự ra đời của các hệ
nhúng nói chung nhằm thoả mãn các ứng dụng phát triển không ngừng.
Với mỗi một nền phần cứng nhúng thường có những đặc thù riêng và kèm theo
một giải pháp phát triển phần mềm tối ưu tương ứng. Không có một giải pháp nào
chung và chuẩn tắc cho tất cả các hệ nhúng. Chính vì vậy thông thường các nhà phát
triển và cung cấp phần cứng cũng lại chính là nhà cung cấp giải pháp phần mềm hoặc
công cụ phát triển phần mềm kèm theo. Rất phổ biến hiện nay các Chip vi xử lý hay
vi điều khiển đều có các hệ phát triển (Starter Kit hay Emulator) để hỗ trợ cho các nhà
ứng dụng và xây dựng hệ nhúng với hiểu biết hạn chế về phần cứng. Ngôn ngữ mã
hoã phần mềm cũng thường là C hoặc gần giống như C (Likely C) thay vì phải viết
hoàn toàn bằng hợp ngữ Assembly. Điều này cho phép các nhà thiết kế tối ưu và đơn
giản hoá rất nhiều cho bước phát triển và xây dựng hệ nhúng.
Trong xu thế phát triển không ngừng và nhằm thoả mãn được nhu cầu phát
triển nhanh và hiệu quả có rất nhiều các công nghệ cho phép thực thi các giải
pháp hệ nhúng. Đứng sau sự phổ cập rộng rãi của các Chip vi xử lý vi điều khiển
nhúng, DSP phải kể đến các công nghệ cũng đang rất được quan tâm hiện nay như
ASIC, CPLD, FPGA, PSOC và sự tổ hợp của chúng...Kèm theo đó là các kỹ thuật
phát triển phần mềm cho phép đảm nhiệm được các bài toán yêu cầu khắt khe trên cơ
sở một nền phần cứng hữu hạn về khả năng xử lý và không gian bộ nhớ. Giải quyết
các bài toán thời gian thực như phân chia tác vụ và giải quyết cạnh tranh chia sẻ tài
nguyên chung. Hiện nay cũng đã có nhiều nhà phát triển công nghệ phần mềm lớn
đang hướng vào thị trường hệ nhúng bao gồm cả Microsoft. Ngoài một số các hệ
điều hành Windows quen thuộc dùng cho PC, Microsoft cũng đã tung ra các phiên
bản mini như WindowsCE, WindowsXP Embedded và các công cụ phát triển ứng
dụng kèm theo để phục vụ cho các thiết bị nhúng, điển hình như các thiết bị PDA,
một số thiết bị điều khiển công nghiệp như các máy tính nhúng, IPC của Siemens...
Có thể nói hệ nhúng đã trở thành một giải pháp công nghệ và phát triển một
cách nhanh chóng, hứa hẹn nhiều thiết bị nhúng sẽ chiếm lĩnh được thị trường
rộng lớn trong tương lai nhằm đáp ứng nhu cầu ứng dụng không ngừng trong cuộc
sống của chúng ta. Đối với lĩnh vực công nghiệp về điều khiển và tự động hoá, hệ
nhúng cũng là một giải pháp đầy tiềm năng đã và đang được ứng dụng rộng rãi. Nó
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 16

rất phù hợp để thực thi các chức năng thông minh hoá, chuyên biệt trong các hệ thống
và thiết bị công nghiệp, từ các hệ thống tập trung đến các hệ thống phân tán. Giải pháp
hệ nhúng có thể thực thi từ cấp thấp nhất của hệ thống công nghiệp như cơ cấu chấp
hành cho đến các cấp cao hơn như giám sát điều khiển quá trình.

Hình 2.4 Biểu đồ Thị trường hệ thống nhúng năm 2003, 2004, 209(Đơn vị: Triệu
USD)

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 17


CHƯƠNG 3: QUY TRÌNH PHÁT TRIỂN PHẦN MỀM
NHÚNG

3.1 Ngôn ngữ phát triển phần mềm nhúng.
Một trong những ngôn ngữ lập trình có lẽ phổ cập rộng rãi nhất hiện nay là ngôn
ngữ C. So với bất kỳ ngôn ngữ lập trình nào khác đang tồn tại C thực sự phù hợp và
trở thành một ngôn ngữ phát triển của hệ nhúng. Điều này không phải là cố hữu và sẽ
tồn tại mãi, nhưng tại thời điểm này thì C có lẽ là một ngôn ngữ gần gũi nhất để trở
thành một chuẩn ngôn ngữ trong thế giới hệ nhúng. Trong phần này chúng ta sẽ cùng
tìm hiểu tại sao C lại trở thành một ngôn ngữ phổ biến đến vậy và tại sao chúng ta lựa
chọn nó như một ngôn ngữ minh họa cho việc lập trình hệ nhúng.
Sự thành công về phát triển phần mềm thường là nhờ vào sự lựa chọn ngôn
ngữ phù hợp nhất cho một dự án đặt ra. Cần phải tìm một ngôn ngữ để có thể đáp ứng
được yêu cầu lập trình cho các bộ xử lý từ 8‐bit đến 64‐bit, trong các hệ thống chỉ
có hữu hạn về bộ nhớ vài Kbyte hoặc Mbyte. Cho tới nay, điều này chỉ có C là thực sự
có thể thỏa mãn và phù hợp nhất.
Rõ ràng C có một số ưu điểm nổi bật tiêu biểu như khá nhỏ và dễ dàng cho việc
học, các chương trình biên dịch thường khá sẵn cho hầu hết các bộ xử lý đang sử
dụng hiện nay, và có rất nhiều người đã biết và làm chủ được ngôn ngữ này rồi, hay
nói cách khác cũng đã được phổ cập từ lâu. Hơn nữa C có lợi thế là không phụ
thuộc vào bộ xử lý thực thi mã nguồn. Người lập trình chỉ phải tập trung chủ yếu
vào việc xây dựng thuật toán, ứng dụng và thể hiện bằng ngôn ngữ thân thiện thay vì
phải tìm hiểu sâu về kiến thức phần cứng, cũng như rất nhiều các ưu điểm nổi bật
khác của ngôn ngữ bậc cao nói chung.
Có lẽ một thế mạnh lớn nhất của C là một ngôn ngữ bậc cao mức thấp nhất.
Tức là với ngôn ngữ C chúng ta vẫn có thể điều khiển và truy nhập trực tiếp phần cứng
khá thuận tiện mà không hề phải hy sinh hay đánh đổi bất kỳ một thế mạnh nào của
ngôn ngữ bậc cao. Thực chất đây cũng là một trong những tiêu chí xây dựng của
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 18

những người sáng lập ra ngôn ngữ C muốn hướng tới. Thực tế điều này đã được đề
cập đến khi hai nhà sáng lập ra ngôn ngữ C, Kernighan và Ritchie đã đưa vào trong
phần giới thiệu của cuốn sách của họ “The C Programming Language” như sau:
“C is a relatively “low level” language. This characterization is not pejorative; it
simply means that C deals with the same sort of objects that most computers do.
These may be combined and moved about with the arithmetic and logical operators
implemented by real machines…”
Tất nhiên là C không phải là ngôn ngữ duy nhất cho các nhà lập trình nhúng.
Ít nhất hiện nay người ta cũng có thể biết tới ngoài ngôn ngữ C là Assembly, C++, và
Ada.
Trong những buổi đầu phát triển hệ nhúng thì ngôn ngữ Assembly chủ yếu
được sử dụng cho các vi xử lý đích. Với ngôn ngữ này cho phép người lập trình
điều khiển và kiểm soát hoàn toàn vi xử lý cũng như phần cứng hệ thống trong
việc thực thi chương trình. Tuy nhiên ngôn ngữ Assembly có nhiều nhược điểm mà
cũng chính là lý do tại sao hiện nay nó ít được phổ cập và sử dụng. Đó là, việc
học và sử dụng ngôn ngữ Assembly rất khó khăn và đặc biệt khó khăn trong việc
phát triển các chương trình ứng dụng lớn phức tạp. Hiên nay nó chỉ được sử dụng
chủ yếu như điểm nối giữa ngôn ngữ bậc cao và bậc thấp và được sử dụng khi có yêu
cầu đặc biệt về hiệu suất thực hiện và tối ưu về tốc độ mà không thể đạt được bằng
ngôn ngữ khác. Ngôn ngữ Assembly chỉ thực sự phù hợp cho những người có kinh
nghiệm và hiểu biết tốt về cấu trúc phần cứng đích cũng như nguyên lý thực hiện
của bộ lệnh và chíp xử lý.
C++là một ngôn ngữ kế thừa từ C để nhằm vào các lớp ứng dụng và tư duy
lập trình hướng đối tượng và cũng bắt đầu chiếm được số lượng lớn quan tâm trong
việc ứng dụng cho phát triển hệ nhúng. Tất cả các đặc điểm cốt lõi của C vẫn được kế
thừa hoàn toàn trong ngôn ngữ C++ và ngoài ra còn hỗ trợ khả năng mới về trừu
tượng hóa dữ liệu và phù hợp với tư duy lập trình hiện đại; hướng đối tượng. Tuy
nhiên điều này bị đánh đổi bởi hiệu suất và thời gian thực thi do đó chỉ phù hợp với
các dự án phát triển chương trình lớn và không chịu sức ép lớn về thời gian thực
thi.
Ada cũng là một ngôn ngữ hướng đối tượng mặc dù nó không được phổ cập
rộng rãi như C++. Ada được xây dựng bởi cơ quan quốc phòng Mỹ để phục vụ phát
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 19

triển các phần mềm quân sự chuyên dụng đặc biệt. Mặc dù cũng đã được chuẩn hóa
quốc tế (Ada83 và Ada95) nhưng nó vẫn không được phổ cập rộng rãi ngoài việc ứng
dụng chủ yếu trong các lĩnh vực quân sự và hàng không vũ trụ. Và nó cũng dần dần bị
mất ưu thế và sự phổ cập trong thời gian gần đây, đây cũng là một điều đáng tiếc vì
bản thân Ada cũng là một ngôn ngữ có nhiều đặc điểm phù hợp cho việc phát triển
phần mềm hệ nhúng thay vì phải sử dụng C++.
3.2 Quy trình phát triển.
Phần mềm nhúng là một thành phần trong hệ thống nhúng, trước khi đi sâu vào quá trình
phát triển, sau đây là lưu đồ quá trình phát triển của hệ thống nhúng.








Hình 3.1 Lưu đồ quá trình phát triển hệ thống nhúng

Cũng như phần mềm chạy trên PC, phần mềm nhúng cũng có một quy trình phát triển
tương tự. Sau đây ta sẽ tìm hiểu về những bước phát triển phần mềm chung.
Hardware Selection Software
Assembly for
Target System
Test Hardware
OK
YES
END
Developing using
Edit-Test-Debug Cycle
Test result OK
Burn codes using devices
programer
Development Phase
Reassemble on
Hardware Error
Redesign on Software
Error
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 20


3.2.1. Các bước phát triển phần mềm nhúng
Bảng 3.2: Ba bước trong quy trình phát triển một phần mềm nhúng
Bước phát triển Hoạt động
Xác định và
phân tích yêu
cầu hệ thống
Xác định rõ nét các yêu cầu, thông số kĩ thuật là yêu cầu của phần
này. Các yêu cầu kĩ thuật được xác định dữ liệu, chức năng, nhiệm
vụ cần làm.
Dự kiến cách làm, vòng đời của phần mềm, hạn chế của thiết kế.
Dự kiến việc giao tiếp với ngươi dùng, yêu cầu với người dùng
cuối và thời gian hoàn thành phàn mềm
Xác định được khung thời gian phát triển phần mềm.
Phát triển phần
mềm
Thiết kế phần mềm, lập trình và test lỗi là nội dung chính của bước
này. Các giai đoạn chính trong bước phát triển phần mềm : Cấu
trúc dữ liệu, xây dựng chức năng, giao diện người dùng, các thuật
toán và ngôn ngữ lập trình, phương pháp test lỗi (việc kiểm tra, test
lỗi rất quan trọng đối với bất kì phần mềm nào).
Support
Phần mềm nhúng nói riêng ít cần sự hỗ trợ sau khi đã triển khai
phần mềm vào các hệ nhúng xác định. Hỗ trợ ở đây chủ yếu là sửa
chữa những lỗi phát hiện được và nâng cao một số chức năng có
thể.
3.2.2. Một số mô hình phát triển.
Một số mô mình phát triển phần mềm thường dùng như mô hình thác nước, mô
hình tuyến tính, mô hình phát triển nhanh, mô hình xoắn ốc. Sau đây sẽ giới thiệu về mô
hình thác nước – mô hình thường được các nhà phát triển sử dụng để phát triển phần
mềm nhúng do tính đơn giản của nó.
3.2.2.1 Mô hình thác nước

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 21


Hình 3.2 Sơ đồ khối mô hình thác nước.
Mô hình thác nước hay còn gọi là mô hình vòng đời truyền thống do Royce đề
xuất năm 1970. Nó yêu cầu tiếp cận một cách hệ thống, tuần tự và chặt chẽ đối với việc
phát triển phần mềm.
Mô hình thác nước của tiến trình phần mềm.
Quy trình phát triển
Bao gồm việc thu thập yêu cầu ở mức hệ thống với một lượng nhỏ thiết kế và
phân tích ở mức đỉnh.
Phân tích (analysis)
Trước hết việc phân tích yêu cầu được tập trung vào việc thu thập và phân tích các
thông tin cần cho phần mềm, các chức năng phần mềm cần phải thực hiện, hiệu năng cần
có của mỗi chức năng, các giao diện cho người sử dụng, các ràng buộc mà phần mềm cần
tuân thủ khi nó được phát triển và hoạt động. Sau đó, lập tư liệu về yêu cầu cho hệ thống
và phần mềm để khách hàng duyệt lại.
Thiết kế (design)
Thiết kế là quá trình chuyển hóa các yêu cầu phần mềm thành các mô tả thiết kế.
Thiết kế chia làm 2 giai đoạn là: thiết kế logic và thiết kế vật lý. Thiết kế tập trung vào 4
bước chính sau: thiết kế kiến trúc, thiết kế dữ liệu, thiết kế các thủ tục và thiết kế các giao
diện.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 22

Mã hóa (coding)
Mã hóa là dịch các đặc tả thiết kế thành các chương trình mã nguồn trong một
ngôn ngữ lập trình nào đó mà máy có thể thực hiện được.
Kiểm thử (testing)
Khi đã có chương trình mã nguồn ,việc kiểm thử bắt đầu.Tiến trình kiểm thử tập
trung vào phát hiện và sửa lỗi trong trương trình.
Bảo trì (maintenance)
Phần mềm cần phải hoàn thiện trước khi nó được giao cho khách hàng .Đó là việc
kiểm tra va sửa lỗi khi đưa chương trình vào sử dụng, việc thích ứng nó với thay đổi của
môi trường bên ngoài hoặc bổ sung chức năng hay nâng cao hiệu năng cần có khi khách
hàng yêu cầu. Việc bảo trì có thể áp dụng lại các bước của vòng đời phát triển cho hệ
chương trình hiện có khi có nhu cầu tiếp tục phát triển.
Ưu nhược điểm
Vòng đời cổ điển là mô hình có sớm nhất và được sử dụng rộng rãi nhất.Nó đưa ra
các phương pháp khoa học, các bước tổng quát áp dụng được cho nhiều mô hình.Nó tốt
hơn nhiều lần cách tiếp cận tự nhiên.Tuy nhiên,các dự án phần mềm thực tế hiếm khi
tuân theo trình tự tuần tự.Quá trình lặp lại thì dễ gặp bất trắc,mà lặp lại thì khó quản lý
được tiến độ và không đáp ứng được nhu cầu của khách hàng.Mặt khác, khách hàng phải
kiên nhẫn tới cuối dự án mới có chương trình làm việc được. Thời gian thực hiện dự án
theo mô hình này thường dài, các tài liệu đặc tả rất lớn. Nếu chương trình gặp lỗi khi kết
thúc mới phát hiện ra thì có thể sẽ là một thảm họa.
3.2.3 Chi tiết phát triển phần mềm nhúng
3.2.3.1 Phân tích

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 23


Hình 3.3 Sơ đồ phân tích yêu cầu phần mềm nhúng.
Ví dụ: Xét bài toán thiết kế hệ thống điều khiển cho 1 cửa tự động
Giả sử qua quá trình khảo sát thực tế và yêu cầu của bên khác hàng ta phải xác định
được các thông số tối thiểu sau:
a) Yêu cầu:
1) Hệ thống áp dụng cho 1 cửa hai chiều (vào/ra)
2) Cửa cao 2,5m rộng 3m
3) Có người trong phạm vi 2m trước và sau cửa là cửa phải mở
4) Thời gian mở và đóng cửa 3s
5) Cửa đang đóng gặp vật cản phải mở ra ngay
6) Làm việc điện áp 220v/50Hz
7) Chi phí cho bộ điều khiển không quá 10 triệu VNĐ
8) Hệ thống thống có 2 chế độ làm việc tự động và bằng tay
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 24

9) Sensor và công nghệ tuỳ chọn
b) Điều kiện ràng buộc
1) Sử dụng động cơ động lực có sẵn loại AC một pha 220V/50Hz 3kW.
2) Nơi đặt cửa có nhiều người qua lại, nên hệ thống sẽ phải làm việc với tần suất
cao.
3) Điều kiện môi trường: Trong nhà, nhiệt độ từ 18
0
C đến 36
0
C
4) Bộ điều khiển bằng tay đặt cạnh cửa phía bên trong nhà
5) Hệ thống điện cấp mới từ đầu
6) Chịu được quá tải khi gặp chướng ngại vật trong khoảng thời gian dài.
7) ....
Trong các bài toán cụ thể, với các hệ thống mẹ cụ thể, mỗi hệ thống nhúng sẽ có
các yêu cầu khác nhau. Tuy nhiên vẫn có những tiêu chuẩn và yêu cầu chung mà hầu
hết các hệ thống phải tính đến như:
- Tính đến chi phí bảo trì định kỳ
- Kích thước và trọng lượng
- Khả năng thực thi: Thời gian đáp ứng, độ chính xác, độ phân giải, ...
- Nguồn nuôi
- Tính mềm dẻo, khả năng nâng cấp, khả năng tương thích, khả năng phục
hồi sau khi mất nguồn,...
- Thời gian thử
- Thời gian để thương mại sản phẩm
- Độ an toàn
- Khả năng chống lại sự phá hoại hay xâm nhập.
- ...
3.2.3.2. Thiết kế
Xây dựng các thiết kế chi tiết cho cả phần cứng phần mềm, các bản thiết kế này sẽ
được chuyển sang pha thực thi để xây dựng hệ thống. Vì thế ở pha này người thiết kế phải
đưa ra các bản thiết kế như:
1. Sơ đồ khối, sơ đồ thuật toán.
2. Cấu trúc dữu liệu, dữ liệu chia sẻ.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 25

3. Sơ đồ nguyên lý mạch, chi tiết về các đầu vào/ra, loại tín hiệu hay giao thức
giao tiếp.
4. Thông số linh kiện được chọn hoặc có thể thay thế.
5. Các tham số vào/ra cho hệ thống.
6. Lựa chọn thiết bị, công cụ phát triển hệ thống, các tài nguyên sẽ sử dụng.
7. ...
Xây dựng sơ đồ quan hệ giữa các module và các hàm trong hệ thống (call graph), sơ
đồ này mô tả cách thức tương tác giữa phần cứng và phần mềm trong hệ thống.


Hình 3.4 Sơ đồ quan hệ (call graph) phân mềm trong hệ thống điều khiển động cơ
Để phát hiện và hạn chế tối đa các lỗi mà hệ thống sẽ gặp phải sau khi được xây
dựng, ta có thể mô hình hóa các thành phần hoặc toàn bộ hệ thống nếu có thể, nhằm
thử nghiệm hoạt động của hệ thống với các đầu vào và tình huống giả lập, đồng thời
thử nghiệm tính thân thiện của giao diện người dùng.
3.2.3.3 Mã hóa và kiểm thử.
Từ các bản thiết kế, bước này tiến hành xây dựng hoàn thiện hệ thống trên cả
phân mềm và phần cứng. Trong suốt quá trình xây dựng phải tuân thủ theo các bước
và sơ đồ công nghệ từ các bản thiết kế kỹ thuật. Đặc biệt là các tham số vào ra giữa
các hàm, điều này ảnh hưởng đến việc tích hợp các module giữa các nhóm làm việc
khác nhau hay sự kế thừa từ các module khác. Các linh kiện và thiết bị sử dụng phải
tuân thủ theo bản thiết kế, nhằm giúp hệ thống thỏa mãn đầy đủ các thông số rằng
buộc đã được đặt ra ở pha phân tích.
Việc phát triển hệ thống có thể được phân tách thành nhiều nhóm, nhiều phần
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 26

không cần tuân theo tuần tự, hoặc có thể trên nhiều môi trường khác nhau miễn sao
đảm bảo việc trao đổi tham số giữa các module là tương thích và đầy đủ. Nếu chúng ta
phân tách và thiết kế tốt, việc phát triển hệ thống có thể được tiến hành song song,
hoặc kế thừa cái có sẵn, sẽ làm giảm thời gian phát triển hệ thống đáng kể mà vẫn đảm
bảo các yêu cầu đã đặt ra.
Một số các kỹ thuật nhằm phát hiện và hạn chế lỗi mà người phát triển có thể áp
dụng trong pha này là Debug hay mô phỏng Simulation. Tuy nhiên trong một bài toán
cụ thể việc Debug là rất khó, thông thường người phát triển luôn sử dụng một trình mô
phỏng (Simulation) với các phép thử trên các tín hiệu giả lập.
3.2.3.4. Kiểm thử, gỡ lỗi.
Mục tiêu của pha này là đánh giá khả năng thực thi của hệ thống sau khi đã
hoàn thiện, thông thường ta thực hiện các bước sau:
Đầu tiên ta tiến hành gỡ lỗi (debug) và kiểm định cho từng chức năng cơ bản
của hệ thống.
Tiếp theo đánh giá khả năng thực thi của hệ thống dựa trên nhiều tiêu chí khác
nhau như: Tốc độ, độ chính xác, tính ổn định,…
Ngày nay rất nhiều công ty trên nhiều lĩnh vực tuyển dụng nhân sự riêng cho
pha này gọi là testing hay các tester. Nhiệm của của các Tester không chỉ là kiểm các
tính năng của sản phẩm có phù hợp với các yêu cầu đã đề ra hay không, mà còn phải
nghĩ ra các tình huống, các mẫu,… để tìm ra các lỗi mà người thiết kế hay người phát
triển chưa phát hiện ra được.
Các thông tin kết quả của bước này quyết định một sản phẩm có thể được
thương mại hóa hay không, hay phải bắt đầu một chu kỳ mới với pha đầu tiên là pha
phân tích bao gồm các thông tin mới thu thập được từ bước này.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 27


CHƯƠNG 4: TRIỂN KHAI VÀ CÀI ĐẶT PHẦN MỀM NHÚNG

Trong chương này, báo cáo sẽ đưa ra ví dụ minh họa thiết kế một phần mềm
nhúng chi tiết các bước để làm rõ hơn lý thuyết phát triển phần mềm nhúng đã trình bày ở
các Chương trước.
4.1 Ví dụ Thiết kế mạch quang báo giao tiếp bàn phím máy tính.
4.1.1. Cơ sở lý thuyết.
4.1.1.1 Giới thiệu vi điều khiển ATmega16L
4.1.1.1.1 Giới thiệu
ATmega16L là vi điều khiển thuộc họ AVR do hãng Atmel sản xuất. Đây là chip
vi điều khiển 8 bit khá mạnh, có nhiều tính năng, độ ổn định, khả năng tích hợp, sự mềm
dẻo trong việc lập trình và rất tiện lợi.
Các tính năng của ATmega16L :
- Bộ nhớ Flash 16KB, 512 byte EEPROM, 1 KB SRAM cho phép nạp xóa 10000
Flash/100000 EEPROM
- Có 32 chân vào ra dữ liệu chia làm 4 port : PORT A,B,C,D và cả 4 Port đều có
điện trở kéo lên.
- Giao tiếp SPI – Giao tiếp I2C – Có 8 kênh ADC 10 bit
- 2 bộ Timer/Couter 8 bit, 1 bộ Timer/Couter 16 bit
- 1 bộ USART
4.1.1.1.2 Khảo sát sơ đồ chân
Hình 1.1 trình bày sơ đồ chân ATmega16L
- Các PORT A, B, C, D là các Port xuất nhập của ATmega16L
- VCC, GND là các chân cấp nguồn cho vi điều khiển với điện áp hoạt động là 5V
- RESET là chân reset của ATmega16L, tín hiệu reset này tích cực mức thấp.
- XTAL1, XTAL2 là 2 chân tạo bộ dao động ngoài cho vi điều khiển. Tần số thạch
anh sử dụng cho ATmega16L là 0 – 8 MHz.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 28

- AREF là chân lấy điện áp chuẩn khi sử dụng bộ ADC.
- AVCC là chân ổn định điện áp cho bộ biến đổi khi sử dụng bộ ADC.

Hình 4.1 Sơ đồ chân của ATmega16L
4.1.1.1.3 Cấu trúc của ATmega16L
ATmega16L có cấu trúc Havard, trong đó đường truyền cho bộ nhớ dữ liệu và
đường truyền cho bộ nhớ chương trình được tách riêng.
* Bộ nhớ chương trình : là bộ nhớ Flash lập trình được gồm 2 phần : phần đầu chứa các
vector ngắt và phần mã lệnh nằm ngay sau đó.

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 29

16
bits
$028
0000
$029
$1FFF
Program Memory
Các vetor ngắt
Mã lệnh

Hình 4.2 Bộ nhớ chương trình
* Bộ nhớ dữ liệu : Chia thành 5 phần

Hình 4.3 Bộ nhớ dữ liệu

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 30

- Phần 1 : Là phần đầu tiên trong bộ nhớ dữ liệu gồm 32 thanh ghi 8 bit có tên là
Register File (RF). Các thanh ghi này được đặt tên theo thứ tự từ R0 đến R31.
Chúng là nguồn chứa các số hạng trong phép toán và cũng là đích chứa kết quả trả
lại của phép toán
- Phần 2 : nằm ngay sau Register File, gồm 64 thanh ghi nhập/xuất (64 I/O
Register) hay còn gọi là vùng nhớ I/O (I/O Memory). Tất cả các thanh ghi điều
khiển, trạng thái… của thiết bị đều nằm ở đây. Việc điều khiển các Port có liên
quan đến 3 thanh ghi DDRx, PORTx và PINx (x là tên của Port), tất cả 3 thanh ghi
này đều nằm trong vùng nhớ I/O.
o Thanh ghi DDRx : thanh ghi điều khiển hướng dữ liệu vào/ra cho các chân
của cổng. Viết giá trị 1 vào một bit trong thanh ghi DDRx thì chân tương
ứng của PORTx sẽ là chân xuất, ngược lại giá trị 0 thì chân tương ứng sẽ là
ngõ nhập.
o Thanh ghi PORTx : thanh ghi xác lập điện trở kéo lên.
o Thanh ghi PINx : dùng để đọc giá trị logic trên các chân của PORTx
- Phần 3 : RAM tĩnh, nội (Internal SRAM), là vùng chứa các biến tạm thời trong
lúc thực thi chương trình.
- Phần 4 : RAM ngoại, chỉ tồn tại khi gắn thêm bộ nhớ ngoài
- Phần 5 : EEPROM, bộ nhớ này không bị xóa ngay cả khi mất điện, thích hợp cho
việc lưu dữ liệu. Phần bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ
0x0000.
4.1.1.1.4 Truyền thông nối tiếp đồng bộ và không đồng bộ (USART)
Vi điều khiển ATmega16L có 1 bộ USART. Có 3 chân liên quan đến module này
là chân xung nhịp (XCK), chân truyền dữ liệu (TXD), chân nhận dữ liệu (RXD).
Có 5 thanh ghi liên quan đến việc điều khiển và hoạt động của USART là:
* UDR : là thanh ghi dữ liệu, là thanh ghi 8 bit có chức năng chứa giá trị nhận được và
phát đi của USART.



Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 31


*
UCSRA : là 1 trong 3 thanh ghi điều khiển hoạt động của USART, thanh ghi này chủ
yếu chứa các bit trạng thái

Bảng 4.3 Thanh ghi UCSRA
- RXC : báo quá trình nhận kết thúc
- TXC : báo quá trình truyền kết thúc.
- UDRE : báo thanh ghi dữ liệu đang trống.
- FE : khung truyền có lỗi
- DOR : dữ liệu tràn.
- PE : kiểm tra Parity có lỗi.
- U2X : bit chỉ định gấp đôi tốc độ truyền
- MPCM : bit chọn chế độ hoạt động đa xử lý.
* UCSRB : thanh ghi quan trọng điều khiển USART

Bảng 4.4 Thanh ghi UCSRB
- RXCIE : bit cho phép ngắt khi quá trình nhận kết thúc.
- TXCIE : bit cho phép ngắt khi quá trình truyền kết thúc.
- UDRIE : bit cho phép ngắt khi thanh ghi UDR trống.
- RXEN : bit điều khiển bộ nhận của USART, để kích hoạt chức năng nhận dữ liệu
phải set bit này lên 1.
- TXEN : bit điều khiển bộ truyền phát
Bảng 4.1 Thanh ghi UDR
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 32

- UCSZ2 : bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy định độ dài
của dữ liệu truyền nhận.
- RXB8 : đóng vai trò là bit nhận thứ 9 trong chế độ truyền thông 9 bit, 8 bit đầu
được chứa trong UDR.
- TXB8 : đóng vai trò là bit truyền thứ 9 trong chế độ truyền thồng 9 bit, 8 bit đầu
được chứa trong UDR.
* UCSRC : thanh ghi quy định khung truyền và chế độ truyền

Hình 4.4 Thanh ghi UCSRC
Thanh ghi này có địa chỉ trùng với thanh ghi UBRRH (thanh ghi chứa byte cao
dùng để xác lập tốc độ baud). Vì thế bit thứ 7 trong thanh ghi này, tức bit URSEL là bit
chọn thanh ghi. Khi URSEL=1 thì thanh ghi UCSRC được chọn, nếu URSEL=0 thì thanh
ghi UBRRH được chọn.
- UMSEL : bit chọn chế độ truyền thông đồng bộ và không đồng bộ. Nếu
UMSEL=1 thì chế độ đồng bộ được kích hoạt, nếu UMSEL=0 thì chế độ không
đồng bộ được sử dụng.
- UPM1 và UPM0 : hai bit được dùng để quy định kiểm tra Parity. Nếu UPM1:0=00
thì Parity không được sử dụng, nếu UPM1:0=10 thì Parity chẵn được dùng, nếu
UPM1:0=11 thì Parity lẻ được dùng.
- USBS : bit Stop trong khung truyền, nếu USBS=1 thì sẽ có 2 Stop bit, nếu
USBS=0 thì sẽ có 1 Stop bit.
- UCSZ1 và UCSZ0 : hai bit này kết hợp với bit UCSZ2 trong thanh ghi UCSRB
quy định độ dài dữ liệu truyền. Bảng 1.1 tóm tắt các giá trị có thể của tổ hợp 3 bit
này và độ dài truyền dữ liệu tương ứng.



Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 33


Bảng 5.5 Độ dài dữ liệu truyền
- UCPOL : bit chỉ chế độ xung kích trong chế độ truyền thông đồng bộ. Nếu
UCPOL=0 thì dữ liệu thay đổi ở cạnh lên của xung, nếu UCPOL=1 thì dữ liệu
thay đổi ở cạnh xuống của xung.
* UBRRH và UBRRL : hai thanh ghi thấp và cao quy định tốc độ baud

Hình 4.5 Thanh ghi UBRRH và UBRRL
Như trong hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp
với 8 bit trong thanh ghi UBRRL tạo thành 12 bit quy định tốc độ baud. Nếu ghi vào
thanh ghi UBRRL thì tốc độ baud sẽ tức thì được cập nhật. Vì thế phải ghi vào UBRRH
trước sau đó mới ghi vào UBRRL.
Bảng 1.2 trình bày cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và
ngược lại, cách tính giá trị cần thiết cho thanh ghi UBRR khi đã biết tốc độ baud.




Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 34


Bảng 4.6 Tính tốc độ Baud

4.1.1.2 Led ma trận
Led ma trận là 1 tập hợp các led đơn được bố trí theo ma trận hình chữ nhật hay
vuông, cho phép hiển thị ký tự bất kỳ. Trên thị trường có các loại ma trận led được tích
hợp sẵn như 7x5 ( 7 hàng và 5 cột), 8x8 (8 hàng và 8 cột) .v.v.

Hình 4.6 Led ma trận 8x8
Trong led ma trận : theo hàng thì các anode được nối chung, theo cột thì các
cathode được nối chung. Như vậy với led ma trận 7x5 thì có 7 hàng và 5 cột. Anode nối
với mức cao(H) và cathode nối với mức thấp(L) thì led sáng, các trường hợp còn lại led
tắt. Hình 1.10 hiển thị chữ A trên led ma trận 8x8, có 2 cách hiển thị chữ A :

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 35


Hình 4.7 Sáng chữ A
Cách 1 : mã quét gởi ra cột và dữ liệu gởi ra hàng:
- Chọn cột 1 (bằng cách kéo cột 1 xuống mức L) các cột còn lại ở mức H , sau đó
gởi byte dữ liệu ra 8 hàng (led nào sáng thì bit tương ứng bằng 1, led nào tắt thì bit
tương ứng bằng 0).
- Chọn cột 2 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
- Chọn cột 3 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
- Chọn cột 4 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
- Chọn cột 5 sau đó gửi byte dữ liệu tương ứng ra 8 hàng.
Do tốc độ quét nhanh nên chúng ta sẽ thấy sáng cả chữ A.
Các byte dữ liệu có thể sử dụng chương trình tạo mã ma trận để lấy mã dễ dàng.
Với led ma trận 8x8, nếu chọn dòng làm việc cho 1 led là 20mA thì dòng cần cho
1 cột sẽ là 20 mA * 8= 160 mA. Vì thế cần đảm bảo cấp đủ dòng để led ma trận được
sáng rõ.
- Ưu điểm :
o Khi mở rộng thêm led chỉ cần kết nối song song 8 hàng và cột dùng thanh ghi
dịch rất đơn giản do số đường điều khiển ít.
o Mỗi 1 thời điểm chỉ có 1 cột sáng nên dòng tiêu thụ thấp
o Mạch đơn giản.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 36

- Khuyết điểm :
o Bị giới hạn số cột vì khi mở rộng càng nhiều cột thì thời gian tắt của led tăng
thêm. Giả sử có 100 cột thì thời gian sáng của mỗi cột bằng 1/100, thời gian tắt
bằng 99/100.
Cách 2 : mã quét gửi ra hàng và dữ liệu gửi ra cột
- Chọn hàng 1 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 2 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 3 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 4 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 5 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 6 sau đó đưa dữ liệu tương ứng ra các cột
- Chọn hàng 7 sau đó đưa dữ liệu tương ứng ra các cột
- Ưu điểm :
o Khi tăng thêm led => số cột tăng lên thì thời gian sáng/tắt của led vẫn khổng
đổi là 1/8.
- Khuyết điểm :
o Dòng cấp cho led lớn
o Do số cột tăng nên cần nhiều thời gian để đưa dữ liệu ra cột
o Với bảng quảng cáo led lớn có nhiều led phải sử dụng IC có tốc độ cao để
quét.
4.1.1.3 Bàn phím PS/2
4.1.1.3.1 Sơ đồ chân

Hình 4.8 Cổng PS/2
Cổng PS/2 gồm có 6 chân trong đó chỉ sử dụng 4 chân :
+ VCC và GND cấp nguồn 5V cho bàn phím
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 37

+ DATA : đường dữ liệu
+ CLOCK : đường xung clock
4.1.1.3.2 Nguyên lý hoạt động
Khi một phím bất kỳ trên bàn phím được nhấn, nó sẽ phát ra 1 mã hex cố định, mã
này được gọi là “scan code”. Theo sau mã scan code là mã “break code” để xác định
phím đó được nhả, nó gồm có 2 byte : byte đầu thường là F0, byte thứ 2 lặp lại byte mã
scan code. Bảng 1.3 trình bày mã scancode của một số phím trên bàn phím.

Hình 4.9 Mã scancode của bàn phím
4.1.1.3.3 Giao thức của bàn phím
Có 2 chế độ giao tiếp : chế độ từ bàn phím đến thiết bị chủ và chế độ từ thiết bị
chủ đến bàn phím. Trong đề tài này sẽ không trình bày chế độ giao tiếp từ thiết bị chủ
đến bàn phím, chỉ tập trung vào chế độ từ bàn phím đến thiết bị chủ.
Bàn phím ở trạng thái nghỉ sẵn sàng để gửi dữ liệu chỉ khi cả 2 đường DATA và
CLOCK đều ở mức cao. Để truyền dữ liệu được chính xác thì khung truyền 11 bit được
sử dụng. Bit đầu tiên là bit Start (mức 0), theo sau là 8 bit dữ liệu (bit LSB được truyền
trước), 1 bit Parity (Odd Parity) và kết thúc là bit Stop (mức 1).

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 38


Hình 4.10 Giản đồ thời gian truyền 1 byte từ bàn phím đến thiết bị chủ

Dữ liệu được thay đổi tại cạnh lên của xung Clock và để thu được dữ liệu chính
xác thì phải đọc ngay tại cạnh xuống của xung Clock.
Để thu dữ liệu có thể sử dụng ngắt cạnh xuống của vi điều khiển hoặc dùng chế độ
truyền thông nối tiếp đồng bộ (USART) của vi điều khiển.
4.1.2 Sơ đồ khối.
4.1.2.1 Sơ đồ khối.
Bàn phím
Vi điều
khiển
Led ma trận
Điều khiển
hàng
Điều khiển cột

Hình 4.11 Sơ đồ khối
4.1.2.2 Chức năng các khối
- Khối Bàn phím :
Sử dụng bàn phím để nhập chữ hoặc ký tự cần hiển thị lên led ma trận
- Khối Vi điều khiển :
Dùng vi điểu khiển để xuất tín hiệu cho khối điều khiển cột và xuất dữ liệu ra khối
điều khiển hàng để hiển thị được chữ hoặc ký tự lên led ma trận
- Khối điều khiển hàng :
Nhiệm vụ của khối này là đưa dữ liệu ra hàng của led ma trận và đệm dòng cho
hàng để đảm bảo cấp đủ dòng cho led ma trận.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 39

- Khối điều khiển cột :
Thực hiện việc quét cột led ma trận liên tục để chữ hoặc ký tự được hiển thị. Đồng
thời cũng cần đệm dòng cho cột để đảm bảo độ sáng của led ma trận
- Khối led ma trận :
Hiển thị chữ hoặc ký tự.

4.1.3 Thiết kế

4.1.3.1 Thiết kế các khối
Dựa trên sơ đồ khối đã thiết kế, nhóm thực hiện đề tài bắt đầu thiết kế từng khối
- Khối bàn phím : sử dụng bàn phím máy tính chuẩn PS/2. Cấu tạo bàn phím thường là 101 hoặc 102
phím, với đầy đủ các phím ký tự và phím số, dễ dàng trong việc soạn thảo để hiển thị.
- Khối vi điều khiển : dùng vi điều khiển ATmega16L với 1 KB SRAM đủ dung lượng để nhận nhiều ký
tự từ bàn phím.
- Khối điều khiển hàng : dùng IC ULN2803 đệm cho hàng (vì IC ULN2803 là đệm đảo nên bảng mã led
ma trận sẽ bị đảo), kết hợp sử dụng transistor npn D468 với dòng Ic=1 A đảm bảo dòng cung cấp đủ cho
các hàng của led ma trận.
- Khối điều khiển cột : dùng IC dịch 74HC595 để quét cột của led ma trận. Vì dòng ngõ ra của IC
74HC595 chỉ là 20mA không đủ để đệm dòng cho cột của led ma trận, phải sử dụng thêm IC ULN2803
để đệm dòng cho cột
- Khối led ma trận : dùng 4 led ma trận 8x8 1 màu để hiển thị chữ hoặc ký tự được nhập từ bàn phím.
4.1.3.2 Sơ đồ nguyên lý
Để đỡ phức tạp trong việc vẽ mạch in, sơ đồ nguyên lý được chia làm 2 mạch :
mạch vi điều khiển và mạch led ma trận.
4.1.3.2.1 Mạch nguyên lý mạch vi điều khiển






Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 40























Hình 4.12 Mạch nguyên lý mạch vi điều khiển
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 41


4.1.3.2.2 Mạch nguyên lý mạch led ma trận

Hình 4.13 Mạch nguyên lý mạch led ma trận
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 42


4.1.3.3 Linh kiện sử dụng trong mạch

Số thứ
tự
Tên linh kiện
Số lượng
1 Vi điều khiển ATmega16L 1
2 IC ULN2803 5
3 IC 74HC595 4
4 Transistor NPN D468 8
5 IC ổn áp 7805 2
6 Domino 2 2
7 Jack nguồn DC 2
8 Điện trở thanh 4k7 1
9 Điện trở 10k 9
10 Thạch anh 8 Mhz 1
11 Điện trở 1k 1
12 Điện trở 680 ohm 1
13 Led 3mm 2
14 Led ma trận 8x8 4
15 Tụ 1000uF/16V 1
16 Tụ 100uF/50V 1
17 Tụ 10uF/50V 1
18 Tụ 2.2uF/50V 1
19 Tụ 104 1
20 Tụ 22p 2
21 Cổng PS/2 1
22 Nút nhấn mềm 1
Bảng 4.7 Linh kiện sử dụng trong mạch

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 43

4.1.4 Cài đặt và kiểm thử.
4.1.4.1 Sơ đồ mạch in
Từ sơ đồ nguyên lý đã thiết kế, nhóm thực hiện đề tài tiến hành vẽ mạch in
4.1.4.1.1 Mạch in mạch vi điều khiển

Hình 4.14 Mạch in mạch vi điều khiển

Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 44

4.1.4.1.2 Mạch in mạch led ma trận

Hình 4.15 Mạch in mạch led ma trận
4.1.4.2 Hàn và lắp linh kiện
Sau khi vẽ xong mạch in, nhóm thực hiện đề tài đem sơ đồ mạch in đi in, sau đó là tiến
hành ủi và rửa mạch.
Kế đến nhóm thực hiện đề tài gắn và hàn các linh kiện lên mạch. Trong quá trình
gắn và hàn linh kiện nhóm thực hiện đề tài đã chú ý đến : gắn đúng chân của các
transistor, sử dụng thêm đế IC để khi hàn không làm hỏng IC, gắn đúng chiều các IC lên
đế.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 45

4.1.4.3 Kết quả thi công
Sau khi đã hàn và ráp linh kiện, nhóm thực hiện đề tài kiểm tra mạch (kiểm tra các
mối hàn xem có bị dính với nhau không, kiểm tra các linh kiện có bị gắn ngược không…)
và bắt đầu viết code cho mạch.
Khi code đã hoàn thành, nhóm thực hiện đề tài tiến hành nạp code cho vi điều
khiển và chạy thử. Mạch chạy đúng và đạt yêu cầu. Khi nhập các ký tự bất kỳ trên bàn
phím sẽ hiển thị đúng các ký tự đó trên led ma trận

Hình 4.16 Mạch thực tế
4.2. Kết luận từ Ví dụ thực tế.
Qua kiến thức được học từ các môn học trước như lập trình C++, cấu trúc dữ liệu
và giải thuật, và với hiểu biết tự mày mò được trong quá trình làm Bài tập lớn. Nhóm đã
tự xây dựng được ví dụ Thiết kế mạch quang báo giao tiếp bàn phím máy tính thành
công. Qua đó kiểm nghiệm được tính đúng đắn của mô hình phát triển phần mềm nhúng,
từ các bước như phân tích, thiết kế, lập trình, cài đặt … hay giao tiếp với cả phần cứng.
Chỉ cần áp dụng đúng với quy trình phát triển, thiết kế phần mềm nhúng, chúng ta
sẽ tạo ra phần mềm dễ dàng hơn, rút ngắn thời gian phát triển và quan trọng không kém
đó là khắc phục lỗi phát sinh trong quá trình cài đặt và sử dụng.
Quy trình phát triển phần mềm nhúng Nhóm 19 KHMT2 K5
Giảng viên – Thạc sỹ : Hoàng Quang Huy 46




TÀI LIỆU THAM KHẢO
[1.] Giáo trình hệ thống nhúng, Trường Đại học Hàng Hải.
[2.] Raj Kamal, Embedded System Architecture - Programing and Design, NXB Mc
Graw-Hill 2003
[3.] Michelle Bar, Programing Embedded System in C and C++, Oreilly 1999.
[4.] http://en.wikipedia.org/wiki/Embedded_software, Embedded Software , Truy cập
cuối : 1/2013.

Quy trình phát triển phần mềm nhúng

Nhóm 19 KHMT2 K5

LỜI NÓI ĐẦU
Trong thế giới hiện đại ngày nay, khi mà Công nghệ thông tin quan trọng hơn bao giờ hết, sự phát minh các máy móc ngày càng phức tạp để phục vụ sản xuất và đời sống, vấn đề áp dụng phần mềm nhúng vào máy móc để điều khiển theo ý muốn con người càngđược đặt lên hàng đầu. Con người ngày càng nâng cao yêu cầu về tính năng của máy móc lẫn phần mềm chạy trên nó để phục vụ cho những mục đích, yêu cầu khác nhau. Do đó cần thiết phải có một quy trình phát triển hệ nhúng nói chung và phần mềm nhúng nói riêng trở nên cần thiết để tạo ra những phần mềm nhanh hơn, tiết kiệm hơn và ít hỏng hóc hơn.. Tài liệu là Bài Tập Lớn của nhóm Sinh Viên lớp KHMT2-K5, trường Đại Học Công Nghiệp Hà Nội với đề tài Trình bày về Quy trình phát triển phần mềm nhúng , sẽ đưa đến kiến thức sơ lược về hệ nhúng, phần mềm nhúng,ứng dụng, cơ sở lý thuyết cũng như quy trình phát triển của nó nó. Mặc dù đã hết sức cố gắng nhưng vẫn không tránh khỏi một số thiếu sót, hy vọng được người đọc góp ý chân thành. Nhóm Sinh Viên xin được gửi lời cảm ơn chân thành tới Giảng Viên – Thạc sỹ Hoàng Quang Huy đã tận lòng giúp đỡ, hướng dẫn trong quá trình học tập môn học. Hà Nội, ngày 4 tháng 1 năm 2013 Nhóm Sinh Viên. Nguyễn Văn Hậu Nguyễn Bách Phong

Giảng viên – Thạc sỹ : Hoàng Quang Huy

2

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->