Chng T˚ng quan v˚ h˚ nhúng (3T) 3. Vi (6T) Chng Thi˚tk˚ph˚nc˚ngh˚ 4. trình vi Chng i˚ukhi˚n nhúng Arm Linux (15T) Chng L˚p i˚ukhi˚n (12T) Chng H˚ B{i t˚p L˚p trình vi i˚u khi˚n mô ph˚ng Proteus Thí nghi˚m H˚ nhúng Arm Linux (03 b{i)
Trang 1Môn học
HỆ NHÚNG
Trang 2Giới thiệu môn học
Hệ nhúng IT4210 (3-0-1-6)
Thời lượng: 45 LT&BT + 15 TN
• Kiến trúc m|y tính
• Vi xử lý
• Lập trình C
Trang 3Nội dung
Chương 1 Tổng quan về hệ nhúng (3T)
Chương 2 Thiết kế phần cứng hệ nhúng (6T)
Chương 3 Vi điều khiển (6T)
Chương 4 Lập trình vi điều khiển (12T)
Chương 5 Hệ nhúng Arm Linux (15T)
B{i tập: Lập trình vi điều khiển, mô phỏng Proteus Thí nghiệm: Hệ nhúng Arm Linux (03 b{i)
Trang 4Mục tiêu môn học
Nắm được kiến trúc tổng quan, đặc điểm v{ hoạt
động của một hệ nhúng
Biết thiết kế hệ nhúng cơ bản (nguyên lý, mạch)
Nắm được kiến trúc vi điều khiển
Biết lập trình vi điều khiển từ cơ bản đến n}ng cao với c|c dòng vi điều khiển phổ biến
Nghiên cứu ph|t triển hệ nhúng ARM Linux với c|c giao tiếp v{o ra cơ bản, n}ng cao, cơ chế x}y dựng device driver
L{m quen với nền tảng lập trình Qt cho hệ nhúng ARM Linux
Trang 5T{i liệu tham khảo
Books:
• Architecture and Programming of 8051 Microcontrollers, Milan Verle
• Embedded C, Micheal J.Pont, 2002
• Designing embedded hardware, John Catsoulis, 2005
• Introduction to Embedded Systems, Lee & Seshia, UC Berkeley, 2011
• Embedded Systems Architecture: A Comprehensive Guide for Engineers
and Programmers, Tammy Noergaard
• Linux Device Driver
• C++ GUI programming with QT
Trang 71.1 Giới thiệu về hệ nhúng
Hệ nhúng (Embedded System) ?
cơ khí và các thành phần khác để thực hiện một chức
(thường là vi điều khiển, vi xử lý, …) mà người sử dụng nhìn chung thường không nhận thức được đó là một hệ
thống dựa trên máy tính (Michael J Pont, Embedded
C)
Trang 8Giới thiệu về hệ nhúng
Embedded Systems (ES) = information processing systems embedded into a larger product
8
Trang 9Giới thiệu về hệ nhúng
Sơ đồ khái quát của một hệ nhúng
C|c th{nh phần cơ bản tạo nên một hệ nhúng:
• Bộ vi xử lý
• Phần mềm trong bộ nhớ chính, có thể nằm trên cùng
một chip với bộ vi xử lý hoặc nằm ngo{i
• Tất cả c|c hệ nhúng đều chứa một v{i kiểu v{o ra
Trang 10Lĩnh vực ứng dụng
C|c ứng dụng hệ nhúng được sử dụng rất rộng r~i
trong thực tế:
• Mobile phones
• Automotive applications (in cars, aerospace, traffic…)
• Domestic appliances (including dishwashers,
televisions, washing machines, microwave ovens, video recorders, security systems, garage door controllers)
• Medical equipment (drug delivery systems, MRI
scanners)
• Industrial equipment
• v.v…
10
Trang 11Ví dụ về hệ nhúng
In Cars:
Trang 12Ví dụ về hệ nhúng
Consumer electronics, home electronics, …
12
Trang 14Ví dụ về hệ nhúng
14
Chuột m|y tính được trang bị
bộ vi điều khiển 8 bit
Trang 15Ví dụ về hệ nhúng
Sony Aibo ERS-7 Robotic Dog
- Vi điều khiển 64 bit MIPS R7000
- Hệ điều h{nh Aperios Sony’s Real Time
Trang 16Ví dụ về hệ nhúng
KIT FriendlyARM micro2440
16
Trang 17Ví dụ về hệ nhúng (Việt Nam)
Bkav SmartHome
- Hạ tầng mạng không d}y chuẩn Zigbee
- Hệ thống điều khiển 3D
- Tiết kiệm điện năng
- Tự động ho{n to{n theo c|c kịch bản được thiết lập
Robot ToSy
-Vi xử lý hiệu năng cao -Trí tuệ nh}n tạo
Trang 19• Năng lượng tiêu thụ
(3) Giới hạn về tài nguyên:
• Hiệu năng bộ vi xử lý
• Dung lượng bộ nhớ
Trang 20• Xử lý tính toán đ|p ứng thời gian thực (real time)
(5) Thỏa mãn yêu cầu về:
Trang 221.3 Kiến trúc tổng quan hệ nhúng
Sơ đồ ph}n lớp:
22
Trang 23Kiến trúc tổng quan hệ nhúng
Sơ đồ khối kiến trúc tổng quan hệ nhúng
Trang 24Vi xử lý
Processor:
• Một bộ xử lý độc lập không thể thực hiện được
nhiệm vụ gì
• Cần giao tiếp với bộ nhớ (chứa chương trình, dữ
liệu), v{ thiết bị v{o ra (giao tiếp với thế giới bên ngoài)
Trang 25Vi điều khiển
Microcontroller: (Bộ vi điều khiển)
• Chứa bộ vi xử lý, bộ nhớ, c|c cổng v{o ra trên một
chip đơn, mạch tích hợp
• Thường sử dụng trong c|c hệ nhúng
• Phạm vi rộng: AVRs, PICs, ARMs, …
• Kiến trúc: 8 bit, 16 bit, 32 bit, (64 bit)
• Bộ nhớ trong cùng chip hoặc phối ghép mở rộng
bên ngoài
SoC (System-on-chip):
Trang 26• ROM, EPROM, EEROM (EEPROM)
• Flash (newest ROM technology, dominant), sử dụng rộng r~i trong vi điều khiển, hệ nhúng
26
C|c loại bộ nhớ
Trang 27Kiến trúc: Von Neumann, Havard
Kiến trúc Von Neumann: Lệnh và dữ liệu chia sẻ trong
1 bộ nhớ
Kiến trúc Havard: Lệnh v{ dữ liệu lưu trữ trên 2 bộ nhớ
ph}n biệt
Đối với bộ nhớ, không có sự khác biệt dữ lệnh và dữ liệu
(mà do CPU quyết định đối xử khi nhận về)
Trang 28Embedded System
HungPN-HUST
Không gian địa chỉ
Không gian địa chỉ (address space):
• Không gian địa chỉ bộ nhớ
• Không gian địa chỉ cổng v{o ra
2 kiểu không gian địa chỉ v{o ra:
28
Trang 30Chương 3 Vi điều khiển
Chương 4 Lập trình vi điều khiển
Chương 5 Hệ nhúng Arm Linux
30
Trang 31Chương 2 Thiết kế phần cứng hệ nhúng
2.1 Thiết kế điện tử
2.2 C|c mạch chức năng cơ bản
2.3 C|c chuẩn giao tiếp, truyền thông
2.4 Ghép nối v{ đo lường tín hiệu tương tự
Trang 332.1.1 Linh kiện điện tử
C|c linh kiện điện tử:
Trang 35Resistors
Đọc gi| trị Through hole resistors
Trang 36Thay đổi độ s|ng
LED
Trang 37Capacitors
Ký hiệu
C|c loại tụ
Tích (charging) và phóng (discharging)
Trang 39Inductors
Ký hiệu
Surface mount Inductors
Trang 42(bridge rectifier)
Diodes Zener và Schotky
Trang 43Crystal
Ký hiệu
Trang 44• M|y hiện sóng (Oscilloscope)
• M|y tạo tín hiệu (Function Generator)
• Bộ nguồn (Power Supply)
• Bộ h{n (Weller)
• C|c dụng cụ (Tools)
44
Trang 45Multimeter
Đo lường c|c đại lượng vật lý: điện |p, dòng điện, điện trở, điện dung, điện cảm, đặc biệt l{ kiểm tra kết nối đường mạch (đo thông)
Trang 46Embedded System
HungPN-HUST
Oscilloscope
Hiện thị dạng sóng tín hiệu (waveforms)
Băng thông (bandwidth): 20Mhz, 100Mhz, …
Trang 47Function Generator
M|y tạo tín hiệu:
• Tùy chỉnh đại lượng tín hiệu: tần số, biên độ
• Dạng sóng tín hiệu: xung vuông, tam gi|c, sin
Trang 48Nickel metal hydride (NiMH) Lead-based
Batteries & Acquy
Trang 49Mỏ h{n (Weller)
How to solder ?
Trang 512.1.3 Phần mềm thiết kế
Phần mềm thiết kế, mô phỏng: Proteus
Phần mềm thiết kế mạch nguyên lý, mạch in:
• Altium Designer/Protel DXP
• Orcad
Trang 52Embedded System
HungPN-HUST
Phần mềm mô phỏng Proteus
Khả năng:
• Thiết kế mô phỏng sơ đồ nguyên lý
• Thư viện linh kiện: microcontrollers, logic gates,
resistor, capacitor, button, led, 7 seg, LCD, v.v…
• Mô phỏng nạp chương trình
• Chạy mô phỏng
How to use ? (Youtube: Proteus tutorials)
52
Trang 53Phần mềm mô phỏng Proteus
Trang 55Thiết kế mạch in
How to use ?
Trang 57Ví dụ thiết kế
Schematics:
Trang 592.1.4 T{i liệu thiết kế
Schematic, PCB
Datasheet
Application notes
Trang 60Embedded System
HungPN-HUST
2.2 C|c mạch chức năng cơ bản
2.2.1 Power Source (Mạch cấp nguồn)
2.2.2 Clock Oscillator (Mạch dao động)
2.2.3 Reset (Mạch khởi động lại)
2.2.4 Programmers/Debugger (Mạch nạp)
2.2.5 C|c ghép nối cơ bản
60
Trang 64 Bộ dao động nội (Internal Osc.)
Bộ dao động ngo{i (External Osc.): Thường dùng thạch anh để cung cấp tín hiệu clock v{ ổn định tần số
64
Trang 65Clock Oscillator – Ví dụ
Ví dụ mạch dao động ngo{i cho Vi điều khiển
ATmega8 sử dụng thạch anh tần số 8MHz
Trang 66Reset when Power on
Chân MCLR (Master clear
reset) cần ở mức cao khi hệ
thống hoạt động
Khi power on, hệ thống cần
một khoảng thời gian trễ (T
reset) trước khi khởi động
hoạt động của c|c th{nh
phần
Trang 67Reset
Black-out reset: Xảy ra khi power off
bình thường (no danger)
Brown-out reset: Xảy ra khi điện |p
nguồn cấp giảm từ từ (thường khi dùng
pin xạc) Một số mạch dùng điện |p mức
cao có thể thực thi c|c hoạt động sai
(unpredictably) g}y lỗi cho hệ thống
Noise: Một loại brown-out reset đặc biệt
xảy ra trong môi trường công nghiệp
Black-out reset
Trang 692.2.4 Programmers/Debuggers
Nhiều chuẩn nạp: JTAG, ISP, …
Đi kèm công cụ (programmer, debugger) v{ phụ thuộc c|c dòng vi điều khiển
AVRISP
ARM JTAG
Trang 71Ghép nối Switch, Button
Hiện tượng nảy phím
Chống nảy phím bằng mạch RC
Trang 73Ghép nối Relay
Điều khiển đóng cắt Rơ-le
Nguyên lý hoạt động Cấu tạo Rơ-le
Trang 75VOLTAGE DROP UD (V)
Trang 76Embedded System
HungPN-HUST
Ghép nối LED 7 thanh
Led 7 thanh: nguyên lý gồm c|c thanh Led đơn
Ghép nối điều khiển:
• Điều khiển trực tiếp m~
7 thanh
• Sử dụng bộ giải m~
BCD-7 thanh (BCD-7424BCD-7)
Trang 77Ghép nối LED 7 thanh
Điều khiển (trực tiếp) nhiều Led 7 segment
Nguyên lý:
• Điều khiển chọn mở từng led
• Quét gi| trị hiện thị cho từng led được chọn
Trang 78Embedded System
HungPN-HUST
C|c ch}n điều khiển chọn 7 seg: C7_1, C7_3
C|c ch}n điều khiển m~ quét (m~ chỉ thị 7
thanh trực tiếp): SEG_A, B, ….P
Led 7 thanh – Ví dụ Schematic
78
Trang 792.3 C|c chuẩn giao tiếp, truyền thông
2.3.1 Giao tiếp RS232
2.3.2 Giao tiếp SPI
2.3.3 Giao tiếp I2C
2.3.4 Giao tiếp USB
Trang 81RS232 – Ví dụ Schematic
Mức điện |p đường truyền (-12V, +12V)
Mức điện |p của MCU l{ TTL (0V-5V)
2 kiểu:
• Sử dụng IC chuyển đổi (Max232)
• Ghép nối trực tiếp mức TTL
Trang 82Embedded System
HungPN-HUST
2.3.2 SPI
SPI (Serial Peripheral Interface)
(synchronous and bidirectional)
Sử dụng:
• Giao tiếp giữa MCU – MCUs (MCU=MicroController Unit)
• Giao tiếp giữa MCU – Devices (EEPROM, transceiver modules, …)
Trang 83SPI
Chuẩn giao thức như nhau nhưng đặc
tả có thể kh|c nhau tùy từng dòng
VĐK
Ví dụ SPI trên PIC
Mô hình 1 Master + multi Slaves
(PIC microcontroller) SDO = Serial Data Out SDI = Serial Data In SCK = Serial Clock
SS = Slave Select
Trang 852.3.3 I2C
I2C (I 2 C) = Inter IC Bus
(~SPI, synchronous + bidirectional)
Sử dụng: MCU-MCUs, smart peripheral
(temp sensor, real-time clock, …
Trang 86Embedded System
HungPN-HUST
I2C
Ví dụ giao tiếp I2C: VĐK PIC16F giao tiếp I2C với EEPROM
(LC256), temperature/humidity sensors (HIH6131)
86
Trang 872.3.4 USB
USB=Universal Serial Bus
Giao tiếp nối tiếp đa năng
Đường truyền tín hiệu vi sai
Nhiều kiểu connectors:
Trang 892.4 Ghép nối đo lường tín hiệu tương tự
Đo lường tín hiệu tương tự bằng ADC
Sử dụng: giao tiếp với c|c cảm biến (sensors), biến trở (potentiometer), …
2 kiểu:
• Dùng module ADC có sẵn của VĐK
• Ghép nối qua chip ADC ngo{i
Trang 91Ví dụ ghép nối ADC
Ví dụ ghép nối với chip ADC ngo{i MCP3204 đo lường 4 kênh ADC
Trang 92Chương 3 Vi điều khiển
Chương 4 Lập trình vi điều khiển
Chương 5 Hệ nhúng Arm Linux
92
Trang 93Chương 3 Vi điều khiển
3.1 Tổng quan vi điều khiển
3.2 Kiến trúc vi điều khiển 8051
3.3 Vi điều khiển ARM
3.4 Vi điều khiển AVR
3.5 Vi điều khiển PIC
Trang 94Embedded System
HungPN-HUST
Vi điều khiển (Microcontroller):
• Bao gồm cả CPU, bộ nhớ (ROM/EEROM, RAM), cổng vào ra
Phân biệt với bộ vi xử lý (Microprocessor)
3.1 Tổng quan Vi điều khiển
94
Trang 96 Mỗi vi điều khiển có một
hoặc nhiều thanh ghi
Trang 97Các thành phần vi điều khiển (3)
Bộ tạo dao động (Oscillator)
Cung cấp xung nhịp cho
được chia thành các bước,
tốn một hoặc vài chu kỳ
xung nhịp (khác nhau phụ
thuộc vào kiến trúc vi điều
khiển)
Trang 98tăng mỗi khi có 1
xung vào Khi tràn
gi| trị, một ngắt
được ph|t sinh
Trang 99Các thành phần vi điều khiển (5)
Mạch điều khiển nguồn cấp (Power Supply Circuit)
• Một vi điều khiển có thể chứa nhiều mạch hoạt động ở c|c
mức điện |p kh|c nhau
• Khi điện |p nguồn cấp hạ thấp dưới ngưỡng tối thiểu
(thường do nhiễu điện) có thể g}y mất ổn định hoạt động
• Vi điều khiển thường có mạch điều khiển khởi động nóng lại
(Brown out reset)
Reset pin
• Trong trường hợp không
sử dụng mạch brown out reset bên trong VĐK
thường dùng một mạch Reset ngo{i kết nối đến
Trang 100Embedded System
HungPN-HUST
Các thành phần vi điều khiển (6)
Giao tiếp nối tiếp (Serial Communication)
Hầu hết c|c VĐK được thiết kế có 1 hoặc v{i chuẩn giao tiếp nối tiếp được x}y dựng sẵn C|c yếu tố quan trọng:
• Số lượng thiết bị có thể trao đổi dữ liệu (1-1, 1-n)
Trang 101C|c dòng vi điều khiển phổ biến
Một số dòng vi điều khiển phổ biến hiện nay
• 8051 (AT89C51, AT89S51, AT89S52) (Intel)
• AVR (ATMEGA8, ATMEGA16…) (Atmel)
• PIC (PIC16F877A, PIC18F4550, PIC18F2550…)
(Microchip)
• ARM (ARM7, LPC, TMS, ARM9, ARM Cortex-M, ARM Cortex-A)
• …
Trang 1033.2.1 Giới thiệu 8051
Các hãng sản xuất vi điều khiển đ~ có thời gian dài cạnh tranh Rất nhiều chip mới xuất hiện trên thị trường với tần số hoạt
động cao hơn, nhiều bộ nhớ hơn, nâng cấp nhiều chức năng…
Tuy nhiên, hầu hết các vi điều khiển có kiến trúc tương tự với
8051 (“8051 compatible”) Vì sao ?
1980s, Intel giới thiệu dòng vi điều khiển đầu tiên MCS 051
Nhanh chóng chinh phục thế giới, trở thành một chuẩn cho vi
điều khiển ngày nay
Lý do thành công của Intel 8051:
• Cấu hình phù hợp nhiều nhu cầu khác nhau của một số
lượng lớn người dùng
• Lõi cơ bản phù hợp cho nhiều phần mềm đ~ phát triển
• Một số lượng lớn các vi điều khiển đ~ được phát triển nhờ
Trang 105Tập lệnh 8051
Mỗi lệnh l{ một chuỗi bit nhị ph}n bộ xử lý hiểu để thực hiện
C|c lệnh được mô tả bằng ký hiệu gợi nhớ c|c lệnh hợp ngữ (gắn với kiến trúc vi xử lý cụ thể)
Ví dụ: Lệnh ADD A, #3Ah
Khuôn dạng lệnh gồm: M~ thao t|c + Tham chiếu to|n hạng
• M~ thao t|c (OpCode): M~ hóa cho thao t|c lệnh t|c động (WHAT ?)
• Tham chiếu to|n hạng: X|c định nơi chứa to|n hạng m{ lệnh t|c động (HOW ?)
0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0
3Ah
Mã thao tác Tham chiếu to|n hạng
Trang 107Tập lệnh 8051
Lệnh số học
ADD đích, nguồn Đích = đích + nguồn
ADDC đích, nguồn Đích = đích + nguồn + cờ nhớ
SUBB đích, nguồn Đích = đích – nguồn
INC nguồn Đích = đích + 1
DEC nguồn Đích = đích - 1
Trang 108MOV đích, nguồn Đích = nguồn (Bộ nhớ trong)
MOVX đích, nguồn Đích = nguồn (Thao tác bộ nhớ
ngoài) PUSH Đẩy dữ liệu vào đỉnh ngăn xếp
POP Lấy dữ liệu từ đỉnh ngăn xếp
XCHD Tráo đổi dữ liệu ( 4 bit thấp)
108
Trang 110JMP Lệnh nhảy không điều kiện
JZ, JNZ, JB, JNB… Lệnh nhảy có điều kiện (kiểm tra
bit)
110
Trang 112I/O Pin (a)
FE transistor Cực G (Gain)
= 1 đóng
= 0 mở
Trang 1133.2.3 Tổ chức bộ nhớ
ROM/EEPROM: Bộ nhớ chương trình, chứa chương trình điều khiển hoạt động (nạp firmware) (8051 4K ROM)
RAM: Bộ nhớ dữ liệu, chứa dữ liệu v{ c|c thanh ghi SFRs phục
vụ hoạt động của CPU (8051 128B RAM)
16 bit địa chỉ (space
Trang 1153.2.4 Các thanh ghi
Thanh ghi: Lưu trữ địa chỉ hoặc dữ liệu phục vụ cho hoạt động của CPU
Thanh ghi 8051: chủ yếu thanh ghi 8 bit
C|c thanh ghi chức năng đặc biệt (Special Function Registers – SFR):
• Thanh ghi A (Accumulator): Thanh chứa
• Thanh ghi B
• Các thanh ghi R (R0-R7): C|c thanh ghi mục đích chung
• Thanh ghi từ trạng th|i chương trình (Program Status
Word - PSW)
• Thanh ghi con trỏ dữ liệu (Data Pointer Register - DPTR)
• Thanh ghi con trỏ ngăn xếp (Stack Pointer - SP)
• Thanh ghi cổng v{o ra: P0, P1, P2, P3
Trang 1173.2.5 Counter/Timer
• Timer/Counter 0 (T0) và Timer/Counter 1 (T1)
• Bộ định thời (Timer): Tạo ra c|c sự kiện định thời
sau khoảng thời gian thực chính x|c, có thể dùng để tạo trễ
• Bộ đếm (Counter): đếm xung
Trang 118Embedded System
HungPN-HUST
Các thanh ghi Counter/Timer
Thanh ghi TCON
• TR1/TR0: bit khởi động/tắt bộ đếm/định thời
• TF1/TF0: cờ b|o tr{n bộ đếm/định thời
• IE1, IT1, IE0, IT0: liên quan tới ngắt phần cứng
ngoài
118
Trang 119Các thanh ghi Counter/Timer
Thanh ghi TMOD
Trang 120Embedded System
HungPN-HUST
Các thanh ghi Counter/Timer
Thanh ghi gi| trị Timer (Timer T0) 16 bit
Gồm 2 thanh ghi 8 bit: TH0, TL0
120
Công thức: TH0 × 256 + TL0 = T0
• Ví dụ: 3 × 256 + 232 = 1000
Trang 121Counter/Timer
Timer 0 Mode 1 (16 bit):
• Start from 0 to 65535 -> Timer Interrupt
• Clear to 0
Trang 1233.2.6 Truyền thông nối tiếp UART
UART (Universal Asynchronous Receiver and Transmitter)
(Serial Port)
Full duplex: Cho phép truyền (transmit) v{ nhận
(receive) dữ liệu đồng thời với tốc độ kh|c nhau
(Baudrates)
Giao thức đóng gói dữ liệu, truyền nhận được điều
khiển bởi vi điều khiển
Lập trình: Cấu hình chọn chế độ, tốc độ truyền
Thanh ghi bộ đệm dữ liệu gửi/nhận: