You are on page 1of 117

1

Mục lục
Chương I: TỔNG QUAN 5
1.1. Mở đầu.............................................................................................................................5
1.2. Khái niệm về hệ nhúng....................................................................................................6
1.3. Vai trò của hệ thống nhúng trong sự phát triển của lĩnh vực công nghệ cao “3C “........7
1.4. Đặc tính, phương pháp thiết kế và xu thế phát triển của các hệ nhúng...........................9
1.5. Môi trường thông minh..................................................................................................10
1.6. Các hệ điều hành nhúng và phần mềm nhúng...............................................................11
1.6.1. Hệ điều hành nhúng................................................................................................11
1.6.2. Phần mềm nhúng.....................................................................................................11
Chương II: LÝ THUYẾT THIẾT KẾ HỆ THỐNGNHÚNG 13
2.1. Quy trình thiết kế Top-Down.........................................................................................13
2.1.1. Pha phân tích...........................................................................................................13
2.1.2. Pha thiết kế nguyên lý.............................................................................................15
2.1.3. Pha thiết kế kỹ thuật................................................................................................16
2.1.4. Pha xây dựng hệ thống............................................................................................17
2.1.5. Pha kiểm tra............................................................................................................17
2.2. Quy trình Bottom-Up.....................................................................................................18
2.3. Đặc tả hệ thống..............................................................................................................19
2.3.1. Khái niệm đặc tả (specification).............................................................................19
2.3.2. Tại sao cần đặc tả....................................................................................................19
2.3.3. Phân loại các kỹ thuật đặc tả...................................................................................21
2.3.4. Ứng dụng và ưu việt khỉ sử dụng đặc tả.................................................................21
2.3.5. Phương pháp đặc tả sử dụng “Máy trạng thái hữu hạn FSM(Finite state machine)”
...........................................................................................................................................22
2.4. Các phương pháp biểu diễn thuật toán...........................................................................23
2.4.1. Ngôn ngữ tự nhiên..................................................................................................23
2.4.2. Dùng lưu đồ............................................................................................................24
2.4.3. Mã giả.....................................................................................................................27
Chương III: CẤU TRÚC PHẦN CỨNG 28
3.1. Cấu trúc tổng quát của hệ thống nhúng.........................................................................28
3.1.1. Kiến trúc cơ bản......................................................................................................28

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
2

3.1.2. Cấu trúc phần cứng.................................................................................................28


3.2. Một số nền phần cứng thông dụng.................................................................................37
3.3.1. Họ vi điều khiển 8051.............................................................................................37
3.3.2. Họ vi điều khiển AVR............................................................................................38
3.3.3. Họ vi điều khiển PsoC............................................................................................39
3.3.4. Họ vi điều khiển ARM............................................................................................40
3.3.5. Họ vi điều khiển PIC...............................................................................................43
3.4. Một số vi mạch thường dùng.........................................................................................65
3.4.1. Nhóm linh kiện số...................................................................................................65
3.4.2. Nhóm linh kiện tương tự.........................................................................................71
3.4.4. Nhóm hiển thị.........................................................................................................74
3.4.4. Nhóm chuyển đổi dữ liệu........................................................................................75
3.4.5. Nhóm IC chức năng................................................................................................76
3.4.6. Một số ví dụ điển hình............................................................................................79
3.5. Công cụ thiết kế, mô phỏng và kiểm thử phần cứng.....................................................83
3.5.1. Công cụ thiết kế phần cứng....................................................................................83
3.5.2. Công cụ mô phỏng..................................................................................................86
3.5.3. Công cụ kiểm thử....................................................................................................87
Chương IV: PHẦN MỀM NHÚNG.................................................................................88
4.1. Đặc điểm phần mềm nhúng...........................................................................................88
4.2. Lập trình nhúng với C....................................................................................................88
4.2.1. Giới thiệu về CCS...................................................................................................89
4.2.2. Cấu trúc chương trình.............................................................................................89
4.2.3. Các kiểu dữ liệu......................................................................................................90
4.2.4. Một số chỉ thị tiền xử lý..........................................................................................90
4.2.5. Hàm tạo trễ DELAY...............................................................................................92
4.2.6. Hàm truy cập các kênh ADC..................................................................................93
4.2.7. Các hàm truy xuất vào ra........................................................................................95
4.3. Một số kỹ thuật lập trình nhúng.....................................................................................97
4.3.1. Xử lý ngắt...............................................................................................................97
4.3.2. Xử lý TIMER........................................................................................................100

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
3

4.3.3. Truyền thông chuẩn RS232..................................................................................102


4.4. Hệ điều hành nhúng.....................................................................................................105
4.4.1. Khái niệm và yêu cầu chung.................................................................................105
4.4.2. Bộ nạp khởi tao Boot – loader..............................................................................107
4.4.3. Hệ điều hành thời gian thực..................................................................................109

Danh mục hình ảnh


Hình 1: Một số ví dụ về các thống nhúng thông dụng................................................................5
Hình 2: Sơ đồ khối quy trình Top-Down..................................................................................13
Hình 3: Sơ đồ tổng quát của 1 hệ thống điều khiển động cơ....................................................15
Hình 4: Sơ đồ quan hệ (call graph) giữa các module phần cứng và phân mềm trong hệ thống
điều khiển động cơ....................................................................................................................16
Hình 5: Sơ đồ khối quy trình Bottom-Up.................................................................................19
Hình 6: Biểu đồ so sánh chi phí phát triẻn hệ thống sử dụng dặc tả và không sử dụng...........21
Hình 7: Đặc tả cách thức làm việc của một máy điện thoại sử dụng máy trạng thái hữu hạn..22
Hình 8: Lưu đồ biểu diễn thuật toán giải phương trình bậc 2...................................................25
Hình 9: Kiến trúc cơ bản của 1 HTN........................................................................................27
Hình 10: Cấu trúc thông dụng của một VXL/VĐK nhúng.......................................................28
Hình 11: Ví dụ về kiến trúc của họ VĐK AVR........................................................................29
Hình 12: Sơ đồ khối chức năng PIC16F873A..........................................................................30
Hình 13: CPU............................................................................................................................30
Hình 14: Kiến trúc bộ nhớ Von Newmann và Havard.............................................................31
Hình 15: Nguyên lý cấu tạo và hoạt động xóa của EPROM....................................................32
Hình 16: Cấu trúc nguyên lý bộ nhớ RAM...............................................................................33
Hình 17: Nguyên lý điển hình của 1 cổng I/O..........................................................................33
Hình 18: Nguyên lý kết nối 1 Master và 1 Slave sử dụng SPI.................................................35
Hình 19: Sơ đồ kết nối SPI 1 Master với nhiều Slaver.............................................................35
Hình 20: Cấu trúc tông quan của vi điều khiển họ 8051 của intel............................................36
Hình 21: Một vài sản phẩm công nghệ tiêu biểu ứng dụng bộ xử lý ARM..............................40
Hình 22: Sơ đồ khối của 1 chip ARM core ARM7..................................................................43
Hình 23: Sơ đồ chân PIC 18F452.............................................................................................46
Hình 24: Cấu trúc bộ nhớ của 18F452......................................................................................48
Hình 25: Sơ đồ khối PIC18F452...............................................................................................49
Hình 26: Sơ đồ khối gắp nối vào ra số......................................................................................50
Hình 27: Sơ đồ khối timer0 chế độ 8bit....................................................................................51
Hình 28: Sơ đồ khối của timer0 ở chế độ 16bit........................................................................51
Hình 29: Sơ đồ khối timer1.......................................................................................................52
Hình 30: Sơ đồ khối Timer2.....................................................................................................53

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
4

Hình 31: Sơ đồ khối timer3.......................................................................................................54


Hình 32: Sơ đồ giao tiếp chuẩn RS232.....................................................................................54
Hình 33: Sơ đồ khối truyền dữ liệu UART................................................................................56
Hình 34: Sơ đồ khối và giản đồ thời gian nhận dữ liệu............................................................58
Hình 35: Biểu đồ khối chuyển đổi ADC...................................................................................60
Hình 36: Sơ đồ khối timer.......................................................................................................108
Hình 37: Kiến trúc một HĐH..................................................................................................113
Hình 38: Nguyên lý thực hiện của boot - loader.....................................................................116
Hình 39: Cấu trúc của một boot - loader.................................................................................117
Hình 40: So sánh kiến trúc RTOS và OS chuẩn.....................................................................118
Hình 41: Cấu trúc một RTOS.................................................................................................118
Hình 42: Mô hình trạng thái của quá trình..............................................................................120

Tài liệu tham khảo


1. Bình, N. T. (2008). Bài giảng: Các kỹ thuật đặc tả. Đại học Bách khoa Đà nẵng.
2. Công, N. H. (2007). Hệ thống nhúng và sự phát triển của lĩnh vực công nghệ cao "3C".
ĐH KTCN Thái Nguyên.
3. John Regehr, Assist.Prof.Dr.Osman Kaan EROL. (2009). Embedded System Design.
4. Việt, T. L. (2008). HỆ THỐNG ĐIỀU KHIỂN NHÚNG. Hà Nội: ĐH BKHN.
5. Wikipedia. (2010). Retrieved from Wikipedia, Bách khoa toàn thư mở:
http://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh%C3%BAng

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
5

Chương I: TỔNG QUAN


Mục tiêu của chương
Giúp sinh viên hiểu được khái niệm và nhận diện được một hệ thống nhúng,
nắm bắt được nhu cầu và vài trò quan trọng của hệ thông nhưng trong sự phát triển của
ngành công nghệ cao.
Tóm tắt
Giới thiệu và nếu khái niệm hệ thống nhúng. Trình bày vai trò của hệ thống
nhúng trong ngành công nghệ cao.
1.1. Mở đầu
Trong sự phát triển mạnh mẽ của khoa học kĩ thuật với nền kinh tế trí thức và
xu hướng hội nhập toàn cầu như hiện nay, thế giới và Việt Nam đang thực hiện việc
kết hợp giữa các ngành thuộc lĩnh vực công nghệ cao trong một Khoa hoặc cơ sở đào
tạo. Đó là lĩnh vực khoa học dưới 3 ngọn cờ: Máy tính, Điện tử- Viễn thông và Điều
khiển tự động mà ta thường gọi là “3 C” (Computer – Communication - Control). Có
thể nói, các quá trình sản xuất và quản lí hiện nay như: các hệ thống đo lường điều
khiển tự động trong sản xuất công nghiệp; các hệ thống di động và không dây tiên tiến,
các hệ thống thông tin vệ tinh, các hệ thống thông tin dựa trên Web, chính phủ điện tử,
thương mại điện tử, các cơ sở dữ liệu của nhiều ngành kinh tế và của Quốc gia, các hệ
thống thiết bị Y tế hiện đại, các thiết bị điện tử dân dụng, ... đều là sản phẩm của sự kết
hợp giữa các lĩnh vực khoa học trên. Bài báo giới thiệu việc ứng dụng hệ thống nhúng
trong sự phát triển của lĩnh vực công nghệ cao”3C”. Bài viết phỏng theo bài phát biểu
của PGS.TSKH Phạm Thượng Cát- Viện Công nghệ Thông tin.
Hiện nay chúng ta đang ở thời đại hậu PC sau giai đoạn phát triển của máy tính
lớn (Mainframe) 1960-1980, và sự phát triển của PC-Internet giai đoạn 1980-2000.
Giai đoạn hậu PC-Internet này được dự đoán từ năm 2000 đến 2020 là giai đoạn của
môi trường thông minh mà hệ thống nhúng là cốt lõi và đang làm nên làn sóng đổi mới
trong công nghệ thông tin nói riêng và lĩnh vực công nghệ cao “3C”, nói chung. Một
thực tế khách quan là thị trường của các hệ thống nhúng lớn gấp khoảng 100 lần thị
trường PC, trong khi đó chúng ta mới nhìn thấy bề nổi của công nghệ thông tin là PC
và Internet còn phần chìm của công nghệ thông tin chiếm 99% số processor trên toàn
cầu này nằm trong các hệ nhúng thì còn ít được biết đến.
Sức đẩy của công nghệ đưa công nghệ vi điện tử, công nghệ vi cơ điện, công
nghệ sinh học hội tụ tạo nên các chip của công nghệ nano, là nền tảng cho những thay
đổi cơ bản trong lĩnh vực công nghệ cao “3C, sức kéo của thị trường đòi hỏi các thiết
bị phải có nhiều chức năng thân thiện với người dùng, có mức độ thông minh ngày

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
6

càng cải thiện đưa đến vai trò và tầm quan trọng của các hệ thống nhúng ngày càng
cao trong nền kinh tế quốc dân.
Phát triển các hệ nhúng và phần mềm nhúng là quốc sách của nhiều quốc gia
trên thế giới, nhất là giai đoạn hậu PC hiện nay. Ở nước ta đáng tiếc lĩnh vực này lâu
nay đã bị lãng quên, do vậy cần có những điều chỉnh phù hợp trong chiến lược phát
triển để có thể theo kịp, rút ngắn khoảng cách tụt hậu đối với các nước trong khu vực
và trên thế giới trong quá trình hội nhập nền kinh tế toàn cầu không thể tránh khỏi hiện
nay.
1.2. Khái niệm về hệ nhúng
Hệ thống nhúng (tiếng Anh: Embedded system) là một thuật ngữ để chỉ một hệ
thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ.
Hệ thống nhúng có vai trò đảm nhận một phần công việc cụ thể của hệ thống mẹ. Hệ
thống nhúng có thể là một hệ thống phần cứng và cũng có thể là một hệ thống phần
mềm. (Wikipedia, 2010)
Ví dụ quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi cơm điện, điều
hòa, điện thoại di động, ô tô, máy bay, tàu thủy, các đầu đo, cơ cấu chấp hành thông
minh v.v... ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong
cuộc sống của chúng ta.

Hình 1: Một số ví dụ về các thống nhúng thông dụng


Các nhà thống kê trên thế giới đã thống kê được rằng số chip vi xử lý ở trong
các máy PC và các server, các mạng LAN, WAN, Internet chỉ chiếm khoảng 1% tổng
số chip vi xử lý có trên thế giới, 99% số vi xử lý còn lại nằm trong các hệ thống
nhúng.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
7

Như vậy công nghệ thống không chỉ đơn thuần là PC, mạng LAN, WAN,
Internet phần mềm quản lý ... như nhiều người thường nghĩ. Đó chỉ là bề nổi của một
tảng băng chìm. Phần chìm của công nghệ thông tin chính là các ứng dụng của các hệ
nhúng có mặt trong mọi ngành nghề của đời sống xã hội hiện nay.
Các hệ nhúng được tích hợp trong các thiết bị đo lường điều khiển 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.
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 quá 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 từ các cảm biến, xử lý
tính toán các thuật điều khiển và phát tín hiệu điều khiển cho các cơ cấu chấp hành.
Khác với các hệ thống điều khiển cổ điển theo nguyên lý thủy lực, khí nén, rơle,
mạch tương tự, hệ điều khiển nhúng là hệ thống điều khiển số được hình thành từ
những năm 1960 đến nay. Trước đây các hệ điều khiển số thường do các máy tính lớn
đảm nhiệm, ngày nay chức năng điều khiển số này do các chíp vi xử lý, các hệ nhúng
đã thay thế. Phần mềm điều khiển ngày càng tinh sảo tạo nên độ thông minh của thiết
bị và ngày càng chiếm tỉ trọng lớn trong giá thành của thiết bị.
Điểm qua về chức năng xử lý tin ở PC và ở các thiết bị nhúng có những nét
khác biệt. Đối với PC và mạng internet chức năng xử lý đang được phát triển mạnh ở
các lĩnh vực quản lý và dịch vụ như thương mại điện tử, ngân hàng điện tử, chính phủ
điện tử, thư viện điện tử, đào tạo từ xa, báo điện tử ... các ứng dụng này thường sử
dụng máy PC để bàn, mạng WAN, LAN hoạt động trong thế giới ảo. Còn đối với các
hệ nhúng thì chức năng xử lý tính toán được ứng dụng cụ thể cho các thiết bị vật lý
(thế giới thật) như mobile phone, quần áo thông minh, các thiết bị điện tử cầm tay,
thiết bị y tế, xe ô tô, tầu tốc hành, phương tiện vận tải thông minh, máy đo, đầu đo, cơ
cấu chấp hành thông minh, các hệ thống điều khiển, nhà thông minh, thiết bị gia dụng
thông minh v.v...
1.3. Vai trò của hệ thống nhúng trong sự phát triển của lĩnh vực công nghệ cao
“3C “.
Các hệ thống tự động đã được chế tạo trên nhiều công nghệ khác nhau như các
thiết bị máy móc tự động bằng các cam chốt cơ khí, các hệ thống tự động hoạt động
bằng nguyên lý khí nén, thủy lực, rơle cơ điện, mạch điện tử số ... các thiết bị, hệ
thống này có chức năng xử lý và mức độ tự động thấp so với các hệ thống tự động
hiện đại được xây dựng trên nền tảng của các hệ thống nhúng.
Trong khi các hệ thống tin học sử dụng máy tính để hỗ trợ và tự động hóa quá
trình quản lý, thì các hệ thống điều khiển tự động dùng máy tính để điều khiển và tự
động hóa quá trình công nghệ. Chính vì vậy các thành tựu của công nghệ phần cứng và
công nghệ phần mềm của máy tính điện tử được áp dụng và phát triển một cách có

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
8

chọn lọc và hiệu quả cho các hệ thống điều khiển tự động. Và sự phát triển như vũ bão
của công nghệ thông tin kéo theo sự phát triển không ngừng của lĩnh vực tự động hóa.
Ta có thể thấy quá trình các hệ nhúng thâm nhập vào từng phần tử, thiết bị
thuộc lĩnh vực tự động hóa như đầu đo, cơ cấu chấp hành, thiết bị giao diện với người
vận hành thậm chí vào các rơle, contactor, nút bấm mà trước kia hoàn toàn làm bằng
cơ khí.
Trước khi đầu đo gồm phần tử biến đổi từ tham số đo sang tín hiệu điện, mạch
khuyếch đại, mạch lọc và mạch biến đổi sang chuẩn 4-20mA để truyền tín hiệu đo về
trung tâm xử lý. Hiện nay đầu đo đã tích hợp cả chip vi xử lý, biến đổi ADC, bộ truyền
dữ liệu số với phần mềm đo đạc, lọc số, tính toán và truyền kết quả trên mạng số về
thẳng máy tính trung tâm. Như vậy đầu đo đã được số hóa và ngày càng thông minh
do các chức năng xử lý từ máy tính trung tâm trước kia nay đã được chuyển xuống xử
lý tại chỗ bằng chương trình nhúng trong đầu đo.
Tương tự như vậy cơ cấu chấp hành như môtơ đã được chế tạo gắn kết hữu cơ
với cả bộ servo với các thuật toán điều chỉnh PID tại chỗ và khả năng nối mạng số tới
máy tính chủ.
Các tủ rơle điều khiển chiếm diện tích lớn trong các phòng điều khiển nay được
co gọn trong các PLC(programble Logic Controller).
Các bàn điều khiển với hàng loạt các đồng hồ chỉ báo, các phím, núm điều
khiển, các bộ tự ghi trên giấy cồng kềnh nay được thay thế bằng một vài PC.
Hệ thống cáp truyền tín hiệu analog 4-20mA, ± 10V từ các đầu đo, cơ cấu chấp
hành về trung tâm điều khiển nhằng nhịt trước đây đã được thay thế bằng vài cáp đồng
trục hoặc cáp quang truyền dữ liệu số
Ta có thể nói các hệ nhúng đã “thay thế và chiếm phần ngày càng nhiều” trong
các phần tử, hệ thống thuộc lĩnh vực công nghệ cao “3C”.
Vào những năm 30 các hệ thống tự động bằng cam chốt cơ khí thường hoạt
động đơn lẻ với một chức năng xử lý. Các hệ thống tự động dùng rơle điện từ xuất
hiện vào những năm 40 có mức xử lý khoảng 10 chức năng. Các hệ thống tự động
dùng bán dẫn hoạt động theo nguyên lý tương tự (Analog) của thập kỷ 60 có mức xử
lý khoảng 30 chức năng. Vào những năm 70 các thiết bị điều khiển khả trình PLC ra
đời với mức độ xử lý lên hàng trăm và vào những năm 80 với sự tham gia của các máy
tính điện tử main frame mini đã hình thành các hệ thống điều khiển phân cấp với số
chức năng xử lý lên tới hàng chục vạn (105). Sang thập kỷ 90 với sự phát triển của
công nghệ phần cứng cũng như phần mềm, các hệ thống điều khiển phân tán ra
đời(DCS) cho mức xử lý lên tới hàng trục triệu (107). Và sang thế kỷ 21, những hệ
thống tự động có tính tự tổ chức, có tư duy hợp tác sẽ có mức xử lý lên tới hàng
tỷ(109). Tuy nhiên để đạt được độ thông minh như những sinh vật sống còn cần nhiều
thời gian hơn và các hệ thống tự động còn cần tích hợp trong nó nhiều công nghệ cao
khác như công nghệ cảm biến, công nghệ vật liệu mới, công nghệ quang và laser v.v...

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
9

