Hệ nhúng Arm Linux 15T Trang 3 Giới thiệu môn họcHệ nhúng Thời lượng: 45 LT&BT + 15 TNYêu cầu kiến thức nền tảng: • Kiến trúc máy tính• Vi xử lý• Lập trình C Trang 4 CE Dept., SoICT
Trang 1HỆ NHÚNG
Trang 2CE Dept., SoICT 2016
Nội dung dự kiến
Chương 1 Tổng quan về hệ nhúng (3T)
Chương 2 Phần cứng hệ nhúng (6T)
Chương 3 Giới thiệu 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)
5
Trang 3Giới thiệu môn học
Hệ nhúng
Thời lượng: 45 LT&BT + 15 TN
Yêu cầu kiến thức nền tảng:
• Kiến trúc máy tính
• Vi xử lý
• Lập trình C
Đánh giá: 30% QT + 70% CK
Trang 4CE Dept., SoICT 2016
Mụ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.
3
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 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 10CE Dept., SoICT 2016
Lĩnh vực ứng dụng
Không thể kể hế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 12CE Dept., SoICT 2016
Ví dụ về hệ nhúng
Consumer electronics, home electronics, …
12
Trang 14CE Dept., SoICT 2016
Ví 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 OS
Point of Sales System
- Vi xử lý Intel X86
- OS: Windows XP Embedded
Trang 16CE Dept., SoICT 2016
Ví 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 22CE Dept., SoICT 2016
1.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 24• 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 26CE Dept., SoICT 2016
Bộ nhớ
Bộ nhớ (Memory):
• RAM
• 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ớ (1 không gian địa chỉ)
Kiến trúc Havard: Lệnh và dữ liệu lưu trữ trên 2 bộ
nhớ phân biệt (2 không gian địa chỉ phân biệt)
Đối với bộ nhớ, không có sự khác biệt giữa lệnh và dữliệu (mà do CPU quyết định đối xử khi nhận về)
Trang 28CE Dept., SoICT 2016
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 30CE Dept., SoICT 2016
Nội dung
Chương 1 Tổng quan về hệ nhúng
Chương 2 Thiết kế phần cứng hệ nhúng
Chươ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 35 Đọc giá trị Through hole resistors
Trang 36Thay đổi độ sáng
LED
Trang 37Ký hiệu
Các loại tụ
Tích (charging) và phóng (discharging)
Trang 38CE Dept., SoICT 2016
Capacitors
Cách đọc giá trị
38
Trang 39Ký hiệu
Surface mount Inductors
Trang 40CE Dept., SoICT 2016
Transformers
40
Ký hiệu
Trang 42(bridge rectifier)
Diodes Zener và Schotky
Trang 43Ký hiệu
Trang 44CE Dept., SoICT 2016
2.1.2 Các thiết bị trợ giúp
Một số thiết bị:
• Đồng hồ vạn năng (Multimeter)
• 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 45 Đ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 46CE Dept., SoICT 2016
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 52CE Dept., SoICT 2016
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 56CE Dept., SoICT 2016
Thiết kế mạch in
How to use ?
56
Trang 57Ví dụ thiết kế
Schematics:
Trang 58CE Dept., SoICT 2016
Ví dụ thiết kế
PCB
58
Trang 592.1.4 Tài liệu thiết kế
Schematic, PCB
Datasheet
Application notes
Trang 60CE Dept., SoICT 2016
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 64CE Dept., SoICT 2016
2.2.2 Clock Oscillator
Tạo xung nhịp đồng bộ cho các thành phần trong hệ thống (hoạt động ở nhiều tần số dao động khác nhau)
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 66CE Dept., SoICT 2016
2.3.3 Reset
Reset ? Dừng hoạt động hệ thống và xóa các thanh ghi
Tín hiệu reset:
• Từ mạch reset ngoài (chân MCLR, tích cực mức thấp)
• Từ mạch điều khiển logic bên trong (built-in)
66
Reset 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 67 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ừ Một số mạch ngoại
vi dùng điện áp cao hơn CPU sẽ rơi vào
trạng thái «chập chờn» trong khi CPU vẫn
hoạt động nguy hiểm 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
Brown-out reset Noise
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 72CE Dept., SoICT 2016
Ghép nối Optocoupler
Cách li quang học
72
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 76CE Dept., SoICT 2016
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 78CE Dept., SoICT 2016
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 82CE Dept., SoICT 2016
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 83 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 86CE Dept., SoICT 2016
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 92CE Dept., SoICT 2016
Nội dung
Chương 1 Tổng quan về hệ nhúng
Chương 2 Thiết kế phần cứng hệ nhúng
Chươ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 94CE Dept., SoICT 2016
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 100CE Dept., SoICT 2016
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
Trang 108CE Dept., SoICT 2016
Tập lệnh 8051
Lệnh chuyển dữ liệu
MOV đích, nguồn Đích = nguồn (Bộ nhớ trong)
MOVX đích, nguồn Đích = nguồn (Thao tác bộ nhớ
ngoài)
XCHD Tráo đổi dữ liệu ( 4 bit thấp)
108
Trang 110JZ, JNZ, JB, JNB… Lệnh nhảy có điều kiện (kiểm tra
bit)
110
Trang 112CE Dept., SoICT 2016
3.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)
Trang 113Tổ chức bộ nhớ - RAM
RAM: Thành phần block RAM (chứa dữ liệu tạm) + SFRs (làm việc với các phần cứng)
Ghép nối mở rộng RAM
Trang 114CE Dept., SoICT 2016
3.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
114
Trang 115Các thanh ghi
Ví dụ một số thanh ghi
Trang 116• Bộ đếm (Counter): đếm xung
116
Trang 117Cá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
Trang 118CE Dept., SoICT 2016
Các thanh ghi Counter/Timer
Thanh ghi TMOD
118
Trang 119Các thanh ghi Counter/Timer
Thanh ghi giá trị Timer (Timer T0) 16 bit
Gồm 2 thanh ghi 8 bit: TH0, TL0
Công thức: TH0 × 256 + TL0 = T0
• Ví dụ: 3 × 256 + 232 = 1000
Trang 120CE Dept., SoICT 2016
Counter/Timer
Timer 0 Mode 1 (16 bit):
• Start from 0 to 65535 -> Timer Interrupt
• Clear to 0
120