Đây cũng là xu thế phát triển của các hệ thống tự động là ngày càng sử dụng nhiều
công nghệ mới hơn trong cấu trúc và hoạt động của mình.
Trong điều khiển quá trình công nghệ, việc áp dụng các hệ nhúng đã tạo ra khả
năng tự động hóa toàn bộ dây chuyền sản xuất. Kiến trúc hệ thống điều khiển trước kia
tập trung về xử lý tại một máy tính thì nay các đầu đo, cơ cấu chấp hành, giao diện với
người vận hành đều được thông minh hóa có nhiều chức năng xử lý tại chỗ và khả
năng nối mạng nhanh tạo thành hệ thống mạng máy điều khiển hoạt động theo chế độ
thời gian thực. Ngoài các chức năng điều khiển và giám sát dây chuyền sản xuất hệ
thống còn có nhiều cơ sở dữ liệu, khả năng tự xác định và khắc phục hỏng hóc, khả
năng thống kê, báo cáo và kết hợp hệ thống mạng máy tính quản lý, lập kế hoạch, thiết
kế và kinh doanh tạo thành hệ thống tự động hóa sản xuất toàn cục.
Trong lĩnh vực rôbôt, với sự áp dụng các thành tựu của các hệ nhúng, rôbôt đã
có thị giác và xúc giác. Việc áp dụng trí khôn nhân tạo vào rôbôt đã đưa rôbôt từ ứng
dụng chủ yếu trong công nghiệp sang các lĩnh vực dịch vụ và y tế. Kết hợp với các
thành tựu của cơ điện tử, rôbôt ngày càng uyển chuyển và thông minh hơn. Trong
tương lai rôbôt không chỉ thay thế hoạt động cơ bắp của con người mà còn có thể thay
thể các công việc đòi hỏi họat động trí não của con người. Lúc này hệ thống điều khiển
của rôbôt không chỉ là các vi xử lý mạnh mà còn có sự hỗ trợ của các máy tính mạng
nơron nhân tạo, xử lý song song nhúng trong rôbôt. Các nghiên cứu phát triển này hiện
nay còn ở giai đoạn ban đầu.
1.4. Đặc tính, phương pháp thiết kế và xu thế phát triển của các hệ nhúng
Các hệ nhúng là những hệ kết hợp phần cứng và phần mềm một cách tối ưu.
Các hệ nhúng là những hệ chuyên dụng, thường hoạt động trong chế độ thời gian thực,
bị hạn chế về bộ nhớ, giá thành phải rẻ nhưng lại phải hoạt động tin cậy và tiêu tốn ít
năng lượng. Các hệ nhúng rất đa dạng và có nhiều kích cỡ, khả năng tính toán khác
nhau. Ngoài ra các hệ nhúng thường phải hoạt động trong môi trường khắc nghiệt có
độ nóng ẩm, rung xóc cao. Ví dụ như các điều khiển các máy diesel cho tàu biển, các
thiết bị cảnh báo cháy nổ trong hầm lò. Các hệ thống nhúng lớn thường là các hệ nối
mạng. Ở máy bay, tàu vũ trụ thường có nhiều mạng nhúng kết nối để kiểm soát hoạt
động và điều khiển.Trong ô tô hiện đại có đến trên 80 nút mạng kết nối các đầu đo cơ
cấu chấp hành để bảo đảm ô tô hoạt động an toàn và thoải mái cho người sử dụ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. Cách
thiết kế cổ điển là cách xác định trước các chức năng phần mềm (SW) và phần cứng
(HW) rồi sau đó các bước thiết kế chi tiết được tiến hành một cách độc lập ở hai khối.
Hiện nay đa số các hệ thống tự động hóa thiết kế (CAD) thường dành cho thiết kế
phần cứng. Các hệ thống nhúng hiện nay sử dụng đồng thời nhiều công nghệ như vi xử
lý, DSP, mạng và các chuẩn phối ghép, protocol, do vậy xu thế thiết kế các hệ nhúng
hiện nay đòi hỏi có khả năng thay đổi mềm dẻo hơn trong quá trình thiết kế 2 phần
HW và SW. Để có được thiết kế cuối cùng tối ưu, quá trình thiết kế SW và HW phải

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
10

phối hợp với nhau chặt chẽ và có thể thay đổi sau mỗi lần thử chức năng hoạt động
tổng hợp. Thiết kế các hệ nhúng đòi hỏi kiến thức đa ngành về điện tử, xử lý tín hiệu,
vi xử lý, thuật điều khiển và lập trình thời gian thực.
Phần mềm trong các hệ nhúng ngày càng chiếm tỉ trọng cao và đã trở thành một
thành phần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh
kiện quang học ... các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe
về thời gian thực, tiêu ít năng lượng, hoạt động tin cậy ổn định hơn, có khả năng hội
thoại cao, có khả năng kết nối mạng, có thích nghi, tự tổ chức cao có khả năng tái cấu
hình như một thực thể, một tác nhân.
Và có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung
động, điện từ trường, sinh học ...) để tạo nên các hệ thống tự tiếp nhận năng lượng
trong quá trình họat động.
Tuy nhiên hệ thống nhúng hiện nay còn phải đối mặt với nhiều thách. Độ phức
tạp của hệ thống tăng cao do nó kết hợp nhiều lĩnh vực đa ngành, kết hợp phần cứng -
mềm, trong khi các phương pháp thiết kế và kiểm tra chưa chín muồi. Khoảng cách
giữa lý thuyết và thực hành lớn và còn thiếu các phương pháp và lý thuyết hoàn chỉnh
cho khảo sát phân tích toàn cục của hệ nhúng bao gồm lý thuyết điều khiển tự động,
thiết kế máy, công nghệ phần mềm, điện tử, vi xử lý, các công nghệ hỗ trợ khác. Mặt
khác các hệ nhúng còn nhiều vấn đề cần giải quyết với độ tin cậy và tính mở của hệ
thống. Do hệ thống nhúng thường phải hội thoại với môi trường xung quanh nên nhiều
khi gặp những tình huống không lường trước dễ dẫn đến hệ thống bị loạn. Trong quá
trình hoạt động một số phần mềm thường phải chỉnh lại và thay đổi nên hệ thống phần
mềm có thể không kiểm soát được. Đối với hệ thống mở, các hãng thứ 3 đưa các
module mới, thành phần mới vào cũng có thể gây nên sự hoạt động thiếu tin cậy.
1.5. Môi trường thông minh
Công nghệ bán dẫn phát triển mạnh theo xu thế ngày càng rẻ, tích hợp cao, có
khả năng tính toán lớn, khả năng kết nối toàn cầu, khả năng phối hợp với các cảm biến
và cơ cấu chấp hành vi cơ điện và sinh học, khả năng giao diện không qua bàn phím
đang tạo tiền đề và cơ sở cho sự bùng nổ của các thiết bị vật dụng thông minh xung
quanh ta. Đây là sự khởi đầu của thời đại hậu PC - Môi trường thông minh. Các phần
mềm nhúng trong các chip vi hệ htống rất phong phú và có độ mềm dẻo, tái sử dụng
cao.
Sức đẩy của công nghệ sẽ đưa công nghệ vi điện tử tiếp cận và cộng năng với
công nghệ sinh học tạo nên công nghệ nano với độ phức tạp giga vào thập niên 2010-
2020. Các chip vi hệ thống xử lý hỗn hợp tương tự và số MS-SoC (Mixed Signal
System on chip) vào giai đoạn này sẽ có trên 2 tỷ transistor, 1000 lõi CPU, 100MB bộ
nhớ và hoạt động ở tần số 200GHz.
Với những vi hệ thống có khả năng tính toán siêu hạng này việc thiết kế các hệ
nhúng sẽ gặp không ít thách thức như xử lý song song, độ phức tạp của phần mềm

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
11

nhúng và khả năng cung cấp năng lượng cho các thiết bị cầm tay. Trong tương lai
năng lượng cho truyền dữ liệu sẽ lớn gấp từ 5 đến 30 lần năng lượng hoạt động của các
CPU.
Trước đây các hệ thống thường được thiết kế trên nền phần cứng là PC và phần
mềm là Windown hoặc Linux, thì ngày nay số lượng các hệ nền (platform) cho thiết kế
các hệ nhúng có khoảng 25. Trong tương lai các hệ nhúng sẽ được thiết kế trên nền các
chip MS-SoC tạo nên các platform thiết kế chuyên dụng với số lượng sẽ lên đến hơn
500 loại. Ta có thể liệt kê một số ví dụ điển hình như platform raptor II cho thiết kế
camera số, PXA240 cho thiết kế các thiết bị PDA, TL850 cho TV số, BLUECORE
cho công nghệ không dây Bluetooth, CDMA cho mobile phone 3G ... các hệ MS-SoC
sẽ có khả năng tái cấu hình và sẽ là công cụ chủ chốt cho các sản phẩm của công nghệ
cao “3C”.
1.6. Các hệ điều hành nhúng và phần mềm nhúng
1.6.1. Hệ điều hành nhúng
Khác với PC thường chạy trên nền hệ điều hành windows hoặc unix, các hệ
thống nhúng có các hệ điều hành nhúng riêng của mình. Các hệ điều hành dùng trong
các hệ nhúng nổi trội hiện nay bao gồm Embedded linux, VxWorks, WinCE, Lynyos,
BSD, Green Hills, QNX và DOS, Embeddde linux hiện đang phát triển mạnh. Năm
2001 hệ điều hành này chiếm 12% thị phần các hệ điều hành nhúng thì năm 2002
chiếm 27% và chiếm vị trí số 1. Hiện nay 40% các nhà thiết kế các hệ nhúng cân nhắc
đầu tiên sử dụng Embedded linux cho các ứng dụng mới của mình và sau đó mới đến
các hệ điều hành nhúng truyền thống như VxWorks, WinCE. Các đối thủ cạnh tranh
của Embedded linux hiện nay là các hệ điều hành nhúng tự tạo và windows CE. Sở dĩ
Embedded linux có sự phát triển vượt bậc là do có sức hấp dẫn đối với các ứng dụng
giá thành thấp và đòi hỏi thời gian đưa sản phẩm ra thị trường nhanh. Mặt khác Linux
là phần mềm mã nguồn mở nên bất kỳ ai cũng có thể hiểu và thay đổi theo ý mình.
Linux cũng là một hệ điều hành có cấu trúc module và chiếm ít bộ nhớ trong khi
windows không có các đặc tính ưu việt này. Do thị trường của các sản phẩm nhúng
tăng mạnh lên các nhà sản xuất ngày càng sử dụng các hệ điều hành nhúng để đảm bảo
sản phẩm có sức cạnh tranh và Embedded linux đang là sản phẩm hệ điều hành nhúng
có uy tín chiếm vị trí số 1 trong những năm tới.
1.6.2. Phần mềm nhúng
Phần mềm nhúng là phần mềm tạo nên phần hồn, phần trí tuệ của các sản phẩm
nhúng. Phần mềm nhúng ngày càng có tỉ lệ cao trong giá trị của các sản phẩm nhúng.
Hiện nay phần lớn các phần mềm nhúng nằm trong các sản phẩm truyền thông và các
sản phẩm điện tử gia dụng (consumer electronics) tiếp đến là trong các sản phẩm ô tô,
phương tiện vận chuyển, máy móc thiết bị y tế, các thiết bị năng lượng các thiết bị
cảnh báo bảo vệ và các sản phẩm đo và điều khiển. Để có thể tồn tại và phát triển, các
sản phẩm công nghiệp và tiêu dùng cần phải thường xuyên đổi mới và ngày càng có

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
12

nhiều chức năng tiện dụng và thông minh hơn. Các chức năng này phần lớn do các
chương trình nhúng tạo nên. Phần mềm nhúng là một lĩnh vực công nghệ then chốt
cho sự phát triển kinh tế của nhiều quốc gia trên thế giới như Nhật Bản, Hàn Quốc,
Phần Lan và Trung Quốc. Tại Mỹ có nhiều chương trình hỗ trợ của nhà nước để phát
triển các hệ thống và phần mềm nhúng. Hàn Quốc có những dự án lớn nhằm phát triển
công nghệ phần mềm nhúng như các thiết bị gia dụng nối mạng Internet, hệ thống
phần mềm nhúng cho phát triển thành phố thông minh, dự án phát triển ngành công
nghiệp phần mềm nhúng, trung tâm hỗ trợ các ngành công nghiệp hậu PC v.v... Hàn
Quốc cũng chấp nhận Embedded linux như một hệ điều hành chủ chốt trong việc phát
triển các sản phẩm nhúng của mình. Thụy Điển coi phát triển các hệ nhúng có tầm
quan trọng chiến lược cho sự phát triển của đất nước. Phần Lan có những chính sách
quốc gia tích cực cho nghiên cứu phát triển các hệ nhúng đặc biệt là các phần mềm
nhúng. Những quốc gia này còn thành lập nhiều viện nghiên cứu và trung tâm phát
triển các hệ nhúng.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
13

Chương II: LÝ THUYẾT THIẾT KẾ HỆ THỐNGNHÚNG


Mục tiêu của chương
Giúp sinh viên biết được quy trình triên khai một hệ thống nhúng từ lúc có ý
tưởng đến khi hoàn thiện sản phẩm, từ đó có thể chủ động triên khai 1 bài toán cụ thể
theo đúng phương pháp.
Tóm tắt
Trình bày các quy trình thiết kế một hệ thống nhúng và các kỹ thuật đặc tả hệ thống.
2.1. Quy trình thiết kế Top-Down
Quy trình Top-Down thường được áp dụng cho các bài toán đã có giải pháp
công nghệ cả về phần mềm cũng như phần cứng. Các giải pháp này đã được phát triển
trước đó ở các ứng dụng khác, và đã được kiểm định.
Trong thực tế chúng ta sẽ thấy, bản chất hay mấu chốt của quy trình là vấn đề
tìm hiểu và xác định bài toán, làm sao để xác định được chính xác và đầy đủ nhất các
yêu cầu cũng các rằng buộc mà hệ thống phải đạt được.
Sơ đồ khối quy trình kế top-down ở hình 2
2.1.1. Pha phân tích
Pha này là pha quan trọng nhất quyết định hệ thống có đạt yêu cầu hay không.
Một hệ thống nhúng cụ thể phải được đặt vào (nhúng vào) một hệ thống lớn cụ thể. Vì
thế ta cần phải biết có những yêu cầu nào cho nó, môi trường hay điều kiện làm việc
của nó. Thông tin này gọi là các yêu cầu và các điều kiện rằng buộc cho hệ thống, nó
giúp cụ thể hoá được việc chọn giải pháp công nghệ và thiết bị cho các kỹ sư thiết kế ở
pha sau.
- Các yêu cầu: Các thông tin chi tiết về nhiệm vụ mà hệ thống phải giải quyết
được, các tham số đầu vào đầu ra, các giới hạn trong hệ thống cụ thể,...
- Các rằng buộc: Điều kiện làm việc và các hạn chế như thời tiết, độ ẩm, độ
nhiễu, độ chính xác, tính thời gian thực, loại tín hiệu giao tiếp với hệ thống
mẹ,...
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

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
14

Các yêu cầu và điều kiện


Phân tích vấn đề
rằng buộc cho hệ thống mới
(Analyze the proplem)

Các yêu cầu và các điều kiện rằng buộc


đã được xác định cụ thể

Thiết kế nguyên lý
(High level design)

Sơ đồ khối và các biểu đồ luồng dữ liệu

Thiết kế kỹ thuật
(Engineering design) Các cấu trúc dữ liệu
Các giao tiếp vào ra
Biểu đồ quan hệ giữa các
khối chức năng

Xây dựng hệ thống


(Implementation)

Phần cứng
Phần mềm
Kiểm tra
Không Đạt (Test)
Đạt yêu cầu
yêu cầu
Hình 2: Sơ đồ khối quy trình Top-Down

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
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ừ 180C đến 360C
4) Bộ điều khiển bằng tay đặt cạch cửa phí bên trong nhà
5) Hệ thống điện cấp mới từ đầu

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
15

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.
- ...
2.1.2. Pha thiết kế nguyên lý
Mục tiêu của pha này là xác định các giải pháp công nghệ từ các yêu cầu đặt ra
ở pha Phân tích, từ đó đi thiết kế mô hình, sơ đồ nguyên lý cho toàn bộ hệ thống bao
gồm cả phần cứng và phần mềm.
Để thực hiện bước này thông thường trải qua các bước sau:
- Trước tiên ta phải xây dựng một sơ đồ mô hình tổng quát của toàn hệ thống.
- Sau đó phân tách thành các module hay các hệ thống con
- Định giá cho hệ thống, lập kế hoạch phát triển và ước lượng thời gian phát
triển hệ thống.
- Xây dựng các sơ đồ luồng dữu liệu giữa các module hay các hệ thống con
trong hệ thống.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
16

Ví dụ 2: Xây dựng và phân tách các module trong mô hình tổng tổng quát của bài
toán điều khiển động cơ

Hình 3: Sơ đồ tổng quát của 1 hệ thống điều khiển động cơ


2.1.3. Pha thiết kế kỹ thuật
 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ẻ.
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.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
17

Ví dụ: Sơ đồ Call graph của hệ thống điều khiển động cơ

Hình 4: Sơ đồ quan hệ (call graph) giữa các module phần cứng và 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.
2.1.4. Pha xây dựng hệ thống
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
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.
2.1.5. Pha kiểm tra
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:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
18

 Đầ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.
2.2. Quy trình Bottom-Up
Quy trình Bottom-Up trong thực tế thường áp dụng trong các bài toán chưa lựa
chọn hay chưa tìm ra được giải pháp công nghệ. Mấu chốt của quy trình tập trung chủ
yêu và quá trình thử nghiệm với hệ thống và tín hiệu thực, từ đó chọn ra giải pháp
công nghệ và linh kiện phù hợp nhất cho bài toán. Sơ đồ tổng quát của quy trình như
hình 5.
Quy trình Bottom-Up bắt đầu từ các ý tưởng đơn lẻ, sau đó xây dựng luôn thiết
kế kỹ thuật. Như ta thấy quy trình hoàn toàn ngược so với Top-Down. Quy trình này
thường áp dụng có các bài toán chưa lắm chắc về lời giải, người thiết kế mới chỉ có ý
tưởng về một vấn đề nào đó và muốn tìm một giải pháp hoặc giải pháp tốt nhất để giải
quyết vấn đề. Việc giải quyết các ý tưởng có thể 1 hoặc nhiều để có một sản phẩm
hoàn chỉnh. Ở quy trình này ta cần chú ý có 2 khâu test nhằm kiểm định chính xác lại
các thiết kế kỹ thuật và thiết kế nguyên lý trước khi lựa chọn 1 giải pháp tối ứu nhất.
Chính từ việc thí nghiệm và thiết kế thử hệ thống trước, sau đó mới có thể phân
tích nguyên lý để chọn các đặc tính mới, rằng buộc mới cho một hệ thống mới. Với
quy trình này khâu thiết kế kỹ thuật và Test sau khi xây dựng hệ thống là quan trọng
nhất. Vì với Top-Down việc xây dựng một sản phẩm là theo nhu cầu của người dùng
và môi trường đặt hệ thống. Còn với Bottom-Up có thể người ta còn chưa tìm ra cách
để thiết kế ra sản phẩm đó, hoặc sản phẩm đó chưa hề có trên thị trường, khi đó cả
người dùng và người thiết kế chưa thể có thông tin gì về các yêu cầu cho sản phẩm hay
các đặt tính kỹ thuật của sản phẩm, vì vậy khâu thiết kế kỹ thuật và Test sau thực thi
các kỹ sư phải tìm ra các đặt tính đó, nhằm xác định được các ưu việt cũng như các
hạn chế của sản phẩm mới.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
19

2.3. Đặc tả hệ thống


2.3.1. Khái niệm đặc tả (specification)
Kỹ thuật đặc tả nhằm định nghĩa một hệ thống, module hay sản phẩm cần phải
làm gì, nhưng không mô tả nó phải làm thế nào. Nghĩa là đặc tả chỉ tập trung vào việc
mô tả các chức năng, đầu vào và đầu ra, còn giải pháp để từ đầu vào có được đầu ra
như thế nào thì không mô tả. Đồng thời nêu nên các tính chất của vấn đề đặt ra.
Như vậy bản chất ta sử dụng một công cụ để mô hình hoá một hệ thống thành
các module, các luồng dữ liệu vào ra, các yêu cầu của tín hiệu hay dữ liệu, các thông
tin trao đổi giữa các module,... Sao cho toàn bộ quy trình làm việc của hệ thống có thể
đọc được thông qua đặc tả. Ở đây ta không quan tâm đến công nghệ của hệ thống, mà
chỉ quan tâm đến chức năng, nhiệm vụ và các tính chất mà hệ thống phải có được.
Đặc tả có thể được tiến hành ở nhiều giai đoạn, nhiều lần trong tiến trình phát triển
hệ thống như:
 Đặc tả yêu cầu (requirement specification): Nhằm môt tả đầy đủ và chi tiết
những thông nhất giữa người sử dụng tương lai và người thiết kế về hệ thống.
Đây là các thông tin cơ sở để người thiết kế thiết hệ thống của mình, nhiệm vụ
người thiết kế pahỉ thiết kế đầy đủ và hoàn thiện theo yêu cầu đã thống nhất,
người sử dụng tương lại được phép đỏi hỏi, giám sát việc thực thi các yêu cầu
trong phạm vi đã thoả thuận.
 Đặc tả kiến trúc hệ thống (system architect specification): Nhằm mô tả sự thống
nhất giữa người thiết kế và người cài đặt. Các đặt tả nhằm chỉ ra được các chức
năng, tính chất và nhiệm vụ cho các thành phần hệ thống chuẩn bị được cài đặt.
Việc xác định các yêu cầu từ đó chuyển thành bản thiết kế đã được đặc tả ởkhâu
đặc tả yêu cầu, vì thế khâu này người cài đặt chỉ quan tầm đến bản thiết kế và
những rằng buộc đã thống nhất với người thiết kế.
 Đặc tả Module (module specification): Mô tả sự thống nhất giữa người lập trình
cài đặt module và người lập trình sử dụng module. Quá trình cài đặt hệ thống có
thể được phân ra thành nhiều module được cài đặt một cách song song, hay kế
thừa từ module có sẵn hay module đặt hàng, vì thế người cài dặt và người sử
dụng module cần đặc tả chi tiếp các chức năng, nhiệm vụ và đặt biệt các giao
tiếp của hàm, để sao cho có thể ghép nối tương thích và hiệu quả module đó vào
hệ thống.
2.3.2. Tại sao cần đặc tả
Việc đặc tả là rất cần thiết trước khi xây dựng một hệ thống bất kỳ trong lĩnh
vực nào bời vì:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
20

Phân tích vấn đề Đạt yêu cầu


Kiểm tra
(Analyze) (Test) Không Đạt
yêu cầu
Các yêu cầu và
Sơ đồ khối và các biểu
điều kiện rằng
đồ luồng dữ liệu
buộc cho hệ thống

Thiết kế nguyên lý
(High level design)
Đạt yêu cầu Đạt yêu cầu
Đạt yêu cầu Không Đạt
Không Đạt
Kiểm tra Kiểm tra yêu cầu
Kiểm tra yêu cầu
(Test) (Test) (Test)

Không Đạt Phần cứng Phần cứng Phần cứng


yêu cầu Phần mềm Phần mềm
Phần mềm

Xây dựng hệ thống Xây dựng hệ thống Xây dựng hệ thống


(Implementation) (Implementation) (Implementation)

Các cấu trúc dữ liệu


Các giao tiếp vào ra
Biểu đồ quan hệ giữa
các khối chức năng
Thiết kế kỹ thuật
(Engineering design) Thiết kế kỹ thuật
Thiết kế kỹ thuật (Engineering design)
(Engineering design)
Ý tưởng
Ý tưởng
Ý tưởng

Hình 5: Sơ đồ khối quy trình Bottom-Up

 Đặc tả mang tính hợp đồng: Mô tả đầy đủ và chi tiết sự thống nhất giữa người
sử dụng và người phát triển, chính vì thế đây là cơ pháp lý và khoa học để
người pháp triển thiết kế, còn người sử dụng thì giám sát và kiểm định.
 Giúp sản phẩm hợp thức hoá: Sản phẩm được phát triển theo các yêu cầu đã
thoả thuận, vì thế sản phẩm đương nhiên sẽ đặt yêu cầu với người sử dụng.
 Đặc tả là công cụ để trao đổi: Ngồn ngữ đặt tả là một ngôn ngử được quy định
chung và thống nhất vì thế các đặc tả có thể được trao đổi giữa các người thiết
kế với nhau. Đồng thời thông qua đó người sử dụng cũng có thể có cái nhình
tổng quát về sản phẩm.
 Tái sử dụng: Một đặc tả có thể được lưu giữ để phát triển tiếp hoặc được bổ
sung nâng cấp về sau.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
21

2.3.3. Phân loại các kỹ thuật đặc tả


a) Đặc tả phi hình thức: Sử dụng 1 trong các công cụ sau để mô tả hệ thống
 Ngôn ngữ tự nhiên tự do
 Ngôn ngữ tự nhiên có cấu trúc
 Các ký hiệu đồ họa
b) Đặc tả nửa hình thức: Sử dụng hỗn hợp cả ngôn ngữ tự nhiên, các ký hiệu toán
học và các ký hiệu đồ họa
c) Đặc tả hình thức: Sử dụng các ký hiệu toán học để mô hình hóa hệ thống, các
ký hiệu toán học là các ký hiệu thống nhất chung có thể là:
 Ngôn ngữ đặc tả
 Ngôn ngữ lập trình
So sánh đặc tả hình thức và đặc tả phi hình thức:
Đặc tả hình thức Đặc tả phi hình thức
 Chính xác (vì sử dụng các ký hiệu  Phương pháp sử dụng ngôn ngữ tự
toán học đã được thống nhất trên nhiên, tự do và bản địa nên dễ hiểu,
thế giới). dễ sử dụng.
 Hợp thức hóa hình thức.  Khả năng mềm dẻo cao, vì công cụ
 Sử dụng là công cụ trao đổi giữa mô tả là ngôn ngữ dễ thay thế.
các người thiết kế, tuy nhiên vì sử  Thiếu sự chính xác và đầy đủ do
dụng các ký hiệu toán học chuyên hạn chế của ngôn ngữ và mang tính
ngành nên khó đọc và khó hiểu. chủ quan.
 Chỉ dành cho những người có kiến  Nhập nhằng.
thức chuyên môn nên khó sử dụng.

2.3.4. Ứng dụng và ưu việt khỉ sử dụng đặc tả


a) Ứng dụng
 Đặc tả thường sử dụng trong giai đoàn đầu của tiến trình phát triển sản phẩm
 Nhằm hạn chế lỗi trong quá trình phát triển phần mềm, thông qua việc đặc tả
chi tiết và đầy đủ các chức năng, nhiệm vụ và tính chất cho tất cả các thành
phần cảu sản phẩm
 Kỹ thuật đặc tả thường dùng khi phát triển các hệ thống
o Hệ thống điều khiển
o Hệ thống nhúng
o Hệ thống thời gian thực
b) Ưu việt khi sử dụng đặc tả
Ưu điểm khi sử dụng đặc tả được thể hiện rõ nhất qua qua chi phí phát triển hệ
thống, ta có thể thấy rõ qua biểu đồ sau:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
22

Hình 6: Biểu đồ so sánh chi phí phát triẻn hệ thống sử dụng dặc tả và không sử dụng
Qua biểu đồ ta dễ dành nhận ra tổng chi phí khi sử dụng đặc tả giảm đi rất
nhiều, điều nay sẽ là cho giá thành sản phẩm đạt được tính cạnh tranh.
2.3.5. Phương pháp đặc tả sử dụng “Máy trạng thái hữu hạn FSM(Finite state
machine)”
Trong thực tế có một số phương pháp đặc tả như:
 Máy trạng thái hữu hạn
 Mạng Petri (thường dùng để mô tả các hệ thống phức tạp không đồng bộ, có
nhiều khâu làm việc song song)
 Điều kiện trước sau (thường dùng đặc tả cho các hàm hoặc module)
 Kiểu trừu tượng (mô tả dữ liệu và các thao tác trên dữ liệu đó ở một mức trừu
tượng độc lập với cách cài đặt dữ liệu bởi ngôn ngữ lập trình)
Trong phạp vi này bài giảng chỉ tập trung trình bày về kỹ thuật đặc tả sử dụng
máy trạng thái hữu hạn, do tính đơn giản và phù hời với các hệ thống nhỏ có tính
moudle và tuần tự cao.
 Phương pháp máy trạng thái hữu hạn:
 Phương pháp mô tả các luông điều khiển trong hệ thống
 Biểu diễn hệ thống dưới dạng đồ thị
 Đồ thị bao gồm:
o Nút: mỗi nút là một trạng thái S của hệ thống
o Nhãn: Mô tả dữ liệu đầu vào, là nhãn của một cung

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
23

o Cung: Một chuyển tiếp T : S x I -> S (chuyển tiếp mô tả một sự biến đổi
trạng thái khi một trạng có dữ liệu vào)
Ví dụ 1:

Hình 7: Đặc tả cách thức làm việc của một máy điện thoại sử dụng máy trạng thái hữu hạn

2.4. Các phương pháp biểu diễn thuật toán


Khi chứng minh hoặc giải một bài toán trong toán học, ta thường dùng những
ngôn từ toán học như : "ta có", "điều phải chứng minh", "giả thuyết", ... và sử dụng
những phép suy luận toán học như phép suy ra, tương đương, ...Thuật toán là một
phương pháp thể hiện lời giải bài toán nên cũng phải tuân theo một số quy tắc nhất
định. Ðể có thể truyền đạt thuật toán cho người khác hay chuyển thuật toán thành
chương trình máy tính, ta phải có phương pháp biểu diễn thuật toán. Có 3 phương
pháp biểu diễn thuật toán :
1. Dùng ngôn ngữ tự nhiên.
2. Dùng lưu đồ-sơ đồ khối (flowchart).
3. Dùng mã giả (pseudocode)
2.4.1. Ngôn ngữ tự nhiên
Trong cách biểu diễn thuật toán theo ngôn ngữ tự nhiên, người ta sử dụng ngôn
ngữ thường ngày để liệt kê các bước của thuật toán . Phương pháp biểu diễn này
không yêu cầu người viết thuật toán cũng như người đọc thuật toán phải nắm các quy
tắc. Tuy vậy, cách biểu diễn này thường dài dòng, không thể hiện rõ cấu trúc của thuật
toán, đôi lúc gây hiểu lầm hoặc khó hiểu cho người đọc. Gần như không có một quy

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
24

tắc cố định nào trong việc thể hiện thuật toán bằng ngôn ngữ tự nhiên. Tuy vậy, để dễ
đọc, ta nên viết các bước con lùi vào bên phải và đánh số bước theo quy tắc phân cấp
như 1, 1.1, 1.1.1
Ví dụ: Biểu diễn thuật toán giải phương trình bậc hai dùng ngôn ngữ tự nhiên
(không xét đến nghiệm phức)
Đầu vào: Phương trình ax2 + bx + c =0
Đầu ra: Nghiệm
Bước 1: Xác định hệ số a,b,c
1.1. Nếu a≠0 chuyển đến bước 2
1.2. Nếu a=0 không thực hiện vì la phương trình bậc nhất
Bước 2: Tính Δ = b2 - 4ac
Bước 3: Kiểm tra Δ
3.1. Nếu Δ>0 đến bước 4
3.2. Nếu Δ=0 đến bước 5
3.3. Nếu Δ<0 báo phương trình vô nghiệm, kết thúc thuật toán

Bước 4: Báo phương trình có 2 nghiệm , kết thúc thuật toán

Bước 5: Phương trình có nghiệm kép x1=x2=-b/2a, kết thúc thuật toán
2.4.2. Dùng lưu đồ
Lưu đồ hay sơ đồ khối là một công cụ trực quan để diễn đạt các thuật toán.
Biểu diễn thuật toán bằng lưu đồ sẽ giúp người đọc theo dõi được sự phân cấp các
trường hợp và quá trình xử lý của thuật toán. Phương pháp lưu đồ thường được dùng
trong những thuật toán có tính rắc rối, khó theo dõi được quá trình xử lý.
Ðể biểu diễn thuật toán theo sơ đồ khối, ta phải phân biệt hai loại thao tác. Một
thao tác là thao tác chọn lựa dựa theo một điều kiện nào đó. Chẳng hạn : thao tác "nếu
a = b thì thực hiện thao tác B2, ngược lại thực hiện B4" là thao tác chọn lựa. Các thao
tác còn lại không thuộc loại chọn lựa được xếp vào loại hành động. Chẳng hạn, "Chọn
một hộp bất kỳ và để lên đĩa cân còn trống." là một thao tác thuộc loại hành động.
a) Thao tác chọn lựa (hay còn gọi khối điều kiện)
Thao tác chọn lựa được biểu diễn bằng một hình thoi, bên trong chứa biểu thức
điều kiện.

b) Thao tác xử lý (process)


Thao tác xử lý được biểu diễn bằng một hình chữ nhật, bên trong chứa nội dung
xử lý.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
25

c) Ðường đi (route)
Khi dùng ngôn ngữ tự nhiên, ta mặc định hiểu rằng quá trình thực hiện sẽ lần
lượt đi từ bước trước đến bước sau (trừ khi có yêu cầu nhảy sang bước khác). Trong
ngôn ngữ lưu đồ, do thể hiện các bước bằng hình vẽ và có thể đặt các hình vẽ này ở vị
trí bất kỳ nên ta phải có phương pháp để thể hiện trình tự thực hiện các thao tác.
Hai bước kế tiếp nhau được nối bằng một cung, trên cung có mũi tên để chỉ
hướng thực hiện. Chẳng hạn trong hình dưới, trình tự thực hiện sẽ là B1, B2, B3.
Từ thao tác chọn lựa có thể có đến hai hướng đi, một hướng ứng với điều kiện
thỏa và một hướng ứng với điều kiện không thỏa. Do vậy, ta dùng hai cung xuất phát
từ các đỉnh hình thoi, trên mỗi cung có ký hiệu Ð/Ðúng/Y/Yes để chỉ hướng đi ứng
với điều kiện thỏa và ký hiệu S/Sai/N/No để chỉ hướng đi ứng với điều kiện không
thỏa.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
26

Hình 8: Lưu đồ biểu diễn thuật toán giải phương trình bậc 2

d) Ðiểm cuối (terminator)


Ðiểm cuối là điểm khởi đầu và kết thúc của thuật toán, được biểu diễn bằng
hình ovan, bên trong có ghi chữ bắt
đầu/start/begin hoặc kết thúc/end. Ðiểm
cuối chỉ có cung đi ra (điểm khởi đầu)
hoặc cung đi vào (điểm kết thúc). Xem
lưu đồ thuật toán giải phương trình bậc
hai ở trên để thấy cách sử dụng của điểm
cuối.
e) Ðiểm nối (connector)
Ðiểm nối được dùng để nối các
phần khác nhau của một lưu đồ lại với
nhau. Bên trong điểm nối, ta đặt một ký
hiệu để biết sự liên hệ giữa các điểm nối.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
27

f) Ðiểm nối sang trang (off-page connector)


Tương tự như điểm nối, nhưng điểm nối sang trang được dùng khi lưu đồ quá
lớn, phải vẽ trên nhiều trang. Bên trong điểm nối sang trang ta cũng đặt một ký hiệu để
biết được sự liên hệ giữa điểm nối của các trang.

Ở trên chỉ là các ký hiệu cơ bản và thường được dùng nhất. Trong thực tế, lưu
đồ còn có nhiều ký hiệu khác nhưng thường chỉ dùng trong những lưu đồ lớn và phức
tạp. Ðối với các thuật toán trong cuốn sách này, ta chỉ cần sử dụng các ký hiệu trên là
đủ.
2.4.3. Mã giả
Tuy sơ đồ khối thể hiện rõ quá trình xử lý và sự phân cấp các trường hợp của
thuật toán nhưng lại cồng kềnh. Ðể mô tả một thuật toán nhỏ ta phải dùng một không
gian rất lớn. Hơn nữa, lưu đồ chỉ phân biệt hai thao tác là rẽ nhánh (chọn lựa có điều
kiện) và xử lý mà trong thực tế, các thuật toán còn có thêm các thao tác lặp.
Khi thể hiện thuật toán bằng mã giả, ta sẽ vay mượn các cú pháp của một ngôn
ngữ lập trình nào đó để thể hiện thuật toán. Tất nhiên, mọi ngôn ngữ lập trình đều có
những thao tác cơ bản là xử lý, rẽ nhánh và lặp. Dùng mã giả vừa tận dụng được các
khái niệm trong ngôn ngữ lập trình, vừa giúp người cài đặt dễ dàng nắm bắt nội dung
thuật toán. Tất nhiên là trong mã giả ta vẫn dùng một phần ngôn ngữ tự nhiên. Một khi
đã vay mượn cú pháp và khái niệm của ngôn ngữ lập trình thì chắc chắn mã giả sẽ bị
phụ thuộc vào ngôn ngữ lập trình đó.
Ví dụ: Một đoạn mã giả của thuật toán giải phương trình bậc hai
if Delta > 0 then
begin
x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
xuất kết quả : phương trình có hai nghiệm là x1 và x2
end
else
if delta = 0 then
xuất kết quả : phương trình có nghiệm kép là -b/(2*a)
else {trường hợp delta < 0 }xuất kết quả : phương trình vô nghiệm

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
28

Chương III: CẤU TRÚC PHẦN CỨNG


Mục tiêu của chương
Giúp sing viên có kiến thức tổng quan về một số dòng vi điều khiển và vi xử lý
nhúng tiến tiến. Giúp sinh viên có các kỹ thuật cũng như các công cụ để thiết kế hệ
thống phần cứng cho một hệ thống nhúng.
Tóm tắt
Trình bày một số dòng vi điều khiển như 8051, AVR, PIC, ARM,… Các công
cụ thiết kế và kiểm thử hệ thống.
3.1. Cấu trúc tổng quát của hệ thống nhúng
3.1.1. Kiến trúc cơ bản
Kiến trúc cơ bản của hệ thống nhúng được
miêu tả ở hình 8, như vậy một hệ thống đầy đủ về
cơ bản có 3 thành phần:
1. Chương trình ứng dụng: là các chương
trình chạy trên nền hệ thống nhúng. Người
sử dụng tác động trực tiếp trên các phần
mềm này.
2. Hệ điều hành: Hệ điều hành giúp cho việc
phát triển phần mềm và phần cứng có thể
Hình 9: Kiến trúc cơ bản của 1 HTN
tách biệt trên 2 công nghệ không cần liên
quan đến nhau nhưng vẫn có thể kết hợp để có một sản phẩm tốt nhất. Cũng
như máy tính hệ điều hành giúp người khác thác hệ thống được hiệu quả và dễ
dàng hơn, hệ thống nhúng có hệ điều hành thường linh hoạt và mềm dẻo hơn.
3. Phần cứng: Đây là thành phần cốt lõi không thể thiếu, thành phần phần cứng
quan trọng nhất là CPU, các thành phần khác có thể tùy biến theo từng ứng
dụng cụ thể.
3.1.2. Cấu trúc phần cứng
Cấu trúc tổng quát thông dụng nhất của một vi xử lý/vi điều khiển nhúng được đưa ra
ở hình 9.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
29

Hình 9: Cấu trúc thông dụng của một VXL/VĐK nhúng


VXL/VĐK nhúng là một chủng loại rất điển hình và đang được sử dụng rất phổ
biến hiện này. Chúng được ra đời và sử dụng theo sự phát triển của các Chip xử lý ứng
dụng cho máy tính. Vì đối tượng ứng dụng là các thiết bị nhúng nên cấu trúc cũng
được thay đổi theo để đáp ứng các ứng dụng. Hiện nay chúng ta có thể thấy các họ vi
xử lý điều khiển của rất nhiều các nhà chế tạo cung cấp như, Intel, Atmel, Motorola,
Infineon. Về cấu trúc, chúng cũng tương tự như các Chíp xử lý phát triển cho PC
nhưng ở mức độ đơn giản hơn nhiều về công năng và tài nguyên. Phổ biến vẫn là các
Chip có độ rộng bus dữ liệu là 8bit, 16bit, 32bit. Về bản chất cấu trúc, Chip vi điều
khiển là chip vi xử lý được tích hợp thêm các ngoại vi. Các ngoại vi thường là các khối
chức năng ngoại vi thông dụng như bộ định thời gian, bộ đếm, bộ chuyển đổi A/D,
giao diện song song, nối tiếp…Mức độ tích hợp ngoại vi cũng khác nhau tuỳ thuộc vào
mục đích ứng dụng sẽ có thể tìm được Chip phù hợp. Thực tế với các ứng dụng yêu
cầu độ tích hợp cao thì sẽ sử dụng giải pháp tích hợp trên chip, nếu không thì hầu hết
các Chip đều cung cấp giải pháp để mở rộng ngoại vi đáp ứng cho một số lượng ứng
dụng rộng và mềm dẻo.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
30

Hình 10: Ví dụ về kiến trúc của họ VĐK AVR

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
31

Hình 11: Sơ đồ khối chức năng PIC16F873A

a) CPU
CPU đóng vai trò như bộ não chịu trách nhiệm
thực thi các phép tính và thực hiện các lệnh. Phần chính
của CPU đảm nhiệm chức năng này là đơn vị logic toán
học ALU (Arthimetic Logic Unit). Ngoài ra để hỗ trợ
hoạt động của ALU còn có thêm một số thành phần khác
trong CPU như bộ giải mã, bộ tuần tự và các thanh ghi.

Hình 13: CPU

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
32

b) Bộ nhớ
 Kiển trúc bộ nhớ
Kiến trúc bộ nhớ được chia ra làm hai loại chính và được áp dụng rộng rãi trong
hầu hết các Chip xử lý nhúng hiện nay là kiến trúc bộ nhớ von Neumann và Havard.
Trong kiến trúc von Neumann không phân biệt vùng chứa dữ liệu và mã chương
trình.Cả chương trình và dữ liệu đều được truy nhập theo cùng một đường. Điều này
cho phép đưa dữ liệu vào vùng mã chương trình ROM, và cũng có thể lưu mã chương
trình vào vùng dữ liệu RAM và thực hiện từ đó.

Hình 12: Kiến trúc bộ nhớ Von Newmann và Havard


Kiến trúc Havard tách/phân biệt vùng lưu mã chương trình và dữ liệu. Mã
chương trình chỉ có thể được lưu và thực hiện trong vùng chứa ROM và dữ liệu cũng
chỉ có thể lưu và trao đổi trong vùng RAM. Hầu hết các vi xử lý nhúng ngày nay sử
dụng kiến trúc bộ nhớ Havard hoặc kiến trúc Havard mở rộng (tức là bộ nhớ chương
trình và dữ liệu tách biệt nhưng vẫn cho phép khả năng hạn chế để lấy dữ liệu ra từ
vùng mã chương trình). Trong kiến trúc bộ nhớ Havard mở rộng thường sử dụng một
số lượng nhỏ các con trỏ để lấy dữ liệu từ vùng mã chương trình theo cách nhúng vào
trong các lệnh tức thời. Một số Chip vi điều khiển nhúng tiêu biểu hiện nay sử dụng
cấu trúc Havard là 8031, PIC, Atmel AVR90S. Nếu sử dụng Chip 8031 chúng ta sẽ
nhận thấy điều này thông qua việc truy nhập lấy dữ liệu ra từ vùng dữ liệu RAM hoặc
từ vùng mã chương trình. Chúng ta có một vài con trỏ được sử dụng để lấy dữ liệu ra
từ bộ nhớ dữ liệu RAM, nhưng chỉ có duy nhất một con trỏ DPTR có thể được sử dụng
để lấy dữ liệu ra từ vùng mã chương trình. Hình 13 mô tả nguyên lý kiến trúc của bộ
nhớ von Neumann và Harvard.
Ưu điểm nổi bật của cấu trúc bộ nhớ Harvard so với kiến trúc von Neumann là
có hai kênh tách biệt để truy nhập vào vùng bộ nhớ mã chương trình và dữ liệu nhờ
vậy mà mã chương trình và dữ liệu có thể được truy nhập đồng thời và làm tăng tốc độ
luồng trao đổi với bộ xử lý.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
33

 Bộ nhớ chương trình – PROM (Programmable Read Only


Memory)
Vùng để lưu mã chương trình. Có ba loại bộ nhớ PROM thông dụng được sử
dụng cho hệ nhúng và sẽ được giới thiệu lần lượt sau đây.
 EPROM
Bao gồm một mảng các transistor khả trình. Mã chương trình sẽ được ghi trực
tiếp và vi xử lý có thể đọc ra để thực hiện. EPROM có thể xoá được bằng tia cực tím
và có thể được lập trình lại. Cấu trúc vật lý của EPROM được mô tả như trong Hình
11.

Hình 13: Nguyên lý cấu tạo và hoạt động xóa của EPROM
 Bộ nhớ Flash
Cũng giống như EPROM được cấu tạo bởi một mảng transistor khả trình nhưng
có thể xoá được bằng điện và chính vì vậy có thể nạp lại chương trình mà không cần
tách ra khỏi nền phần cứng VXL. Ưu điểm của bộ nhớ flash là có thể lập trình trực tiếp
trên mạch cứng mà nó đang thực thi trên đó.
 Bộ nhớ dữ liệu - RAM
Vùng để lưu hoặc trao đổi dữ liệu trung gian trong quá trình thực hiện chương
trình. Có hai loại RAM được sử dụng trong thực tế là SRAM(static RAM) và
DRAM(dynamic RAM).

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
34

Hình 14: Cấu trúc nguyên lý bộ nhớ RAM


c) Giao tiếp ngoại vi
 Giao diện song song 8bit/16bit
Các cổng song song là một dạng giao
diện vào ra đơn giản và phổ biến nhất để kết
nối thông tin với ngoại vi. Có nhiều loại cấu
trúc giao diện vật lý điện tử từ dạng cổng
vào ra đơn giản cực Collector TTL hở trong
các ứng dụng cổng máy in đến các loại cấu
trúc giao diện cổng tốc độ cao như các
chuẩn bus IEEE-488 hay SCSI. Hầu hết các
chip điều khiển nhúng có một vài cổng vào
ra song song khả trình (có thể cấu hình).
Các giao diện đó phù hợp với các cổng vào Hình 17: Nguyên lý điển hình của 1 cổng I/O
ra đơn giản như các khoá chuyển. Chúng cũng phù hợp trong các bài toán phục vụ
giao diện kết nối điều khiển và giám sát theo các giao diện như kiểu rơle bán dẫn.
 Giao diện nối tiếp
- I2C (Inter-IC)
Giao thức ưu tiên truyền thông nối tiếp được phát triển bởi Philips
Semiconductor và được gọi là bus I2C. Vì nguồn gốc nó được thiết kế là để điều khiển
liên thông IC (Inter IC) nên nó được đặt tên là I 2C. Tất cả các chíp có tích hợp và

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
35

tương thích với I2C đều có thêm một giao diện tích hợp trên Chip để truyền thông trực
tiếp với các thiết bị tương thích I2C khác. Việc truyền dữ liệu nối tiếp theo hai hướng 8
bit được thực thi theo 3 chếđộ sau:
- Chuẩn (Standard)—100 Kbits/sec
- Nhanh (Fast)—400 Kbits/sec
- Tốc độ cao (High‐Speed)—3.4 Mbits/sec
Đường bus thực hiện truyền thông nối tiếp I 2C gồm hai đường là đường truyền
dữ liệu nối tiếp SDA và đường truyền nhịp xung đồng hồ nối tiếp SCL. Vì cơ chế hoạt
động là đồng bộ nên nó cần có một nhịp xung tín hiệu đồng bộ. Các thiết bị hỗ trợ I 2C
đều có một địa chỉ định nghĩa trước, trong đó một số bit địa chỉ là thấp có thể cấu hình.
Đơn vị hoặc thiết bị khởi tạo quá trình truyền thông là đơn vị Chủ và cũng là đơn vị
tạo xung nhịp đồng bộ, điều khiển cho phép kết thúc quá trình truyền. Nếu đơn vị Chủ
muốn truyền thông với đơn vị khác nó sẽ gửi kèm thông tin địa chỉ của đơn vị mà nó
muốn truyền trong dữ liệu truyền. Đơn vị Tớ đều được gán và đánh địa chỉ thông qua
đó đơn vị Chủ có thể thiết lập truyền thông và trao đổi dữ liệu. Bus dữ liệu được thiết
kế để cho phép thực hiện nhiều đơn vị Chủ và Tớ ở trên cùng Bus.
Quá trình truyền thông I2C được bắt đầu bằng tín hiệu start tạo ra bởi đơn vị
Chủ. Sau đó đơn vị Chủ sẽ truyền đi dữ liệu 7 bit chứa địa chỉ của đơn vị Tớ mà nó
muốn truyền thông, theo thứ tự là các bit có trọng số lớn nhất MSB sẽ được truyền
trước. Bit thứ tám tiếp theo sẽ chứa thông tin để xác định đơn vị Tớ sẽ thực hiện vai
trò nhận (0) hay gửi (1) dữ liệu. Tiếp theo sẽ là một bit ACK xác nhận bởi đơn vị nhận
đã nhận được 1 byte trước đó hay không. Đơn vị truyền (gửi) sẽ truyền đi 1 byte dữ
liệu bắt đầu bởi MSB. Tại điểm cuối của byte truyền, đơn vị nhận sẽ tạo ra một bit xác
nhận ACK mới. Khuôn mẫu 9 bit này (gồm 8 bit dữ liệu và 1 bit xác nhận) sẽ được lặp
lại nếu cần truyền tiếp byte nữa. Khi đơn vị Chủ đã trao đổi xong dữ liệu cần nó sẽ
quan sát bit xác nhận ACK cuối cùng rồi sau đó sẽ tạo ra một tín hiệu dừng STOP để
kết thúc quá trình truyền thông.
I2C là một giao diện truyền thông đặc biệt thích hợp cho các ứng dụng truyền
thông giữa các đơn vị trên cùng một bo mạch với khoảng cách ngắn và tốc độ thấp. Ví
dụ như truyền thông giữa CPU với các khối chức năng trên cùng một bo mạch như
EEPROM, cảm biến, đồng hồ tạo thời gian thực... Hầu hết các thiết bị hỗ trợ I 2C hoạt
động ở tốc độ 400Kbps, một số cho phép hoạt động ở tốc độ cao vài Mbps. I 2C khá
đơn giản để thực thi kết nối nhiều đơn vị vì nó hỗ trợ cơ chế xác định địa chỉ.
- SPI
SPI là một giao diện cổng nối tiếp đồng bộ ba dây cho phép kết nối truyền
thông nhiều VĐK được phát triển bởi Motorola. Trong cấu hình mạng kết nối truyền
thống này phảicó một VĐK giữ vai trò là Chủ (Master) và các VĐK còn lại có thể
hoặc là Chủ hoặc là Tớ. SPI có 4 tốc độ có thể lập trình, cực và pha nhịp đồng hồ khả
trình và kết thúc ngắt truyền thông. Nhịp đồng hồ không nằm trong dòng dữ liệu và

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
36

phải được cung cấp như một tín hiệu tách độc lập. Có ba thanh ghi SPSR, SPCR và
SPDR cho phép thực hiện các chức năng điều khiển, trạng thái và lữu trữ. Có bốn chân
cơ bản cần thiết để thực thi chuẩn giao diện truyền thông này.
- Dữ liệu ra MOSI (Master Output – Slave Input)
- Dữ liệu vào MISO (Master Input – Slave Output)
- Nhịp xung chuẩn SCLK (Serial Clock)
- Lựa chọn thành phần tớ SS (Slave Select)

Hình 15: Nguyên lý kết nối 1 Master và 1 Slave sử dụng SPI


Hình 17 chỉ ra nguyên lý kết nối giữa một đơn vị Chủ và một đơn vị Tớ trong
truyền thông SPI. Trong đó tín hiệu SCLK sẽ được tạo ra bởi đơn vị Chủ và là tín hiệu
vào của đơn vị Tớ. MOSI là đường truyền dữ liệu ra từ đơn vị Chủ tới đơn vị Tớ và
MISO là đường truyền dữ liệu vào đơn vị Chủ đến từ đơn vị Tớ. Đơn vị Tớ được lựa
chọn khi đơn vị Chủ kích hoạt tín hiệu SS.
Nếu hệ thống
có nhiều đơn vị tớ
đơn vị Chủ sẽ tạo
phải ra các tín hiệu
tách biệt để chọn đơn
vị Tớ. Cơ chế đó
được thực hiện nhờ
sơ đồ kết nối nguyên
lý mô tả như trong
Hình 18. Đơn vị Chủ
sẽ tạo ra tín hiệu chọn
đơn vị Tớ nhờ các
chân tín hiệu logic đa Hình 19: Sơ đồ kết nối SPI 1 Master với nhiều Slaver
chức năng. Các tín
hiệu này phải được điều khiển và đảm bảo ổn định về thời gian để tránh trường hợp tín
hiệu bị thay đổi trong quá trình đang truyền dữ liệu. Một điều dễ nhận ra rằng SPI
không hỗ trợ cơ chế xác nhận trong quá trình thực hiện truyền thông. Điều này phụ
thuộc vào giao thức định nghĩa hoặc phải thực hiện bổ sung thêm một số các mở rộng
phụ bên ngoài. Khả năng truyền thông đồng thời hai chiều với tốc độ lên đến khoảng
vài Mbit/s và nguyên lý khá đơn giản nên SPI hoàn toàn phù hợp để thực hiện truyền
thông giữa các thiết bị yêu cầu truyền thông tốc độ chậm, đặc biệt hiệu quả trong các

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
37

ứng dụng một đơn vị Chủ và một đơn vị Tớ. Tuy nhiên trong các ứng dụng với nhiều
đơn vị Tớ việc thực thi lại khá phức tạp vì thiếu cơ chế xác định địa chỉ, và sự phức
tạp sẽ tăng lên khi số đơn vị Tớ tăng.
3.2. Một số nền phần cứng thông dụng
Hiện trên thị trường có rất nhiều nhà sản xuất phát triển nhiều loại chip
VXL/VĐK nhúng khác nhau, mỗi loại đều có những tính năng và ưu việt riêng. Trong
thực tế mỗi dòng chip ra đời được thiết kế chuyên biệt cho một phân khúc ứng dụng
nào đấy, vì thế không có một nguyên tắc chung hay một loại VXL/VĐK chung cho
mọi bài toán. Tuỳ vào khả năng và nhiệm vụ cụ thể của hệ thống mà ta chọn lựa loại
chip phù hợp. Trong một số bài toán và một số dòng chip thì sự phân biệt giữa các
chip là không rõ dàng, nghĩa là có thể việc sử dụng các chip khác nhau nhưng mạng lại
hiệu qua như nhau.
Ngoài vi xử lý của máy tính, ta có thể phân loại ra hai dòng chip nhúng là vi xử
lý nhúng và vi điều khiển nhúng. Vi xử lý nhúng được sử dụng rộng rãi với thị phần
lớn nhất hiện nay là ARM, còn vi điều khiển thì có nhiều loại như AVR, PIC, 8051,...
Tuy nhiên trong phạm vi bài giảng này chi trình bày tóm lược 3 loại chip là PIC, 8051
và ARM
3.3.1. Họ vi điều khiển 8051
Vi điều khiển 8051 là vi điều khiển 8bit được intel giới thiệu vào năm 1981,
hiện nay họ 8051 được phát triển thành nhiều dòng với các đặc tính khác nhau về cấu
hình, số các module tích hợp sẵn,…, một số dòng điển hình như 8052, 8031. Ngoài ra
có rất nhiều hãng sãn xuất chip có kiến trúc tương thích với 8051 như Philip, Atmel,..
Tuy nhiên cấu trúc chung của một chip họ 8051 có thể được biểu thị như hình 20.

Hình 16: Cấu trúc tông quan của vi điều khiển họ 8051 của intel
Một số đặc tính chung của chip họ 8051:
- Dải điện áp hoạt động 4.0V đến 5.5V
- Tần số hoạt động: 0 Hz to 33 MHz

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
38

- 32 đường vào/ra lập trình được


- Có thể mở rộng tối đa 64K ROM nội
- Có thể mở rộng tối đa 64K bộ nhớ dữ liệu ngoài
- Có thể mở rộng tối đa 64K bộ nhớ lập trình ngoài
- 128Byte RAM Nội
- Tích hợp sẵn cổng truyền thông chuẩn RS232
- Tích hợp sẵn các bộ định thời Timer 8/16bit
3.3.2. Họ vi điều khiển AVR
AVR là một họ vi điều khiển do hãng Atmel sản xuất. AVR là chip vi điều
khiển 8 bits với cấu trúc tập lệnh đơn giản hóa theo kiến trúc RISC(Reduced
Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí.
So với các chip vi điều khiển 8 bits khác, AVR có nhiều đặc tính hơn hẳn, hơn
cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng:
- AVR tích hợp gần như đầy đủ các module chức năng thông dụng.
- Thiết bị lập trình (mạch nạp) cho AVR đơn giản
- Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích với
ngôn ngữ C.
- Các tính năng chung của AVR:
o Có thể sử dụng xung clock lên đến 16MHz, hoặc sử dụng xung clock
nội lên đến 8 MHz (sai số 3%)
o Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung
lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ
lập trình được EEPROM.
o Nhiều ngõ vào ra (I/O PORT) 2 hướng (bit-directional).
o 8 bits, 16 bits timer/counter tích hợp PWM.
o Các bộ chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh.
o Chức năng Analog comparator.
o Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232).
o Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C)
Master và Slaver.
o Giao diện nối tiếp Serial Peripheral Interface (SPI)
o ...
Một số chip AVR thông dụng:
 AT90S1200  ATmega8/8515/8535
 AT90S2313  ATmega16
 AT90S2323 and AT90S2343  ATmega161
 AT90S2333 and AT90S4433  ATmega162

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
39

 AT90S4414 and AT90S8515  ATmega163


 AT90S4434 and AT90S8535  ATmega169
 AT90C8534  ATmega32
 ATtiny10, ATtiny11 and ATtiny12  ATmega323
 ATtiny15  ATmega103
 ATtiny22  ATmega64/128/2560/2561
 ATtiny26  AT86RF401.
 ATtiny28 ....

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
40

3.3.3. Họ vi điều khiển PsoC


PSoC viết tắt từ Programmable System On Chip, nghĩa là hệ thống khả trình
trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi được cấu hình
bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. PsoC là chip dựa
trêm công nghệ CsoC(Configurable System on Chip - ) thực sự là một công nghệ ưu
việt nó tích hợp cả Processor và bộ nhớ RAM, FLASH, cho phép ta lập trình các thuật
toán phức tạp một cách dễ dàng bằng ngôn ngữ C hoặc Assembler. So với các vi điều
khiển thông dụng như 8051, Motorola 68HC908, Microchip PIC16Fxx có cấu trúc
CPU và ngoại vi cố định (fixel digital and analog penpherals) thì chíp PSoC có khả
năng mềm dẻo thích ứng với đa dạng ứng dụng và nhất là khả năng tái cấu hình
(reconfigurable) tạo thành nhiều loại chip khác nhau trên một chip ở những thời điểm
khác nhau trong một ứng dụng. Ví dụ chip PSoC của hãng Cypress Micro System, ta
có thể thiết kế cho nó thành một chip điều khiển ổn định nhiệt độ lò, ổn định và điều
khiển chiều quay, tốc độ quay của động cơ điện.
Công nghệ chế tạo chip thông minh trong đo lường và điều khiển trên cơ sở
CSoC có tính hiệu quả kinh tế, nhất là đối với chip PSoC của Cypress Micro System vì
có khả năng xử lý hỗn hợp dữ liệu tương tự và số. Nó cho ta khả năng phát triển các
sản phẩm mới nhanh dễ dàng mở rộng những chức năng mới sau này. Công nghệ này
cho nhiều giải pháp lựa chọn và hỗ trợ đa dạng ứng dụng từ đo lường, điều khiển, xử
lý, truyền thông, kết nối mạng trên cùng một chip với giá thành thấp. Hệ thống phần
mềm hỗ trợ thiết kế chip PSoC Disigner của Cypress Micro System có đầy đủ các
chức năng thiết kế, sắp xếp các khối chức năng, mô phỏng, lập trình, tìm lỗi và nạp
chíp hiện đại, có các module ứng dụng (user module) phong phú giúp ta không phải
lập trình trên ngôn ngữ HDL (Hardware Description Languages) vừa khó bao quát,
vừa không hiệu quả. Ngoài ra giá thành của các chíp PSoC trắng từ 1- 5 USD/ chip rẻ
hơn rất nhiều so các chip ngoại khác. đây là một cơ hội cho các doanh nghiệp và các
nhóm say mê nghiên cứu, sáng tạo có thể đạt đến thành công lớn với các sản phẩm độc
đáo có các chip thông minh chứa các ý tưởng sáng tạo và bí quyết riêng của mình.
Trong số các hãng cung cấp công nghệ CSoC, thì công nghệ PSoC của hãng Cypress
Micro System là phù hợp hơn cả cho đo lường và điều khiển do:
- Là công nghệ mới (được bình chọn là công nghệ sáng tạo năm 2001) của
thế giới và được định hướng để phát triển các chip thông minh cho các
thiết bị đo lường và điều khiển có số lượng lớn và giá thành thấp.
- Là chip đầu tiên trên thế giới cho phép tạo ra các chip có processor và
khả năng xử lý đồng thời các tín hiệu tương tự, số và truyền thông phong
phú nhất trong các công nghệ CSoC hiện có (Mix – Signal Divice). Các
giải pháp Processo + FPGA của hãng altera hoặc Xilinx và các hãng
khác chỉ có thể cho phép ta tạo ra các chip số có Processor(Digital IC)
hoặc một số chức năng analog cố định.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
41

- Là công nghệ có chức năng nhân cứng (MCA0 cho phép phát triển các
thuật toán xử lý nhanh các phép tính như của chip DSP (Digital Signal
Processing).
- Đầu tư cho các công cụ phát triển, hệ thống phần mền thiết kế chip và
các IP (Intellectual Properties) rẻ hơn nhiều so với các công cụ phát triển
và phần mền thiết kế FPGA.
 Mộ số đặc tính PSoC CY8C29466
- Vi xử lý kiến trúc Harvard mạnh mẽ
- Tốc độ tối đa M8C lên đến 24 MHz
- Hai bộ nhân 8x8, 32bit tích lũy
- Điện áp hoạt động 3V đến 5.25V
- 12 khối tương tự:
 Chuyển đổi ADC lên đến 14-bit (ADCs)
 Chuyển đổi DAClên đến 9-bit (DACs)
 Bộ khuếch đại lập trình được (PGAs)
 Bộ so sánh là lọc lập trình được
- 16 khối số:
 Timer/counter 8 đến 32-bit, và điều chế độ rộng xung (PWMs)
 Có các bộ kiểm tra lỗi CRC và PRS
 Lên đến 4 bộ truyền thông (UARTs)
 Nhiều bộ truyền thông SPI chủ và tớ
 Có thể kết nối đến tất cả các chân như là chân ra vào số đa dụng

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
42

3.3.4. Họ vi điều khiển ARM


ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lý
32-bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng. Do có đặc điểm tiết
kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động,
mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan
trọng hàng đầu.
Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARM
trở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới. CPU ARM được tìm
thấy khắp nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA, điện
thoại di động, máy đa phương tiện, máy trò chơi cầm tay, và máy tính cầm tay) cho
đến các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến để bàn.) Một nhánh nổi
tiếng của họ ARM là các vi xử lý Xscale của Intel.

Hình 17: Một vài sản phẩm công nghệ tiêu biểu ứng dụng bộ xử lý ARM

Các dạng lõi và tính năng của một số dòng ARM:


Họ Lõi Đặc tính Cache (I/D)/MMU MIPS điển hình @
MHz
ARM7TDMI ARM7TDMI(-S) 3-tầng pipeline không 15 MIPS @ 16.8 MHz
ARM710T MMU 36 MIPS @ 40 MHz
ARM720T 8KB unified, MMU 60 MIPS @ 59.8 MHz
ARM740T MPU
ARM7EJ-S Jazelle DBX không
ARM9TDMI ARM9TDMI 5-tầng pipeline không
ARM920T 16KB/16KB, MMU 200 MIPS @ 180
MHz
ARM922T 8KB/8KB, MMU
ARM940T 4KB/4KB, MPU
ARM9E ARM946E-S thay đổi được, tightly
coupled memories,

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
43

MPU
ARM966E-S không có cache, TCMs
ARM968E-S không có cache, TCMs
ARM926EJ-S Jazelle DBX thay đổi được, TCMs, 220 MIPS @ 200
MMU MHz
ARM996HS Clockless không caches, TCMs,
processor MPU
ARM10E ARM1020E (VFP) 32KB/32KB, MMU
ARM1022E (VFP) 16KB/16KB, MMU
ARM1026EJ-S Jazelle DBX variable, MMU or MPU
ARM11 ARM1136J(F)-S SIMD, Jazelle variable, MMU
DBX, (VFP)
ARM1156T2(F)- SIMD, Thumb- thay đổi được, MPU
S 2, (VFP)
ARM1176JZ(F)- SIMD, Jazelle thay đổi được,
S DBX, (VFP) MMU+TrustZone
ARM11 MPCore 1-4 core SMP, thay đổi được, MMU
SIMD, Jazelle
DBX, (VFP)
Cortex Cortex-A8 Application variable (L1+L2), lên đến 2000 (2.0
profile, NEON, MMU+TrustZone DMIPS/MHz in speed
Jazelle RCT, from 600 MHz to
Thumb-2 greater than 1 GHz)
Cortex-R4 Embedded variable cache, MMU 600 DMIPS
profile optional
Cortex-M3 Microcontroller no cache, (MPU) 120 DMIPS @
profile 100MHz
XScale 80200/IOP310 I/O Processor
/IOP315
80219
IOP321
IOP33x
PXA210/ Applications
PXA250 processor
PXA255 32KB/32KB, MMU 400 BogoMips @400
MHz
PXA26x
PXA27x 800 MIPS @ 624
MHz
PXA800(E)F
Monahans 1000 MIPS @ 1.25
GHz
PXA900
IXC1100 Control Plane
Processor

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
44

IXP2400/
IXP2800
IXP2850
IXP2325/
IXP2350
IXP42x
IXP460/IXP465

 Các đặc tính thiết kế:


Để đạt được một thiết kế gọn, đơn giản và nhanh, các nhà thiết kế ARM xây
dựng nó theo kiểu nối cứng không có vi chương trình, giống với bộ vi xử lý 8-bit 6502
đã từng được dùng trong các máy vi tính trước đó của hãng Acorn.
Cấu trúc ARM bao gồm các đặc tính của RISC như sau:
- Cấu trúc nạp/lưu trữ.
- Không cho phép truy xuất bộ nhớ không thẳng hàng (bây giờ đã cho
phép trong lõi Arm v6)
- Tập lệnh trực giao
- File thanh ghi lớn gồm 16 x 32-bit
- Chiều dài mã máy cố định là 32 bit để dễ giải mã và thực hiện pipeline,
để đạt được điều này phải chấp nhận giảm mật độ mã máy.
- Hầu hết các lệnh đều thực hiện trong vòng một chu kỳ đơn.
So với các bộ vi xử lý cùng thời như Intel 80286 và Motorola 68020, trong
ARM có một số tính chất khá độc đáo như sau:
- Hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện, điều này làm
giảm việc phải viết các tiêu đề rẽ nhánh cũng như bù cho việc không có
một bộ dự đoán rẽ nhánh.
- Trong các lệnh số học, để chỉ ra điều kiện thực hiện, người lập trình chỉ
cần sửa mã điều kiện
- Có một thanh ghi dịch đóng thùng 32-bit mà có thể sử dụng với chức
năng hoàn hảo với hầu hết các lệnh số học và việc tính toán địa chỉ.
- Có các kiểu định địa chỉ theo chỉ số rất mạnh
- Có hệ thống con thực hiện ngắt hai mức ưu tiên đơn giản nhưng rất
nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
45

3.3.5. Họ vi điều khiển PIC


PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip
Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics
Division thuộc General Instrument .
PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer" (Máy
tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho
dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC1650 được dùng để giao tiếp
với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với
cái tên "Peripheral Interface Controller" (Bộ điều khiển giao tiếp ngoại vi). CP1600 là
một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát
triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng
microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời
bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh
một chu kỳ máy (4 chu kỳ của bộ dao động).
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu
mới hủy bỏ hầu hết các dự án - lúc đó đã quá lỗi thời. Tuy nhiên PIC được bổ sung
EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC
được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM,
ADC...), với bộ nhớ chương trình từ 512 Word đến 32K Word.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
46

Hình 18: Sơ đồ khối của 1 chip ARM core ARM7

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
47

Một vài đặc tính


Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng,
nhưng chúng ta có thể điểm qua một vài nét như sau:
 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
 Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
 Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với
logic 0 và logic 1)
 8/16 Bit Timer
 Công nghệ Nanowatt
 Các chuẩn Giao Tiếp Ngoại Vi Nối Tiếp Đồng bộ/Không đồng bộ USART,
AUSART, EUSARTs
 Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
 Bộ so sánh điện áp (Voltage Comparators)
 Các module Capture/Compare/PWM
 LCD
 MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S
 Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần
 Module Điều khiển động cơ, đọc encoder
 Hỗ trợ giao tiếp USB
 Hỗ trợ điều khiển Ethernet
 Hỗ trợ giao tiếp CAN
 Hỗ trợ giao tiếp LIN
 Hỗ trợ giao tiếp IrDA
 Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC)
 KEELOQ Mã hoá và giải mã
 DSP những tính năng xử lý tín hiệu số (dsPIC)
 Vi điều khiển PIC18F452
3.3.5.1. Tính năng
Tập lệnh, cấu trúc được tối ưu hóa theo ngôn ngữ C
o Mã nguồn tương thích với tập lệnh PIC17 và PIC16
Địa chỉ bộ nhớ chương trình tuyến tính đến 32 Kbytes
Địa chỉ bộ nhớ dữ liệu tuyến tính đến 1.5 Kbytes
Hoạt động lên đến 10MIPs
o Đầu vào dao động thạch anh lên đến 40 MHz
o Đầu vào dao động thạch anh với PLL: 4 MHz - 10 MHz
Lệnh rộng 16-bit, độ rộng bit dữ liệu: 8-bit

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
48

Hỗ trợ các cấp ưu tiên ngắt


Nhân bằng phần cứng đơn chu kỳ 8 x 8
Tính năng ngoại vi:
Dòng phát/hút cao: 25 mA/25 mA
3 chân ngắt ngoài
Timer0 module: 8-bit/16-bit timer/counter với 8-bit đặt tỷ lệ lập trình được
Timer1 module: 16-bit timer/counter
Timer2 module: 8-bit timer/counter với thanh ghi 8-bit (thời gian cơ sở cho
PWM)
Timer3 module: 16-bit timer/counter
Tùy chọn xung clock thứ 2 - Timer1/Timer3
Hai bộ Capture/Compare/PWM (CCP).
Chân CCP có thể được cấu hình thành:
o Capture input: capture is 16-bit, max. resolution 6.25 ns (TCY/16)
o Compare is 16-bit, max. resolution 100 ns (TCY)
o PWM output: PWM resolution is 1- to 10-bit, max. PWM freq. @: 8-bit
resolution = 156 kHz, 10-bit resolution = 39 kHz
Khối truyền thông nối tiếp đồng bộ (Master Synchronous Serial Port - MSSP)
Hai chế độ hoạt động:
o 3-dây SPI™ (Hỗ trợ cả 4 chế độ SPI)
o I2C™ cả chế độ Master và Slave
Khối USART có thể định địa chỉ:
o Hỗ trợ RS-485 và RS-232
Khối cổng song song (Parallel Slave Port - PSP)
Tính năng tương tự:
Khối chuyển đổi tương tự sang số độ phân giải 10-bit:
o Chu kỳ lấy mẫu nhanh
o Chuyển đổi cả trong khi ngủ
o Tuyến tính ≤ 1 LSB
Phát hiện điện áp thấp lập trình được
o Hỗ trợ ngắt khi phát hiện điện áp thấp
Phát hiện reset do sụt nguồn lập trình được (BOR)

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
49

3.3.5.2. Sơ đồ và ý nghĩa chân

Hình 19: Sơ đồ chân PIC 18F452

Loại
Tên Chân Loạ
Bộ Giải thích
chân số i IO
đệm
MCLR 1 I ST Chân reset PIC, PIC sẽ reset khi chân này mức
thấp
VPP 1 I ST Chân lập trình (nạp PIC), ngõ vào điện áp cao
OSC1 13 I ST Dao động thạch anh đầu vào hoặc nguồn đầu vào
đồng hồ bên ngoài. Bộ đệm ST khi cấu hình
trong chế độ RC, CMOS khác.
OSC2 14 O - Đầu ra của bộ dao động thạch anh
VDD 11, P Nguồn 5v cho PIC và logic 1 cho các IO
32
VSS 12, P Mass cho PIC và các mức logic 0 cho IO
31
CLKI 13 I CMOS Nguồn dao động từ bên ngoài vào. Luôn luôn kết
hợp với chức năng OSC1 pin. (Xem liên quan
chân OSC1/CLKI, OSC2/CLKO)
CLKO 14 O - Trong chế độ RC, chân OSC2 xuất xung ra
CLKO, trong đó có tần số bằng 1/4 của OSC1 và

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
50

biểu thị tần số thực hiện lệnh


RAi/ Chân vào ra 2 chiều, cổng RA (i=0..6)
ANi
RAi … TTL Vào ra số
ANi Analo Vào tương tự (cho chuyển đổi ADC)
g
VREF- 4 Analo Điện áp tham chiếu thấp cho ADC
g
VREF+ 5 Analo Điện áp tham chiếu cao cho ADC
g
SS 7 ST Đầu vào chọn Slave trong truyền thông SPI
LVDIN 7 Analo Đầu vào phát hiện điện áp thấp
g
RBi 33..4 IO TTL Đầu vào/ra hai chiều, có thể lập trình tạo điện trở
0 treo (yếu) nội(i=0..7)
INTi I ST Đầu vào ngắt ngoài (i=0..2)
CCPi IO Capture input, Compare output, PWM output.
(i=1..2)
PGM 38 IO ST Chân cho phép lập trình ICSP điện áp thấp
PGC 39 IO ST Chân Clock khi lập trình ICSP và gỡ rối tại mạch
(In-Circuit)
PGD 40 IO ST Chân dữ liệu khi lập trình ICSP và gỡ rối tại
mạch (In-Circuit)
RCi IO TTL Đầu vào ra hai chiều, cổng RC (i=0..7)
T1OSO 15 O - Chân ra bộ dao động timer1
T1CKI 15 I ST Dao động từ ngoài vào Timer1/Timer3
T1OSI 16 I CMOS Đầu vào bộ dao động Timer1
SCK 18 IO ST Xung clock nối tiếp đồng bộ vào/ra cho SPI
SCL 18 IO ST Xung clock nối tiếp đồng bộ vào/ra cho I2C
SDI 23 I ST Chân dữ liệu vào trong SPI
SDA 23 IO ST Chân dữ liệu vào/ra trong I2C
SDO 24 O ST Chân dữ liệu ra trong SPI
TX 25 O - Chân truyền dữ liệu không đồng bộ USART
CK 25 IO ST Chân xung nhịp truyền thông đồng bộ USART
RX 26 I ST Chân nhận dữ liệu nối tiếp trong truyền thông

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
51

không đồng bộ USART


DT 26 IO ST Chân dữ liệu truyền thông đồng bộ USART
RDi 19..3 IO ST Vào ra số cổng RD (i=0..7)
0
PSPi 19..3 IO TTL Dữ liệu cổng song song (Slave) (i=0..7)
0
REi 8..10 IO ST Vào ra số cổng RE (i=0..2)
RD 8 TTL Điều khiển đọc cho cổng song song Slaver
WR 9 TTL Điều khiển ghi cho cổng song song Slaver
CS 10 TTL Điều khiển chọn chip trong giao tiếp song song
Slaver

Trong đó:
TTL = TTL tương thích với đầu vào ST = Schmitt Trigger đầu vào với mức
CMOS
O = ra, I=vào P = Power
OD = Open Drain (không có diode P nối tới vdd) CMOS = CMOS compatible
input or outpu

3.3.5.3. Sơ đồ khối:
Sơ đồ khối của PIC 18F452 như hình 25
Cấu trúc bộ nhớ của 18F452:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
52

Hình 20: Cấu trúc bộ nhớ của 18F452

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
53

Hình 21: Sơ đồ khối PIC18F452

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
54

3.3.5.4. Vào ra số

Hình 22: Sơ đồ khối gắp nối vào ra số

Để xuất/nhập cổng vào ra của PIC, ta phải thông qua 3 thanh ghi:
 TRISx: TRISA, TRISB, TRISC,… để xác định hướng vào/ra. Nếu bit nào đó
của TRISx =1 thì bít tương ứng của cổng x sẽ là cổng vào, và ngược lại.
 PORTx: PORTA, PORTB, PORTC,… để nhập (có thể xuất) giá trị ra cổng
 LATx: LATA, LATB,..để xuất giá trị ra cổng

Điện trở treo của cổng RB, có thể được sử dụng thông qua lập trình cho thanh ghi
INTCON2

Cổng RB còn có tính năng tạo ngắt on-change, tức là nếu có bất kỳ thay đổi gì
trên chân RBi thì sẽ sinh ngắt, nên rất thuận lợi cho việc ghép nối với phím bấm.
3.3.5.5. Timer
a) Timer0
Khối Timer0 có các tính năng:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
55

 Có thể lựa chọn băng phần mềm bộ timer hoạt động dạng 8-bit hoặc 16 bit
timer/counter
 Có thể đọc hoặc ghi
 Có thể lựa chọn tần số bằng cách đặt tham số prescale
 Nguồn xung clock có thể lựa chọn nội hay ngoại
 Ngắt tràn từ FFh xuống 00h ở chế độ 8 bit và FFFFh xuống 0000h trong chế độ
16 bit
 Có thể chọn cạnh cho nguồn dao động ngoài
Các thanh ghi liên quan:

Timer0 có thể làm việc ở 2 chế độ 8bit/16bit thông qua lập trình:

Hình 23: Sơ đồ khối timer0 chế độ 8bit

Hình 24: Sơ đồ khối của timer0 ở chế độ 16bit

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
56

b) Timer1
Timer1 là bộ timer 16bit với các thanh ghi liên quan như sau:

Nguyên lý hoạt động của khối Timer1:

Hình 25: Sơ đồ khối timer1


c) Timer 2
Khối Timer 2 có các tính năng:
 Timer 8bit (thanh ghi TMR2)
 Có thể đọc/ghi
 Tần số vào có thể lập trình được với các tỉ lệ 1:1, 1:4, 1:16
 Tần số ra có thể lập trình được với các tỉ lệ 1:1 đến 1:16
 Ngắt khi TMR2=PR2

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
57

Hình 26: Sơ đồ khối Timer2


Khối Timer 2 có một thanh ghi định thời lượng 8-bit PR2. Khi có xung vào
Timer2 tăng từ 00h đến khi khớp với PR2 và tràn về 00h tại chu kỳ tăng tiếp theo. PR2
là thanh ghi có thể đọc/ghi. Thanh ghi PR2 khi reset có giá trị là FFh
Thanh ghi liên quan đến Timer 2:

d) Timer 3
Khối Timer 3 có các tính năng:
Timer 16 bit (2 thanh ghi 8-bit, TMR3H và TMR3L)
Có thể đọc/ghi
Ngắt khi tràn từ FFFFh về 0000h
Các thanh ghi có liên quan:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
58

Hình 27: Sơ đồ khối timer3


3.3.5.6. Truyền thông nối tiếp USART
Bộ truyền thông đồng bộ/không đồng bộ có thể hoạt động ở tất cả các chế độ
không đồng bộ, đồng bộ Master, đồng bộ Slaver.
 Sơ đồ ghép nối truyền thông chuẩn RS232
Do cổng nối tiếp của PIC lầm việc ở chuẩn TTL, vì thế khi cần giao tiếp với các
thiết bị có chuẩn RS232 cần có mạch phụ trợ, một sơ đồ điển hình như hình sau:

Hình 28: Sơ đồ giao tiếp chuẩn RS232

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
59

 Nguyên tắc tạo tốc độ baud:

 Tính sai số truyền thông:


Ví dụ: cho Fosc=16MHz, Baud=9600bps

Trong đó:
 Desired Baud Rate: tốc độ baud yêu cầu
 Solving for X: Tìm X
 Calculated Baud Rate : Tính tốc độ baud
 Error: lỗi

 Truyền thô ng nố i tiếp khô ng đồ ng bộ USART

Truyền thông không đồng bộ, có khung truyền 1-bit start, 8 hay 9 bit dữ liệu, 1-
bit stop. UART truyền bit LSB trước. Bộ truyền nhận bắt buộc phải có cùng khung
truyền và tốc độ baud. Bộ tạo tốc độ baud sinh ra một xung nhịp để dịch bit, có thể
nhân tốc độ x16 hoặc x64, phụ thuộc vào bit BRGH (TXSTA<2>). Truyền thông nối

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
60

tiếp không hỗ trợ Parity bằng phần cứng, nếu muốn, có thể tính bằng phần mềm, thông
qua bit thứ 9. Truyền thông sẽ ngừng khi ở chế độ ngủ (SLEEP).
Bộ truyền dữ liệu nối tiếp USART:
Bộ truyền thông nối tiếp truyền thanh ghi dịch TSR. Thanh ghi dịch là bộ đệm
chứa dữ liệu đọc/ghi truyền, TXREG. TXREG chứa dữ liệu khi muốn truyền bằng lập
trình phần mềm. Thanh ghi TSR sẽ không được cập nhật dữ liệu cho đến khi bit STOP
truyền hết. Khi TXREG truyền dữ liệu đi và cập nhật nó vào thanh ghi TSR, TXREG
sẽ rỗng, và cờ TXIF (PIR1<4>) được lập (và không thể xóa bằng phần mềm, nó chỉ
được xóa khi có dữ liệu mới ghi vào TXREG). Ngắt này được bật/tắt bởi bit TXIE
(PIE1<4>).
Thứ tự thiết lập truyền dữ liệu:
Khởi tạo thanh ghi tốc độ baud: SPBRG, nếu muốn truyền tốc độ cao,
BRGH=1
Cho phép truyền thông: SYNC=0 và SPEN=1
Nếu cần ngắt: TXIE=1
Nếu cần truyền thông 9 bit: TX9=1
Cho phép truyền: TXEN=1, TXIF=1
Nếu bit thứ 9 được chọn, TX9D sẽ được nạp
Ghi dữ liệu vào TXREG để truyền đi

Hình 29: Sơ đồ khối truyền dữ liệu UART

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
61

Truyền thông không đồng bộ


Các thanh ghi liên quan đến truyền dữ liệu:

Bộ nhận dữ liệu nối tiếp USART:


Nhận dữ liệu nối tiếp từ chân RC7/RX/DT và điều khiển khối nhận dữ liệu. Bộ nhận
dữ liệu thực chất là một bộ dịch tốc độ cao hoạt động bằng 16 lần tốc độ baud.
Trình tự thiết lập nhận dữ liệu:
Khởi tạo thanh ghi tốc độ baud: SPBRG, nếu muốn truyền tốc độ cao,
BRGH=1
Cho phép truyền thông: SYNC=0 và SPEN=1
Nếu cần ngắt: RCIE=1
Nếu cần truyền thông 9 bit: RX9=1
Cho phép truyền: CREN=1
Nếu thiết lập ngắt: RCIE=1, thì RCIF =1 khi nhận xong dự liệu.
Đọc thanh ghi RCSTA để được bit thứ 9 (nếu được hoạt động) và quyết
định xem có lỗi hay không.
Đọc 8 bit dữ liệu nhận được từ thanh ghi RCREG
Nếu có lỗi xảy ra, xóa lỗi bằng cách xóa bit CREN

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
62

Nếu dùng ngắt, chắc chắn rằng bit GIE=1 và PEIE=1 trong thanh ghi
INTCON (INTCON<7:6>)

Hình 30: Sơ đồ khối và giản đồ thời gian nhận dữ liệu

Các thanh ghi liên quan đến nhận dữ liệu:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
63

 Khố i chuyển đổ i ADC – 10 bit


PIC18F4X2 có 8 kênh đầu vào tương tự, dùng để chuyển đổi ADC.

Khối ADC có 4 thanh ghi:


• A/D Result High Register (ADRESH): phần cao của kết quả
• A/D Result Low Register (ADRESL): phần thấp của kết quả
• A/D Control Register 0 (ADCON0): tần số chuyển đổi, chọn kênh, trạng thái, on/off

• A/D Control Register 1 (ADCON1): Dạng kết quả, tần số chuyển đổi, chọn chân
A/IO, Vref,…

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
64

Hình 31: Biểu đồ khối chuyển đổi ADC

Trình tự thiết lập chuyển đổi ADC:


1) Cấu hình khối AD:
 Cấu hình chân tương tự, điện áp tham chiếu và IO số (ADCON1)
 Chọn kênh đầu vào (ADCON0)
 Chọn tần số chuyển đổi (ADCON0)
 Cho phép chuyển đổi (ADCON0)
2) Cấu hình ngắt AD (nếu được thiết kế)
 ADIF=0
 ADIE=1
 GIE=1
 PEIE=1
3) Chờ 1 khoảng thời gian yêu cầu

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
65

4) Bắt đầu chuyển đổi


 GO/DONE=1 (ADCON0)
5) Chờ đến khi AD chuyển đổi xong, bằng cách:
 Hỏi vòng, chờ đến khi bit GO/DONE=0
 Hoặc: đợi ngắt AD
6) Đọc kết quả tại hai thanh ghi: ADRESH/ADRESL, xóa cờ ADIF nếu cần thiết
7) Để chuyển đổi tiếp, chờ ít nhất một khoảng thời gian là 2*TAD (khoảng
30uS), về bước 1) hoặc 2)
Phân bố bit kết quả:

Cách ghép nối tín hiệu điện áp tham chiếu:

 Tính nă ng đặ c biệt củ a CPU: Bit cấ u hình (configuration bit)

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
66

 Cấ u hình xung nhịp dao độ ng hệ thố ng


PIC18FXX2 có thể được hoạt động trong tám phương thức khác nhau của Oscillator.
Người dùng có thể lập trình 3 bit cấu hình (FOSC2, FOSC1, và FOSC0) để lựa chọn một
trong tám chế độ:
ST Kí hiệu Diễn dải Ý nghĩa Tần số thạch anh
T
1 LP Low Power Crystal Dao động thạch anh LP<200KHz
với điện áp thấp
2 XT Crystal/Resonator Thạch anh tần số 200KHz<XT<4MH
thấp z
3 HS High Speed Thạch anh, tần số 4MHZ<HS<25MHz
Crystal/Resonator cao
4 HS+PL High Speed Thạch anh, tần số HSx4
L Crystal/Resonator with PLL cao, có nhân tần số
enabled
5 RC External Resistor/Capacitor Dao động RC
6 RCIO External Resistor/Capacitor Dao động RC, cho
with I/O pin enabled phép chân IO
7 EC External Clock Xung nhịp đưa từ
ngoài vào
8 ECIO External Clock with I/O pin Xung nhịp đưa từ
enabled ngoài vào, cho
phép chân IO

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
67

Xung nhịp dao động của PIC, được chia cho 4 trước khi đưa vào hệ thống.

Chân MCLR:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
68

3.4. Một số vi mạch thường dùng

3.4.1. Nhóm linh kiện số


b. Nhóm IC logic
 7400, 4011 – NAND

 7402 – NOR

 7404 – Not

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
69

 BUS, Chố t đệm


 74HC273 – Vào song song ra song song, có chốt đệm sườn

 74HC573 – Vào song song ra song song, có chốt đệm mức

 74HC245 – BUS truyền thông, chọn 1 trong 2 hướng

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
70

 74HC595: Vào nối tiếp, ra song song

Nhóm đếm
 74HC193 – bộ đếm nhị phâ n

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
71

74HC4017 – bộ đếm thập phân

 74HC4518 – Bộ đếm BCD

c. Nhóm mã hóa – giải mã


 74LS138 – Giả i mã 3 ra 8 bit

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
72

 7447 – Giả i mã LED 7 thanh, tích cự c â m

 74LS148 – Mã hó a 8 về 3-bit

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
73

 74C922 – Mã hó a 16 phím bấ m có chố ng rung

Ghép nối đọc 32 phím

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
74

Sơ đồ khối nguyên lý

3.4.2. Nhóm linh kiện tương tự


a. Khuếch đại
 LM324

 741

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
75

 ULN2803

b. Cảm biến
 Cả m biến nhiệt độ

 Cả m biến á nh sá ng

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
76

1.0 LDR1
LDR

 Cả m biến hồ ng ngoạ i

 Cả m biến trọ ng lượ ng (Loadcell)

 Cả m biến tiệm cậ n

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
77

3.4.4. Nhóm hiển thị


a. LED đơn

b. LED 7 thanh

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
78

c. LCD

d. LED ma trận

3.4.4. Nhóm chuyển đổi dữ liệu


a. ADC
 AD0809: ADC0808/ADC0809 8-Bit µP Compatible A/D Converters with 8-
Channel Multiplexer

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
79

b. DAC
 DAC0808: DAC0808/DAC0807/DAC0806 8-Bit D/A Converters

3.4.5. Nhóm IC chức năng


a. IC thời gian thực (RTC)
 DS1307

 DS12C887A

b. IC điều khiển động cơ


 MC33932: Dual 5.0 A Throttle Control H-Bridge

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
80

 L298

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
81

c. IC truyền thông
 Chuẩ n RS232: Max 232

 Chuẩ n RS485: Max485

 Chuẩ n CAN: MCP2551

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
82

3.4.6. Một số ví dụ điển hình


a. Mạch cơ bản: nguồn, dao động, reset

b. Sơ đồ hienr thị LED đơn

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
83

c. Sơ đồ mạch hiển thị LED 7 thanh

d. Sơ đồ mạch truyền thông

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
84

e. Sơ đồ mạch chuyển đổi ADC, hiển thị LCD

f. Sơ đồ mạch giao tiếp bàn phím PS2

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
85

g. Sơ đồ mạch chuyển đổi DAC

U2
+10V
10
RE2/CS/AN7
9
RE1/WR/AN6
40 8
39
RB7/PGD RE0/RD/AN5 U1 R1 R3
RB6/PGC
38 30 5 14
RB5/PGM RD7/PSP7 A1 VREF+
37 29 6 R2
RB4 RD6/PSP6 A2 5.00k 5.00k
36 28 7 15
RB3/CCP2B RD5/PSP5 A3 VREF-
35 27 8
RB2/INT2 RD4/PSP4 A4 1k
34 22 9 4 DAC out
RB1/INT1 RD3/PSP3 A5 IOUT
33 21 10
RB0/INT0 RD2/PSP2 A6
20 11 16
RD1/PSP1 A7 COMP
14 19 12 3
RA6/OSC2/CLKO RD0/PSP0 A8 VEE
7
RA5/AN4/SS/LVDIN
6
RA4/T0CKI RC7/RX/DT
26 DAC0808 C1
5 25 0.1u
RA3/AN3/VREF+ RC6/TX/CK
4 24
RA2/AN2/VREF- RC5/SDO
3 23
RA1/AN1 RC4/SDI/SDA
2 18
RA0/AN0 RC3/SCK/SCL
17
RC2/CCP1
1 16
MCLR/VPP RC1/T1OSI/CCP2A
13 15
OSC1/CLKI RC0/T1OSO/T1CKI
-5V
PIC18F452

Sơ đồ mạch điều khiển động cơ

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
86

h. Sơ đồ mạch thời gian thực

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
87

i. Sơ đồ mạch đo và hiển thị nhiệt độ

Sơ đồ đo nhiệt độ

3.5. Công cụ thiết kế, mô phỏng và kiểm thử phần cứng

3.5.1. Công cụ thiết kế phần cứng


Giới thiệu
Mạch in điện tử (thường gọi tắt là mạch in) là một tấm nhựa tổng hợp chịu nhiệt
mà trên đó các linh kiện được hàn và kết nối với các đường mạch điện. Với các mạch
điện đơn giản, chẳng hạn chỉ bao gồm một hai tụ điện và điện trở, ta hoàn toàn có thể
tự xắp xếp linh kiện và vẽ đường dây nối giữa chúng một cách dễ dàng. Tuy nhiên khi
mạch điện có vài chục linh kiện, số chân nối lên đến hàng trăm thì việc vẽ bằng tay
không hề đơn giản. Do đó phần mềm thiết kế mạch in sinh ra để giúp ta hoàn thành
công việc này một cách nhanh chóng, chính xác và hiệu quả

Một vài loại phần mềm


Trên thực tế có rất nhiều phần mềm thiết kế mạch in khác nhau. Ở Việt Nam có một số
loại phổ biến như: OrCad, ProtelSE99, DXP2009, Altium Designer, PowerPCB,
Eagle. Trong đó có hai dòng sản phẩm là OrCad và Protel (gồm ProtelSE99,
DXP2004, Altium Designer) được nhiều người biết nhất.

Các tính năng


Thông thường, một phần mềm đồ sộ như OrCad hoặc Protel có hai phần thực hiện
nhiệm vụ riêng biệt là:
* Bộ phận vẽ mạch nguyên lý

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
88

* Bộ phận vẽ mạch in. Bộ phận vẽ mạch nguyên lý cho biết tính đúng đắn về sự liên
kết đường mạch. Bộ phận này sẽ xuất ra một tập tin (thường gọi là netlist) để chuyển
cho bộ phận vẽ mạch in. Bộ phận vẽ mạch in sẽ chuyển hóa các biểu tượng linh kiện
thành các linh kiện các kích thước, hình dạng cơ học chính xác như linh kiện thật và
đồng thời đánh dấu các chân linh kiện được kết nối với nhau.
Các tính năng cơ bản mà một phần mềm thiết kế mạch in đáp ứng:
* Tạo hình dạng và kích thước bản mạch
* Cho phép nhập thư viện linh kiện. Cho phép tạo thư viện linh kiện mới.
* Xoay, lật linh kiện
* Kiểm tra các xung đột mạch như: khoảng cách tối thiểu giữa hai linh kiện; khoảng
cách tối thiểu giữa hai đường mạch; chập đường mạch như chân đất đấu với chân
nguồn;...
* Tự động chạy đường mạch
Quy trình thiết kế mạch in
Sau đây là các bước cơ bản để hoàn thiện việc thiết kế mạch in trên phần mềm:
* Thiết kế mạch nguyên lí, xuất ra một tập tin chuẩn (netlist)
* Nhập tập tin chuẩn vào bộ phận thiết kế mạch in
* Sắp xếp linh kiện.
* Đi dây đường mạch
* Kiểm tra các xung đột mạch
j. Altium Designer
Altium Limited (ASX:ALU) là nhà phát triển giải pháp thiết kế điện tử với
phương châm hợp nhất các quá trình thiết kế vào một môi trường phát triển hợp nhất.
Các sản phẩm của Altium cho phép tất cả các kỹ sư điện tử, các kỹ sư thiết kế, phát
triển, và các tổ chức có thể tận dụng tối đa các lợi thế của công nghệ thiết kế tiên tiến,
tạo ra những sản phẩm thông minh hơn và thời gian đưa ra thị trường nhanh hơn
Altium Designer là một hệ thống phát triển điện tử thống nhất đầu tiên trên thế
giới cho phép các kỹ sư thiết kế sản phẩm điện tử từ những khái niệm ban đầu cho đến
khi hoàn thành mạch in cuối cùng trong một môi trường đơn nhất.
Altium Designer cung cấp một ứng dụng kết hợp tất cả công nghệ và chức năng
cần thiết cho việc phát triển sản phẩm điện tử hoàn chỉnh, như thiết kế hệ thống ở mức
bo mạch và FPGA, phát triển phần mềm nhúng cho FPGA và các bộ xử lý rời rạc, bố
trí mạch in (PCB)… Altium Designer thống nhất toàn bộ các quá trình lại và cho phép
bạn quản lý được mọi mặt quá trình phát triển hệ thống trong môi trường tích hợp duy
nhất. Khả năng đó kết hợp với khả năng quản lý dữ liệu thiết kế hiện đại cho phép
người sử dụng Altium Designer tạo ra nhiều hơn những sản phẩm điện tử thông minh,
với chi phí sản phẩm thấp hơn và thời gian phát triển ngắn hơn.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
89

Altium Designer là hệ thống phát triển các sản phẩm điện tử cho các thiết kế
điện tử công nghiệp, phá bỏ mọi rào cản gây bởi các quá trình thiết kế riêng rẽ và hợp
nhất các công đoạn thiết kế trong một môi trường phát triển sản phẩm duy nhất - thiết
kế phần cứng, phần cứng khả trình, phần mềm nhúng. Môi trường thiết kế hợp nhất
Altium Designer tận dụng những công nghệ điện tử tiên tiến nhất, chuyển sang
phương pháp ‘thiết kế mềm’ mà không cần kỹ năng quá chuyên nghiệp về sử dụng và
thiết kế các thiết bị khả trình. Điều này cho phép các công ty tăng sự linh hoạt của thiết
kế giảm giá thành sản phẩm và thời gian đưa sản phẩm ra thị trường. Altium Designer
cũng hỗ trợ khả năng tự do chuyển đổi giữa các linh kiện khả trình của nhiều nhà sản
xuất khác nhau, tại bất kỳ thời điểm nào. Altium Designer cũng làm giảm tổng chi phí
phát triển khi không cần tích hợp thêm những thiết bị với giá cao để tăng thêm tính
năng hoặc tạo một giải pháp hoàn chỉnh.
k. OrCAD
OrCAD — gói phần mềm dùng để tự động hóa thiết kế điện tử. Được dùng chính
trong chế tạo các bản điện tử mạch in để chế tạo mạch in, cũng như để tạo các sơ đồ
điện tử và các chế bản của chúng.
Tên gọi OrCAD được tạo ra từ các từ Oregon và CAD.
Các sản phẩm của chuỗi OrCAD thuộc về công ty Cadence Design Systems. Bản cuối
cùng của OrCAD có khả năng tạo và hỗ trợ cơ sở dữ liệu các vi mạch sẵn có. Cơ sở dữ
liệu có thể được bổ sung bằng cách tải về các gói các thành phần sản xuất, như Texas
Instruments.
Trong gói có các module sau:
 Capture — biên tập các sơ đồ nguyên lý,
 Capture CIS Option — điều hành các thư viện Active Parts,
 PSpice Analog Didital — gói của chế bản tương tự-số,
 PSpice Аdvanced Аnalysis — gói của tối ưu tham số,
 PSpice SLPS option — giao diện liên lạc với gói Matlab,
 PCB Designer — biên tập các топологий các mạch in,
 SPECCTRA for OrCAD — chương trình của трассировки tương tác và tự
động,
 Signal Explorer — module phân tích sự nguyên vẹn của các tín hiệu và của các
biến dạng giao

3.5.2. Công cụ mô phỏng


l. Proteus
Proteus là một phần mềm mô phỏng và thiết kế mạch in. Phần mềm bao gồm 2
thành phần là ISIS và AREA.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
90

ISIS là phần mô phỏng mạch, nó có thể mô phỏng cả mạch số và mạch tương


tự, tuy nhiên, điểm mạnh nhất là nó tích hợp rất nhiều thư viện linh kiện số, đặc biệt là
vi điều khiển. Trong quá trình thiết kế mạch số, cần mô phỏng phần mềm của vi điều
khiển như PIC, AVR, 8051,… thì đây là phần mềm lý tưởng nhất. Bên cạnh đó, nó còn
tích hợp mô phỏng mạch tương tự, mô phỏng ngôn ngữ mô tả phần cứng Verilog,…
AREA là phần thiết kế mạch in, bản khá nhẹ, chạy dây khá thông minh, tuy
nhiên việc quản lý, sắp xếp vị trí khi có nhiều linh kiện chưa hiệu quả lắm.

Màn hình ISIS


m. Multisim
MultiSim là phần mềm mô phỏng rất hiệu quả, đặc biệt là mô phỏng linh kiện điện tử
tương tự. Phần mềm hỗ trợ thư viện lớn, dễ sử dụng, thao tác nhanh và thông minh.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
91

Màn hình làm việc của MultiSim

3.5.3. Công cụ kiểm thử


n. Đồng hồ vạn năng

o. Máy Oscilloscope

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
92

Chương IV: PHẦN MỀM NHÚNG


Mục tiêu của chương
Giúp sinh viên có các kiến thức cơ bản về cách thức và các kỹ thuật nâng cao
khi lập trình cho một hệ thống nhúng với ngôn ngữ bậc cao C. Biết được cách và công
cụ để mô phỏng kiểm thử hệ thống.
Tóm tắt
Trình bày cách thức lập trình trên CCS, một số kỹ thuật lập trình thường gặp.
4.1. Đặc điểm phần mềm nhúng
Nói một cách đơn giản, phần mềm nhúng là phần mềm dành cho tất cả những
thiết bị không liên quan gì đến máy tính, chẳng hạn như thiết bị điều khiển, định
hướng cho ô tô, điện thoại di động, ví tiền điện tử, đồ gia dụng (ti vi, tủ lạnh, máy giặt,
điều hòa…). Như ta đã biết, số chip vi xử lý dùng trong các máy tính, mạng nội bộ và
Internet chỉ chiếm hơn 1% tổng số chip vi xử lý trên thế giới. Số còn lại thuộc về các
hệ thống nhúng.
Theo số liệu của Business Communications Company, tổng thị trường phần
mềm nhúng thế giới năm 2004 đạt khoảng 46 tỷ USD. Đến năm 2009, con số này là 88
tỷ USD.
Nhật Bản hiện nay được đánh giá là một trong những thị trường phần mềm
nhúng hàng đầu thế giới. Theo thống kê của JISA (Hiệp hội Dịch vụ CNTT Nhật Bản),
phần mềm nhúng hiện nay chiếm tới 40% thị phần phần mềm Nhật Bản, với các sản
phẩm rất đa dạng: 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… Năm 2004, thị trường phần
mềm nhúng của Nhật Bản đạt khoảng 20 tỷ USD với 150.000 nhân viên. Đây được coi
là thị trường đầy hứa hẹn với các đối tác chuyên sản xuất phần mềm nhúng như Trung
Quốc, Indonesia, Nga, Ireland, Israel và cả Việt Nam.
 Đặc điểm phần mềm nhúng:
 Hướng chức năng hoá đặc thù
 Hạn chế về tài nguyên bộ nhớ
 Yêu cầu thời gian thực
4.2. Lập trình nhúng với C
Ngôn ngữ C/C++ chúng ta đã được tìm hiểu ở môn Ngôn ngữ lập trình bậc cao,
vì thế trong phạm vi bài giảng này chỉ tập trung giới thiệu cách sử dụng ngôn C trên
trên biên dịch CCS dành cho vi điều khiển họ PIC, các thức tạo lập chương trình, các
cú pháp và cấu trúc lệnh để truy xuất và khai thác các module chức năng trên PIC.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
93

4.2.1. Giới thiệu về CCS


CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng
Microchip. Chương trình là sự tích hợp của 3 trình biên dịch riêng biết cho 3 dòng PIC
khác nhau đó là:
- PCB cho dòng PIC 12‐bit opcodes
- PCM cho dòng PIC 14‐bit opcodes
- PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dịch này đuợc tích hợp lại vào trong một chương trình bao
gồm cả trình soạn thảo và biên dịch là CCS. Giống như nhiều trình biên dịch C khác
cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử
dụng PIC trong các dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng
và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lập trình cấp cao – Ngôn ngữ C
4.2.2. Cấu trúc chương trình
Việc tạo một chương trình chúng ta có thể dùng tác vụ New\project wizard, tác
vụ này sẽ tạo ra một giao diện đồ họa cho phép chúng ta lựa chọn loại chip, tần số
thạch anh, cấu hình làm việc các module chức năng,… một cách dễ dàng. Ở đây bài
giảng đưa ra cấu trúc một chương trình cơ bản không sử dụng Wizard.

// Khai báo thư viện


#include <ten_thu_vien.h>
// các chỉ thị tiền sử lý khai báo và cấu hình các module chức năng
#INT_XXX // khai báo chương trình ngắt
XXX_ISR(){
// mã lệnh chương trình con phục vụ ngắt
}
Type Chương_trình_con(tham số){ // khai báo chương trình con
// mã lệnh chương trình con
}
Void main(){ // khia báo chương trình chính
// mã lệnh chương trinh chính
}

Ví dụ: một khung chương trình đơn giản nhất


#include <18F452.h>
void main()
{
// mã nguồn chương trình chính

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
94

}
4.2.3. Các kiểu dữ liệu
Các kiểu dữ liệu được hỗ trợ :
 int1: số 1 bit = true hay false ( 0 hay 1)
 int8: số nguyên 1 byte ( 8 bit)
 int16: số nguyên 16 bit
 int32: số nguyên 32 bit
 char: ký tự 8 bit
 float: số thực 32 bit
 short: mặc định như kiểu int1
 byte: mặc định như kiểu int8
 int: mặc định như kiểu int8
 long: mặc định như kiểu int16 5
Cách khai báo số có dấu và không dấu, cách khai báo biến tương tự cấu trúc C
đã học. Tuy nhiên với VĐK PIC cần chú ý khi khai báo mảng, nếu loại PIC sử dụng là
PIC 14 (ví dụ 16F877) thì tất cả các biến mảng không được phép quá 256Byte. Với
PIC 18 thì kích thước mảng chỉ phục thuộc vào kích thước của RAM.
4.2.4. Một số chỉ thị tiền xử lý
1. #asm và #endasm
- Chức năng: Cho phép đặt mã assembly giữa 2 mã này
- Cú pháp:
#asm
Begin:
// mã ASM
……
Begin _return_
#endasm
2. #include
- Chức năng: Khai bao sử dụng hay kế thừa các khai báo, các hàm chức
năng có sẵn từ 1 file khác
- Cú pháp:
#include <filename.h> hoặc #include <filename.c>
3. #BIT , #BYTE , #LOCATE và # DEFINE
Các chỉ thị #byte, #bit, #locate là định nghĩa một nhãn thay cho một địa chỉ vật
lý cụ thể, sau định nghĩa này người lập trình chỉ cần sử dụng nhãn đã khai báo sẽ
tương tự như việc dùng địa chỉ vật lý. Bản chất công việc này do trình biên dịch thực

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
95

hiện, nó sẽ thay thế các dòng lệnh trong chương trình có các nhãn bằng địa chỉ vật lý
đã khai báo. Giống việc khai báo Macro.
Ví dụ:
#bit motor 0x1A.2 // khai báo nhãn “motor” thay cho bit thứ 2 trong byte 0x1A
#byte data 0x62 // khai báo nhãn “data” thay cho byte có địa chỉ 0x62
#locate data2 0x01 // khai bão nhãn data2 thay cho byte có địa chỉ 0x01, locate chỉ
khác #byte ở chỗ là địa chỉ khái báo cho nhãn (ở đây là 0x01) sẽ không cho trình biên
dịch cấp phát vào việc khác.
Chỉ thị # DEFINE khai báo một macro, hay khai báo một nhãn cho một chuỗi
số hay văn bản nào đó, sau đó trong chương trình ơ đâu có nhãn này sẽ được trình biên
dịch thay bằng chuỗi đã khai báo
Ví dụ:
#define a 12345 // khai báo nhãn a thay cho 12345
4. # DEVICE
- Chức năng: Khai báo loại chip và tùy chọn cấu hình cho ADC hoặc ngắt. Chú
ý nếu là khai báo thiết bị dùng chỉ thị #include thì không dùng chỉ thị này nữa.
- Cú pháp: #device chip option. Trong đó
o Chip: *5, *8, *16 (khai bao con trỏ biến, cho biết kích thước tối đa của
biến được khia báo)
o Option: các tùy chọn nếu
 ADC=x trong đó x=8,10,12,… cho biết độ phân giải muốn sử
dụng của ADC, giá trị x tối đa tùy thuộc vào từng loại chip
 HIGH_INTS = TRUE cho phép ngắt có độ ưu tiên cao
Ví dụ: #device *16 ADC=10
5. # ORG
- Chức năng: đặt các hàm khai báo sau chỉ thị này tại đúng địa chỉ ROM được
chỉ ra.
- Cú pháp:
o # org start , end //hàm nằm trong khoảng start đến end
o # org segment //hàm nằm tùy ý trong khoảng từ segment đến hết
ROM
o #org start , end { } // vùng từ start đến end không dùng
Ví dụ:
Org 0x30 , 0x1F
Void xu_ly( )
{
} // // hàm này bắt đầu ở địa chỉ 0x30

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
96

6. # USE DELAY
- Chức năng khai báo giá trị tần số thạch anh dùng cho hàm delay (tần số này
phải trùng với tần số thạch anh ghép nối với chip)
- Cú pháp: # USE delay ( clock = speed )
Ví dụ: dùng thạch anh dao động 40Mhz thì : #use delay( clock = 40000000)
7. #USE I2C
- Chức năng: Khai báo sử dụng chuẩn truyền thông nối tiếp I2C
- Cú pháp: #use I2C ( options )
Option bao gồm các thông số sau, cách nhau bởi dấu phẩy :
- Master : chip ở chế độ master
- Slave : chip ở chế độ slave
- SCL = pin : chỉ định chân SCL
- SDA = pin : chỉ định chân SDA
- ADDRESS =x : chỉ định địa chỉ chế độ slave
- FAST : chỉ định FAST I2C
- SLOW : chỉ định SLOW I2C
- RESTART_WDT : restart WDT trong khi chờ I2C_READ( )
- FORCE_HW : sử dụng chúc năng phần cứng I2C ( nếu chip hỗ trợ )
- NOFLOAT_HIGH : không cho phép tín hiệu ở float high ( ??? ) , tín hiệu
được lái từ thấp lên cao.
- SMBUS : bus dùng không phải bus I2C , nhưng là cái gì đó tương tự .
Ví dụ: #use I2C ( master , sda=pin_B0 , scl = pin_B1 )
#use I2C (slave , sda= pin_C4 , scl= pin_C3 , address = 0xa00 , FORCE_HW )
8. #USE RS232
- Chức năng: Khai báo sử dụng chuẩn truyền thông nối tiếp RS232
- Cú pháp: #use RS232 (option)
Option thông dụng bao gồm :
- BAUD = x : thiết lập tốc độ baud rate : 19200 , 38400 , 9600 , . . .
- PARITY = x : x= N ,E hay O , với N : không dùng bit chẵn lẻ .
- XMIT = pin : set chân transmit ( chuyển data)
Ví dụ : #use rs232(baud=19200,parity=n,xmit=pin_C6,rcv=pin_C7)
4.2.5. Hàm tạo trễ DELAY
Để sử dụng các hàm delay, cần có khai báo tiền xử lý ở đầu file, VD : sử dụng
OSC 20 Mhz, bạn cần khai báo: #use delay ( clock = 20000000 ). Khai báo này là cơ
sở để hàm delay tính toán độ trễ chính xác.
a) delay_cycles (count ): Hàm dùng delay 1 số chu kỳ lệnh cho trước
Trong đó Count là hằng số từ 0 – 255 chi số chu kỳ lệnh cần trễ (1 chu kỳ lệnh
bằng 4 chu kỳ máy). Hàm không trả về trị.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
97

VD : delay_cycles ( 25 ) ; // với OSC = 20 Mhz , hàm này delay 5 µs


b) delay_us ( time ): Hàm cho phép delay khoảng thời gian theo đơn vị µs
Trong đó: Nếu time là 1 biến thì gía trị của nó trong khoảng [0-255], nếu time
là 1 hằng số thì giá trị trong khoảng [0 - 65535]. Hàm không trả về trị.
c) delay_ms (time ): Hàm cho phép delay khoảng thời gian theo đơn vị ms
Trong đó: Nếu time là 1 biến thì gía trị của nó trong khoảng [0-255], nếu time
là 1 hằng số thì giá trị trong khoảng [0 - 65535]. Hàm không trả về trị.
VD :
Int a = 215;
Delay_us ( a ) ; // delay 215 µs
Delay_us ( 4356 ) ; // delay 4356 µs
Delay_ms ( 2500 ) ; // delay 2. 5 s
4.2.6. Hàm truy cập các kênh ADC
a) Cấu hình các kênh ADC
1) setup_ADC(mode); Hàm thiết lập chế độ làm việc cho các kênh ADC
Trong đó mode là hằng số thiết lập giá trị cho thanh ghi điều khiển thiết lập chế
độ hoạt động của ADC. Tùy thuộc vào thiết bị mà ta sử dụng thông qua khai báo
#inlude <*.h> mà mode được định nghĩa khác nhau. Để xem chi tiết ta có thể mở file
thiết bị *.h tương ứng trong thư mục DEVICE để xem các định nghĩa. Trong phạm vi
bài giảng này chỉ đưa ra một số các hằng số mode định nghĩa sẵn cho dòng chip
18C452 như sau:
 ADC_OFF: tắt hoạt động ADC (tiết kiệm điện , dành chân cho hoạt động khác)
 ADC_CLOCK_INTERNAL: mở ADC với thời gian lấy mẫu bằng xung clock
IC (mất 2-6 µs), hằng số này thường là chung cho các chip .
 ADC_CLOCK_DIV_2: mở ADC với thời gian lấy mẫu bằng xung clock / 2
(mất 0.4 us trên thạch anh 20MHz)
 ADC_CLOCK_DIV_8: mở ADC với thời gian lấy mẫu bằng xung clock / 8
(1.6 us)
 ADC_CLOCK_DIV_32: mở ADC với thời gian lấy mẫu bằng xung clock / 32
(6.4 us)
2) Setup_ADC_ports ( value ); // hàm cho phép các kênh làm việc ở chế độ ADC
Trong đó value là một hằng số, trong file thiết bị *.h luôn khai báo sẵn các hằng
số cho giá trị value này, ở đây bài giảng chỉ đưa ra một số giá trị của value như sau:
 ALL_ANALOGS : dùng tất cả chân sau làm analog (A0 A1 A2 A3 A5 E0 E1
E2 (Vref=Vdd) )
 NO_ANALOG : không dùng analog , các chân đó sẽ là chân I /O .
 AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF : A0 A1 A2 A5 E0 E1
E2 VRefh=A3

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
98

 AN0_AN1_AN2_AN3_AN4 : A0 A1 A2 A3 A5
 AN0_AN1_AN3 : A0 A1 A3 , Vref = Vdd
 AN0_AN1_VSS_VREF : A0 A1 VRefh = A3
 AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF : A0 A1 A5 E0 E1 E2
VRefh=A3 , VRefl=A2 .
 AN0_AN1_AN2_AN3_AN4_AN5 : A0 A1 A2 A3 A5 E0
 AN0_AN1_AN2_AN4_AN5_VSS_VREF : A0 A1 A2 A5 E0 VRefh=A3
 AN0_AN1_AN4_AN5_VREF_VREF : A0 A1 A5 E0 VRefh=A3 VRefl=A2
 AN0_AN1_AN4_VREF_VREF : A0 A1 A5 VRefh=A3 VRefl=A2
 AN0_AN1_VREF_VREF : A0 A1 VRefh=A3 VRefl=A2
 AN0 : A0
 AN0_VREF_VREF : A0 VRefh=A3 VRefl=A2
3) Set_ADC_channel ( channel ); // chọn kênh trước khi đọc giá trị AD
Trong đó channel có giá trị từ 0-7 tương ứng với 8 kênh ADC (với 18F452) như
sau:
 0-chân A0  4-chân A5
 1-chân A1  5-chân E0
 2-chân A2  6-chân E1
 3-chân A3  7-chân E2
4) Read_ADC ( mode ); // đọc giá trị ADC từ kệnh được chọn qua hàm
set_adc_channel
Mode có thể có hoặc không, nếu có thì nhận một trong 3 giá trị sau:
 ADC_START_AND_READ : giá trị mặc định
 ADC_START_ONLY : bắt đầu chuyển đổi và trả về
 ADC_READ_ONLY : đọc kết quả chuyển đổi lần cuối
Giá trị hàm trả về là 8 bít nếu ADC là 8bit, là 16bit nếu ADC lớn hơn 8 bit
Ví dụ: Chương trình ví dụ sau câu hình kênh AN0 hoặt động ở chế độ ADC 8bit,
chương trình luôn đọc giá trị từ AN0 và gửi ra cổng D.
Sơ đồ mạch trên proteus

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
99

Chương trình
#include <18F452.h >
#device ADC=8 // cấu hình ADC với độ phân giải 8bit
void main ( )
{
setup_adc(ADC_CLOCK_INTERNAL); // tần số lấy mẫu lad OSC
setup_adc_ports(AN0); // cho phép AN0 làm việc
set_tris_D(0x00); // đặt cổng D là cổng ra
set_adc_channel(0); // chọn cổng AN0 để đọc dữ liệu
while(1)output_D(read_adc()); // đọc AN0 và đưa ra cổng D
}
4.2.7. Các hàm truy xuất vào ra
1) Output_low (pin) , Output_high (pin): Thiết lập mức 0 (low, 0V) hay mứ c 1
(high , 5V) cho chân IC với pin chỉ vị trí chân.
VD : chương trình xuất xung vuông chu kỳ 500ms , duty =50% ra chân B0 ,nối B0 với
1 led sẽ làm nhấp nháy led:
Sơ đồ mạch trên proteus

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
100

Chương trình
#include <18F452.h>
#use delay(clock=20000000)
void main(){
while(1)
{
output_high(pin_B0); // B0=1
delay_ms(250); // tre 250ms
output_low(pin_B0); //B0=0
delay_ms(250); // te 250ms
}
}

2) Output_bit ( pin , value ); // hàm gửi giá trị value ra chân pin với value là biến 1
bit
VD: Chương trình sau kiểm tra nếu button ở A0=1 thì bật led ở B0, trái lại tắt.
Mạch trên proteus

Chương trình
#include <18F452.h>
#use delay(clock=20000000)
void main(){

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
101

set_tris_A(255); // tat ca cac pin cua A deu la cong vao


while(1){ output_bit(pin_B0,input(pin_A0)); // B0=1}
}
3) Input ( pin ); // hàm đọc giá trị từ 1 pin của chip
VD: Như trong ví dụ của phần 2 ở trên có lệnh input(pin_A0);
4) Output_X ( value ); // gửi giá trị 1 byte ra công X
VD : Output_B ( 212 ) ; // xuất giá trị 11010100 ra port B
5) Input_X ( ); // đọc giá trị từ 1 công X về
VD : m=input_E();
6) Set_tris_X ( value ); // cấu hình chế độ vào ra cho các pin ở công X
Trong đó X là 1 cổng (A, B,…), value là 1 giá trị 8 bít. Với mỗi bit thứ i trong
value = 1 tương ứng với chân thứ i trong X là công vào, nếu bằng 0 là cổng ra.
VD: với lệnh set_tris_B(0xF0) thì các chân từ B0 đến B3 là cổng ra, còn từ B4 đến
B7 là cổng vào.
4.3. Một số kỹ thuật lập trình nhúng
4.3.1. Xử lý ngắt
a) Mức ưu tiên ngắt
Với các loại PIC 10, 12, 14 thì chỉ có ngắt 1 cấp, tức tất các các ngắt có mức ưu
tiên như nhau, nếu một ngắt đang thực hiện thì sẽ không bị dừng nếu có ngắt khác xẩy
ra. Với PIC 18 có 2 cấp ưu tiên, các ngắt ở cấp ưu tiên 1 nếu đang được phục vụ sẽ bị
dừng nếu có ngắt ở cấp 2 xẩy ra.
b) Cú pháp
 Cấu trúc 1 chương trình ngắt đơn giản:
….
#int_loaingat
void chuongtrinhconngat(){
….
}
 Cấu trúc một chương trình ngắt có độ ưu tiên cấp 2 (với CCS chỉ có 1 ngắt
được ở cấp 2)
...
#device high_ints=true

#int_loaingat FAST
void chuongtrinhconngat(){

}

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
102

c) Các loại ngắt


Tùy thuộc vào mỗi loại chip mà số ngắt được hỗ trợ là khác nhau, với PIC18 có
35 ngắt. Một số chỉ thị khai báo ngắt (loại ngắt) như sau:
- #INT_AD: chuyển đổi A /D đã hoàn tất , thường thì không nên dùng
- #INT_BUSCOL : xung đột bus
- #INT_CCP1 : có Capture hay compare trên CCP1
- #INT_CCP2 : có Capture hay compare trên CCP2
- #INT_COMP : kiểm tra bằng nhau trên Comparator
- #INT_EXT : ngắt ngoài
- #INT_EXT1 : ngắt ngoài 1
- #INT_EXT2 : ngắt ngoài 2
- #INT_I2C : có hoạt động I 2C
- #INT_LCD : có hoạt động LCD
- #INT_LOWVOLT : phát hiện áp thấp
- #INT_PSP : có data vào cổng Parallel slave
- #INT_RB : bất kỳ thay đổi nào trên chân B4 đến B7
- #INT_RC : bất kỳ thay đổi nào trên chân C4 đến C7
- #INT_RDA : data nhận từ RS 232 sẵn sàng
- #INT_RTCC : tràn Timer 0
- #INT_SSP : có hoạt động SPI hay I 2C
- #INT_TBE : bộ đệm chuyển RS 232 trống
- #INT_TIMER0 : một tên khác của #INT_RTCC
- #INT_TIMER1 : tràn Timer 1
- #INT_TIMER2 : tràn Timer 2
- #INT_TIMER3 : tràn Timer 3
- #INT_TIMER5 : tràn Timer 5
- #INT_OSCF : lỗi OSC
- #INT_PWMTB : ngắt cuả PWM time base
- #INT_IC3DR : ngắt đổi hướng ( direct ) của IC 3
- #INT_IC2QEI : ngắt của QEI
- #INT_IC1 : ngắt IC 1
d) Thiết lập cấu hình ngắt
1) enable_interrupts ( int_ ); // cho phép ngắt hoặt động, trong đó int_ là 1 trong các
ngắt ở mục c ở trên
VD:
enable_interrupts (int_timer0);// cho phép ngắt timer 0 làm việc
enable_interrupts (int_timer1 ) ;// cho phép ngắt timer 1 làm việc
enable_interrupts ( global );// cho phép ngắt toàn cục
2) disable_interrupts (int_); // cấm ngắt, tham số int_ tương tự phần 1

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
103

VD:
disable_interrupts (int_timer0);// cho phép ngắt timer 0 làm việc
disable_interrupts (int_timer1 ) ;// cho phép ngắt timer 1 làm việc
disable_interrupts ( global );// cho phép ngắt toàn cục
3) clear_interupt (int_); // xóa cờ ngắt
VD:
Clear_interrupts(int_time0);// xóa cờ ngắt của timer0
4) ext_int_edge ( source , edge ); // thiết lập nguồn ngắt cho ngắt ngoại vi
Trong đó:
- source: ngắt được thiết lập, với PIC 18 có 3 ngắt ngoại vi EXT0, EXT1, EXT2
tương ứng với source = 1, hoặc 2, hoặc 3.
- edge: = L_TO_H ngắt tại cạnh dương, = H_TO_L ngắt tại cạnh âm
e) Một ví dụ

Ví dụ đơn giản chi bắt ngắt trên cổng B (bất kỳ tín hiệu nào xuất hiện tiừ B4-
B7) sau đó đưa ra vị trí tương ứng nhưng trên cổng D. Trong chương trình này dễ dàng
nhận thấy chương trình chính không làm gì, chỉ khi có ngắt chip mới thực hiện đọc giá
trị từ B đưa ra D.
Mạch trên proteus

Chương trình
#include <18C452.h >
#device *=16
#use delay (clock = 20000000 )
#INT_RB // khai bao su dung ngat thay do trang thai tren cong B

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
104

Void RB_LED ( ) // chuong trinh con phuc vu ngat


{
output_D(input_B()); // doc cong B dua ra cong D
}
void main ( )
{
// cau hinh cac cong vao ra va ngat
set_tris_b ( 0xF0 ) ; // portB = 11110000 , B4-B7 vao , B0-B3 ra
set_tris_d ( 0x00 ) ; // portD = 00000000 , D0-D7 ra
enable_interrupts ( INT_RB ) ; // cho phep ngat cong B
enable_interrupts ( GLOBAL ) ; // cho phep ngat toan cuc
// chuong trinh chinh khong lam gi
while( true );
}
4.3.2. Xử lý TIMER
Trong tất cả các loại PIC đều tích hợp các bộ timer, về bản chất timer là bộ đếm
(counter), tuy nhiên nguồn xung đếm có thể là nguồn ngoại vi hoặc từ bộ dao động của
hệ thống. Chính vì thế về mặt chức năng ta có thể hiểu chúng có 2 chức năng, một là
bộ đếm và hai là bộ định thời.

Hình 32: Sơ đồ khối timer


Bộ định thời cũng giống như hàm DELAY, để tạo ra một khoảng thời gian trễ
chính xác nào đấy, tuy nhiên khác với hàm DELAY ở chỗ, hàm DELAY trễ là do CPU

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
105

thực hiện một công việc không sinh công để sinh ra thời gian cần trễ, việc này làm tổn
hao hiệu xuất của CPU và không thích hợp với các hệ thống yêu cầu thời gian thực,
còn với chức năng định thời của các timer thì CPU vẫn có thể làm một việc khác trong
khi việc định thời giao cho Timer thực hiện, hay nói cách khác CPU và timer lúc này
cùng thực hiện song song.
Chức năng counter hay còn gọi là đếm sự kiện, lúc này bộ timer phải được cấu
hình lấy nguồn xung đếm từ các chân ngoại vi, timer sẽ trở thành các bộ couter dùng
cho việc đếm xác xung đầu vào được gửi về từ các sensor số.
Các hàm xử lý timer0:
1) setup_timer_0 (mode); // hàm cấu hình cho timer0
Trong đó : mode có thể là 1 hoặc 2 trong 2 nhóm tham số sau:
- RTCC_INTERNAL, RTCC_EXT_L_TO_H hoặc RTCC_EXT_H_TO_L
- RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16,
RTCC_DIV_32, RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256
- Nếu là PIC18 có thêm: RTCC_OFF, RTCC_8_BIT
Khi sử dụng 2 hằng số phải được ghép bằng phép hoặc “|”.
VD: setup_timer_0 (RTCC_DIV_2|RTCC_EXT_L_TO_H);
2) set_timer0(value) ; // thiết lập giá trị đếm cho timer, lưu ý là tất cả các bộ timer
đều đếm tiến, khi bị tràn timer lại tiếp tục đếm từ 0. Value là giá trị nạp, cần lưu
ý value là 8 bit nếu timer là 8bit, 16bit nếu timer là 16bit.
3) get_timer0; // hàm trả về giá trị hiện thời của timer0.
Ví dụ: Một ví dụ đơn giản sửu dụng ngắt timer1
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)

#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#endif

// This interrupt is used to output the waveforms. The interrupt


// is automatically called ever 200us.
#INT_TIMER1
void wave_timer() {
int i;

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
106

set_timer1(0xFC4F); // sets timer to interrupt in 200us


//… cong viec muon thuc hien sau moi 200us
}

void main() {
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // Chọn nguồn xung hệ thống
enable_interrupts(INT_TIMER1); // cho phép ngắt timer1
enable_interrupts(GLOBAL);
while(TRUE); // chương trình chính không làm gì
}

4.3.3. Truyền thông chuẩn RS232


a) Cấu hình cổng RS232
Để cấu hình chế độ làm việc cho công RS232 trên PIC tối thiêu ta phải sử dụng
hai hàm sau:
 #use delay (clock = xxxx ) // giá trị OSC hệ thống, tham số này cần chính xác
để hệt thống tính toán đúng tốc độ truyền thông
 #use rs232 (option); // các tùy chọn cấu hình cho giao thức truyền thông, option
có thể là các giá trị sau (một số hằng số thông dụng):
o BAUD=x: tốc độ truyền thông
o XMIT=pin: chân truyền
o RCV=pin: chân nhận
o PARITY=X: với x = N, E, hoăc O.
o STOP=X: X là số bit STOP
b) Một số hàm truyền thông thông dụng
1) printf ( string ) hoặc Printf ( cstring , values . . . ); //truyền một xâu ra cổng
RS232
Trong đó:
- string là 1 chuỗi hằng hay 1 mảng ký tự ( kết thúc bởi ký tự null ) .
- value là danh sách các biến , cách nhau bởi dấu phẩy .
Giống như hàm xuất ra màn hình trong ngôn ngữ C, ta phải cấu hình cho dữ
liệu được gửi ra công RS232 như gửi ra màn hình. Cú pháp định dạng cho value theo
kiểu %wt. Trong đó w có thể có hoặc không, chỉ số vị trí chứa giá trị. Còn t là kiểu giá
trị hiển thị. t có thể là :
- C : 1 ký tự
- S : chuỗi hoặc ký tự
- U : số 8 bit không dấu

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
107

- x : số 8 bit kiểu hex ( ký tự viết thường ,VD : 1ef )


- X : số 8 bit kiểu hex ( ký tự viết hoa ,VD : 1EF )
- D : số 8 bit có dấu
- e : số thực có luỹ thừa VD : e12
- f : số thực
- Lx : số hex 16 /32 bit ( ký tự viết thường )
- LX : hex 16 /32 bit ( ký tự viết hoa )
- Lu : số thập phân không dấu
- Ld : số thập phân có dấu
VD:
Int k =6 ;
Printf ( " hello " );
Printf ( " %u " , k );
2) KBHIT ( ); // hàm trả về 1 sẽ báo quá trình nhận 1 ký tự thành công và sẵn sàng
cho việc đọc, bằng 0 nếu quá trình nhận chưa hoàn tất. Hàm này có thể dùng để hỏi
vòng xác định thời điểm nhận thành công 1 ký tự trên đường truyền.
3) value=getch(); // hàm đọc 1 ký tự từ bộ đệm nhận, giá trị trả về là 1 byte
4) putc(data), getch(); hàm truyền và nhận một ký tự trên đường truyền
Ví dụ: Ví dụ lập trình cho PIC truyền liên tục đọc cổng B gửi ra công D và truyền qua
đường RS232 chp PIC nhân, PIC nhận liên tục đọc từ đương truyền RS232 và gửi ra
cổng D
Chương trình trên PIC truyền
#include <18F452.h >
#use delay(clock=40000000)
#use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
unsigned int8 data;
void main ( )
{
set_tris_B(0xFF);
set_tris_D(0x00);
while(1){
data=input_B();
putc(data);
output_D(data);
}
}
Chương trình trên PIC nhận
#include <18F452.h >

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
108

#use delay(clock=40000000)
#use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
unsigned int8 data;
void main ( )
{
set_tris_D(0x00);
while(1){
while(!kbhit());
data=getch();
output_D(data);
}
}
Sơ đồ mạch mô phỏng trên Proteus

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
109

4.4. Hệ điều hành nhúng


4.4.1. Khái niệm và yêu cầu chung
Nguồn gốc ra đời của hệ điều hành là để đảm nhiệm vai trò trung gian để tương
tác trực tiếp với phần cứng của máy tính, phục vụ cho nhiều ứng dụng đa dạng. Các hệ
điều hành cung cấp một tập các chức năng cần thiết để cho phép các gói phần mềm
điều khiển phần cứng máy tính mà không cần phải can thiệp trực tiếp sâu. Hệ điều
hành của máy tính có thể thấy nó bao gồm các drivers cho các ngoại vi tích hợp với
máy tính như card màn hình, card âm thanh... Các công cụ để quản lý tài nguyên như
bộ nhớ và các thiết bị ngoại vi nói chung. Điều này tạo ra một giao diện rất thuận lợi
cho các ứng dụng và người sử dụng phát triển phần mềm trên các nền phần cứng đã
có. Đồng thời tránh được yêu cầu và hiểu biết sâu sắc về phần cứng và có thể phát
triển dựa trên các ngôn ngữ bậc cao. Hệ thống điều hành bản chất cũng là một loại
phần mềm nhưng nó khác với các loại phần mềm thông thường. Sự khác biệt điển hình
là hệ thống điều hành được nạp và thực thi đầu tiên khi hệ thống bắt đầu khởi động và
được thực hiện trực tiếp bởi bộ xử lý của hệ thống. Hệ thống điều hành được viết để
phục vụ điều khiển bộ xử lý cũng như các tài nguyên khác trong hệ thống bởi vì nó sẽ
đảm nhiệm chức năng quản lý và lập lịch các quá trình sử dụng CPU và cùng chia sẻ
tài nguyên.

Hình 33: Kiến trúc một HĐH


Tóm lại, hệ điều hành thực chất chính là một giao diện quan trọng, giao tiếp
trực tiếp với tầng phần cứng cấp thấp phục vụ cho cả người sử dụng cũng như các
chương trình ứng dụng thực thi trên nền phần cứng hệ thống. Hơn nữa hệ điều hành
còn có vai trò quan trọng trong việc đảm nhiệm 3 tác vụ nguyên lý chính: (1) Quản lý
quá trình, (2) Quản lý tài nguyên, (3) Bảo vệ tài nguyên khỏi sự xâm phạm của các quá
trình thực thi sai.
 Yêu cầu chung với một HĐH

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
110

Như chúng ta đã được biết đối với các hệ thống thời gian thực, yêu cầu thiết kế
một hệ điều hành khá đặc biệt. Hệ nhúng thời gian thực lại yêu cầu hệ điều hành phải
thực hiện với một nguồn tài nguyên thường rất hạn hẹp. Mặc dù kích thước bộ nhớ
tích hợp on‐chip sẽ có thể tăng lên trong tương lai nhưng với sự phát triển hiện nay hệ
điều hành cho các hệ nhúng chỉ nên cỡ khoảng nhỏ hơn 32 Kbytes.
Hệ thống điều hành đảm nhiệm việc điều khiển các chức năng cơ bản của hệ
thống bao gồm chủ yếu là quản lý bộ nhớ, ngoại vi và vào ra giao tiếp với hệ thống
phần cứng. Một điểm khác biệt cơ bản như chúng ta đã biết về hệ điều hành với các
phần mềm khác là nó thực hiện chức năng điều khiển sự kiện thực thi trong hệ thống.
Có nghĩa là nó thực hiện các tác vụ theo mệnh lệnh yêu cầu từ các chương trình ứng
dụng, thiết bị vào ra và các sự kiện ngắt.
Bốn nhân tố chính tác động trực tiếp tới quá trình thiết kế hệ điều hành là (1) khả
năng thực hiện, (2) năng lượng tiêu thụ, (3) giá thành, và (4) khả năng tương thích.
Hiện nay chúng ta cũng có thể bắt gặp rất nhiều hệ điều hành khác nhau đặc biệt cho
các hệ nhúng cũng vì sự tác động của 4 nhân tố nêu trên. Hầu hết chúng đều có kiểu
dạng và giao diện khá giống nhau nhưng cơ chế quản lý và thực thi các tác vụ bên
trong rất khác nhau. Mỗi hệ điều hành được thiết kế phục vụ trực tiếp các chức năng
đặc thù phần cứng của hệ nhúng và không dễ dàng so sánh được giữa chúng với nhau.
Hai thành phần chính trong thiết kế hệ điều hành là: phần hạt nhân (kernel) và
các chương trình hệ thống. Hạt nhân nó chính là phần lõi của hệ điều hành. Nó được
sử dụng để phục vụ cho các bộ quản lý quá trình, bộ lập lịch bộ quản lý tài nguyên và
bộ quản lý vào ra. Phần hạt nhân đảm nhiệm chức năng lập lịch, đồng bộ và bảo vệ hệ
thống bởi việc sử dụng sai, xử lý ngắt…Chức năng điều khiển chính của nó là phục vụ
điều khiển phần cứng bao gồm ngắt, các thanh ghi điều khiển, các từ trạng thái và các
bộ định thời gian. Nó nạp các phần mềm điều khiển thiết bị để cung cấp các tiện ích
chung và phối hợp với các hoạt động vào ra với hệ thống. Phần hạt nhân có vai trò
điều khiển rất quan trọng để đảm bảo tất cả các phần của hệ thống có thể làm việc ổn
định và thống nhất.
Hai kiến trúc thiết kế phần hạt nhân kinh điển nhất là kiến trúc vi hạt nhân và đơn
hạt nhân (monolithic). Các vi hạt nhân cung cấp các chức năng điều hành cơ bản cốt
lõi (thô) theo cơ chế các module tương đối độc lập đảm nhiệm các tác vụ cụ thể và
chuyển rời rất nhiều các dịch vụ điển hình điều hành hệ thống thực thi trong không
gian người sử dụng. Nhờ cơ chế này mà các dịch vụ có thể được khởi tạo hoặc cấu
hình lại mà không nhất thiết phải khởi tạo lại toàn bộ hệ thống. Kiến trúc vi hạt nhân
cung cấp độ an toàn cao bởi vì dịch vụ hệ thống chạy ở tầng người sử dụng với hạn
chế về truy nhập vào tài nguyên của hệ thống và có thể được giám sát. Kiến trúc vi hạt
nhân có thể được xây dựng một cách mềm dẻo để phù hợp với cấu hình phần cứng
khác nhau một cách linh hoạt hơn so với kiểu kiến trúc hạt nhân monilithic. Tuy nhiên
do tính độc lập tương đối giữa các modul trong vi hạt nhân nên cần thiết phải có một

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
111

cơ chế trao đổi thông tin hay truyền thông giữa các modul đó vì vậy có thể là lý do làm
chậm tốc độ và giảm tính hiệu quả hoạt động của hệ thống. Đặc điểm nổi bật và cốt lõi
của kiến trúc vi hạt nhân là kích thước nhỏ và dễ dàng sửa đổi cũng như xây dựng linh
hoạt hơn. Các dịch vụ thực thi ở tầng trên của hạt nhân vì vậy đạt được độ an toàn cao.
Kiến trúc vi hạt nhân được phát triển mạnh mẽ trong các hệ thống đa xử lý ví dụ như
Windows 2000, Mach và QNX.
Kiểu kiến trúc monolithic cung cấp tất cả chức năng/dịch vụ chính yếu thông qua
một qua trình xử lý đơn lẻ. Chính vì vậy kích thước của chúng thường lớn hơn kiểu
kiến trúc vi hạt nhân. Loại hình kiến trúc này thường được áp dụng chủ yếu cho các
phần cứng cụ thể mà hạt nhân monolithic có sự tương tác trực tiếp với phần cứng nhờ
vậy mà khả năng tối ưu cũng dễ dàng hơn so với áp dụng kiểu kiến trúc vi hạt nhân.
Chính vì vậy cũng là lý do tại sao kiến trúc monolithic không thể thay đổi mềm dẻo
linh hoạt như kiểu vi hạt nhân. Ví dụ điển hình về loại hình kiến trúc hạt nhân
monolithic bao gồm Linux, MacOS, và DOS.
Vì hệ điều hành cũng đòi hỏi về tài nguyên và kiêm cả chức năng quản lý chúng
vì vậy người thiết kế cần phải nắm được thông tin về chúng một cách đầy đủ. Ví dụ
như đối với hệ thống điều hành cho Sun Microsystem Solaris yêu cầu tối thiểu không
gian bộ nhớ trên đĩa là 8MB; Windows 2000 yêu cầu khoảng gấp hai lần như vậy.
4.4.2. Bộ nạp khởi tao Boot – loader
Thuật ngữ “bootstrap” bắt nguồn từ cách diễn đạt cổ xưa có nghĩa là tự mình
vươn lên bằng chính nỗ lực của bản thân “pulling yourself up by your own
bootstraps”. Nó đã được sử dụng như một thuật ngữ rất phổ biến để gọi tên một phần
mềm thực thi việc khởi tạo chương trình thực thi trên các nền vi điện tử khả trình nói
chung. Chương trình này thường rất nhỏ gọn và đảm nhiệm chức năng tiền hoạt động
của hệ điều hành. Cũng rất phổ biến hiện nay người ta cũng thường dùng thuật ngữ
“boot‐loader” (bộ nạp khởi tạo) thay vì “bootstrap”. Bộ nạp khởi tạo thực chất là một
chương trình nhỏ thực hiện trong hệ thống và đảm nhiệm chức năng cần thiết để đưa
hệ điều hành vào hoạt động. Trong các hệ nhúng, các lệnh được thực hiện đầu tiên
thường nằm trong các vùng nhớ ROM và thường thuộc loại chậm. Dó đó, một trong
những tác vụ phổ biến của bộ nạp khởi tạo là sao chép chương trình ứng dụng chính
(main program) vào trong vùng bộ nhớ nhanh trước khi chúng được thực hiện. Bộ nạp
khởi tạo cũng có nhiệm vụ khởi tạo vùng nhớ dữ liệu và các thanh ghi hệ thống trước
khi nhảy tới chương trình ứng dụng chính. Cũng có rất nhiều dạng khác nhau của bộ
nạp khởi tạo, từ dạng đơn giản đến phức tạp. Dạng đơn giản nhất có thể chỉ là một
lệnh nhảy tới chương trình ứng dụng chính ngay sau khi reset mà không thực hiện bất
kỳ một tác vụ khởi tạo hay nạp chương trình gì. Chương trình ứng dụng chính sẽ phải
tự thiết lập để thực thi tác vụ của mình. Các bộ nạp khởi tạo phức tạp hơn có thể thực
hiện nhiệm vụ chuẩn đoán bộ nhớ và khởi tạo hệ thống, kiểm tra chương trình và nạp
chúng trước khi cho bộ xử lý nhảy tới thực hiện chương trình ứng dụng chính.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
112

Sau đây chúng ta sẽ tìm hiểu về một môi trường phát triển khá điển hình và
thảo luận về một số các thuộc tính nguyên lý cơ bản của bộ nạp khởi tạo.

Hình 34: Nguyễn lý thực hiện của boot - loader


Trong môi trường phát triển hệ nhúng điển hình, nền phần cứng đích cần phát
triển được kết nối với trạm chủ (host) thông qua một giao diện truyền thông. Một môi
trường phát triển bao gồm một chương trình gỡ rối (debugger) ví dụ như Code
Composer Studio của Texas Instrument, để cho phép người phát triển chương trình
nạp và thực hiện thử nghiệm các chương trình trên phần cứng đích. Một số các công
cụ hỗ trợ ví dụ như để thiết lập các điểm dừng (breakpoint)…và các nhiệm vụ phụ trợ
khác để bám sát trạng thái quá trình thực thi thời gian thực của chương trình thử
nghiệm. Điều này rất có ý nghĩa và tạo nên một sự dễ dàng hơn trong quá trình phát
triển và gỡ rối một chương trình ứng dụng mới cho nền phần cứng đích.
Thông thường các ứng dụng được phát triển trong môi trường ngôn ngữ C thì
chương trình ứng dụng chính được thực thi và nằm trong phạm vi hàm main() phần
khởi tạo chương trình và nạp tiền thực hiện chương trình chính thường không tường
minh hoặc bị ẩn đi. Thực chất điều này chỉ đúng đối với những người phát triển mã
chương trình ứng dụng chính bằng ngôn ngữ bậc cao (đặc biệt cho các ứng dụng
không phải cho hệ nhúng) mà không cần phải quan tâm nhiều đến các tác vụ cơ sở
đảm nhiệm việc khởi tạo các thanh ghi hệ thống, ngăn xếp và dữ liệu…Điều này cũng
rất có ý nghĩa để tạo ra một cảm giác và môi trường phát triển thân thiện cho người
phát triển chương trình và chỉ cần tập trung phần thực hiện chức năng chính của hệ
thống. Tuy nhiên trong môi trường phát triển hệ thống nhúng việc thực thi chương
trình thường bắt đầu tại địa chỉ chương trình nơi bắt đầu tác vụ khởi tạo hệ thống trước
khi nhảy tới thực hiện chương trình chính main(). Quá trình này được bắt đầu thực
chất là thực thi một tác vụ ngắt kích hoạt bởi sự kiện reset.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
113

Boot‐loader cũng có nhiều dạng khác nhau. Hình 21 mô tả một bộ nạp khởi tạo
cho một ứng dụng C nhúng. Trong ví dụ này vector RESET trỏ tới thủ tục c_int00 thực
hiện tác vụ khởi tạo. Ngoài việc khởi tạo các thanh ghi, ngăn xếp… các biến C cũng
cần được khởi tạo trước khi được thực thi. Quá trình này sẽ sao chép từ phần .cinit và
viết vào các địa chỉ dữ liệu tương ứng của chúng trong phần .bss. Sau khi hoàn thành
chương trình chính main() mới được gọi và bắt đầu thực thi. Trong ví dụ đơn giản này
bộ nạp khởi tạo tổ hợp vector RESET cùng với hàm khởi tạo c_int00 và giả thiết rằng
cả chương trình bộ nạp khởi tạo và chương trình ứng dụng chính đều nằm cùng trong
vùng nhớ vật lý non‐volatile. Trong các trường hợp hệ thống phức tạp hơn, bộ nạp
khởi tạo có thể bao hàm cả tác vụ sao chép chương trình chính vào trong vùng nhớ fast
volatile trước khi nó được gọi và thực thi. Bộ nạp khởi tạo cũng có thể đảm nhiệm cả
chức năng chuẩn đoán, gỡ rối và nâng cấp hệ thống nếu có. Chức năng chuẩn đoán có
thể chỉ là kiểm tra bộ nhớ, ngoại vi và độ tương thích tích hợp trong hệ thống. Chức
năng gỡ rối cũng có thể là một giao diện giám sát cung cấp thông tin và trạng thái thời
gian thực về hệ thống mà người ta vẫn thường biết tới với tên gọi là chương trình
monitoring. Việc nâng cấp hoặc thay đổi chương trình bộ nạp khởi tạo cũng có thể
được thực thi nhờ khả năng lập trình FLASH in‐circuit và nạp từ bộ nhớ ngoài thông
qua giao diện với trạm chủ hoặc chức năng tương tự.

Hình 35: Cấu trúc của một boot - loader


4.4.3. Hệ điều hành thời gian thực
QNX là một ví dụ điển hình về hệ thống thời gian thực RTOS được thiết kế để
đáp ứng các yêu cầu về lập lịch rất khắt khe. QNX cũng chưa thực sự phù hợp để có
thể được thực thi cho các hệ thống nhúng bởi vì nó đòi hỏi dung lượng bộ nhớ không
nhỏ và thường phù hợp cho các ứng dụng đòi hỏi về độ an toàn và độ tin cậy lớn.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
114

Hệ thống điều hành thời gian thực là hệ điều hành hỗ trợ khả năng xây dựng các
hệ thống thời gian thực.

Hình 36: So sánh kiến trúc RTOS và OS chuẩn


Hệ thống điều hành với phần lõi là hạt nhân phải đảm nhiệm các tác vụ chính
như sau:
Xử lý ngắt
 Lưu trữ ngữ cảnh chương trình tại thời điểm xuất hiện ngắt
 Nhận dạng và lựa chọn đúng bộ xử lý và phục vụ dịch vụ ngắt
Điều khiển quá trình
 Tạo và kết thúc quá trình/tác vụ
 Lập lịch và điều phối hoạt động hệ thống
 Định thời
Điều khiển ngoại vi
 Xử lý ngắt
 Khởi tạo giao tiếp vào ra

Hình 37: Cấu trúc một RTOS


Tùy theo cơ chế thực hiện và xây dựng hoạt động của hạt nhân người ta phân
loại một số loại hình:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
115

(1) Hệ thống thời gian thực nhỏ: Với loại này các phần mềm được phát triển mà không
cần có hệ điều hành, người lập trình phải tự quản lý và xử lý các vấn đề về điều khiển
hệ thống bao gồm:
 Xử lý ngắt
 Điều khiển quá trình/ tác vụ
 Quản lý bộ nhớ
(2) Công nghệ đa nhiệm
 Mỗi quá trình có một không gian bộ nhớ riêng
 Các quá trình phải được chia nhỏ thành các Thread cùng chia sẻ không gian bộ
nhớ.
(3) Các dịch vụ cung cấp bởi hạt nhân
 Tạo và kết thúc quá trình/ tác vụ
 Truyền thống giữa các quá trình
 Các dịch vụ về định thời gian
 Một số các dịch vụ cung cấp hỗ trợ việc thực thi liên quan đến điều khiển
hệthống
Đặc điểm cơ bản của hạt nhân thời gian thực điển hình:
 Kích thước nhỏ (lưu trữ toàn bộ trong ROM)
 Hệ thống ngắt
 Không nhất thiết phải có các cơ chế bảo vệ
o Chỉ hỗ trợ phần kiểm tra chương trình ứng dụng
o Tăng tốc độ chuyển ngữ cảnh và truyền thông giữa các quá trình
o Khi các quá trình ứng dụng đang thực hiện thì các yêu cầu hệ thống điều
hành có thể được thực hiện thông qua các lời gọi hàm thay vì sử dụng cơ
chế ngắt mềm
 Vi hạt nhân (Micro‐kernel): Bao gồm một tập nhỏ các dịch vụ hỗ trợ
o Quản lý quá trình
o Các dịch vụ truyền thông giữa các quá trình nếu cần
o Các phần mềm điều khiển thiết bị là các quá trình ứng dụng
Hạt nhân điển hình cơ bản
 Loại hạt nhân đơn giản nhất là một vòng lặp vô hạn thăm dò các sự kiện xuất
hiện trong hệ thống và phản ứng lại theo sự thay đổi nếu có.
 Với một bộ xử lý cấu hình nhỏ nhất, không phải lúc nào nó cũng có thể lưu cất
ngữ cảnh vì không thể thay đổi con trỏ ngăn xếp hoặc vùng ngăn xếp rất hạn
chế.
 Thay vì sử dụng các thanh ghi thiết bị, vòng lặp thăm dò có thể giám sát các
biến mà chịu sự thay đổi cập nhật bởi các bộ xử lý ngắt.

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
116

 Hạt nhân có thể được xây dựng sao cho tất cả các tín hiệu logic được điều khiển
bởi vòng lặp và nhịp được điều khiển bởi các ngắt.
 Các tác vụ lớn cần nhiều thời gian thực hiện có thể được chia nhỏ thành các tác
vụ nhỏ và được thực hiện tại các thời điểm khác nhau nhờ vào cơ chế chuyển và
sử dụng bộ đếm.
 Các hạt nhân thực thi theo cơ chế ngắt rất giống với loại hạt nhân thực hiện theo
cơ chế vòng lặp thăm dò. Nó xử lý tất cả các tác vụ thông qua các dịch vụ ngắt.
 Các hạt nhân lớn và phức tạp hơn sẽ bao gồm một số các dịch vụ phụ phục
vụcho việc truyền thông giữa các quá trình. Và nếu được bổ sung đầy đủ nó sẽ
trở thành một hệ điều hành đầy đủ.
Các kiểu loại hạt nhân cơ bản
 Hạt nhân thực hiện vòng lặp thăm dò
 Hạt nhân thực hiện theo cơ chế ngắt
 Hạt nhân quá trình vận hành quá trình
Việc lựa chọn loại hạt nhân nào hoàn toàn tùy thuộc vào các bộ xử lý và kích
thước phần mềm, tuy nhiên riêng loại hạt nhân vận hành theo quá trình không phù hợp
với các bộ xử lý nhỏ.
Hạt nhân quá trình
Các hạt nhân quá trình rõ ràng là phức tạp hơn các hạt nhân thực hiện theo cơ
chế thăm dò và điều khiển ngắt. Các đường truyền tín hiệu logic bên trong các quá
trình và các dịch vụ ngắt được tích hợp và thực hiện thông qua việc truyền dữ liệu.

Hình 38: Mô hình trạng thái của quá trình


Hạt nhân sẽ phải đảm nhiệm chức năng lập lịch cho các quá trình theo đúng mô
hình trạng thái.
 RUN: quá trình được thực hiện
 WAIT: các quá trình chờ một sự kiện hoặc tín hiệu vào ra kích hoạt quá trình
 READY: các quá trình sẵn sàng được thực hiện
Các phần tử thuộc tính của một quá trình: Các phần tử này cần thiết để phục vụ cho
việc lập lịch. Ví dụ đối với cơ chế lập lịch theo mức độ ưu tiên sẽ yêu cầu thông tin
sau với mỗi quá trình:

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên
117

 Tên (địa chỉ bộ nhớ của phần tử quá trình)


 Trạng thái: RUN, WAIT, READY
 Mức độ ưu tiên
 Ngữ cảnh (dùng con trỏ để quản lý lưu cất thông tin trong ngăn xếp)

Bài giảng Hệ thống nhúng 2010 – BM Kỹ thuật Máy tính – ĐH Kỹ thuật Công nghiệp Thái nguyên

You might also like