Sau khi kết thúc môn học này, sinh viên có thể• Trình bày kiến trúc tổng thể và hoạt động của một hệ thống nhúng bất kỳ• Trình bày được kiến trúc vi điều khiển• Biết sử dụng các môi trường phát triển và lập trình firmware cho hệ nhúng• Biết lập trình ứng dụng ghép nối trên máy tính• Nắm bắt một số công nghệ mới Chương 1: Tổng quan hệ thống nhúngChương 2: Quy trình phát triển hệ thống nhúngChương 3: Vi điều khiển và lập trình firmwareChương 4: Hệ điều hành nhúngChương 5: Phần mềm điều khiển trên PCChương 6: Giới thiệu công nghệ mới
Trang 2Mục tiêu môn học
Sau khi kết thúc môn học này, sinh viên có thể
• Trình bày kiến trúc tổng thể và hoạt động của một
hệ thống nhúng bất kỳ
• Trình bày được kiến trúc vi điều khiển
• Biết sử dụng các môi trường phát triển và lập
trình firmware cho hệ nhúng
• Biết lập trình ứng dụng ghép nối trên máy tính
• Nắm bắt một số công nghệ mới
Trang 3Tài liệu tham khảo
Tài liệu tham khảo chính:
• Embedded C Micheal J.Pont (8051)
• Building Embedded Linux System, Karim
Yaghmour
• Linux Device Driver, Jonathan Corbet
• ARM System Developer Guide-Designing and
Optimizing System Software, Andrew N.Sloss
• Embedded Systems Architecture: A
Comprehensive Guide for Engineers and
Programmers, Tammy Noergaard
Trang 4Nội dung môn học
Chương 1: Tổng quan hệ thống nhúng
Chương 2: Quy trình phát triển hệ thống nhúng Chương 3: Vi điều khiển và lập trình firmware Chương 4: Hệ điều hành nhúng
Chương 5: Phần mềm điều khiển trên PC
Chương 6: Giới thiệu công nghệ mới
Trang 5Nội dung chương 1
Chương 1: Tổng quan hệ thống nhúng
1.1 Khái niệm hệ nhúng
1.2 Kiến trúc tổng thể hệ thống nhúng
Trang 61.1 Khái niệm hệ nhúng
Máy tính nhúng (Embedded Computer)
Được đặt trong thiết bị khác (bao gồm cả phần
cứng và các kết cấu cơ khí) để điều khiển thiết bị
Trang 9Ví dụ
Cấu tạo bên trong một con chuột máy tính
Chuột, bàn phím máy tính được trang bị bộ vi điều khiển 8bit
-Bắt chuyển động, bắt
phím
-Mã hóa, kết nối với
máy tính
Trang 11Ví dụ
Máy in, máy photocopy
-Vi điều khiển Intel,
Motorola, ARM…
-Kết nối máy tính
Trang 13Ví dụ
Máy ảnh kỹ thuật số
-Vi điều khiển DIGIC II Image Processor
Trang 15Ví dụ
Point of Sales System
-Vi xử lý Intel X86
-OS: Windows XP Embedded
Trang 16Ví dụ
Systems DL2 Digital Media Server: tạo hiệu ứng ánh sáng trên sân khấu
-Vi xử lý Intel X86
-OS: Windows XP Embedded
Trang 17Ví dụ
Tektronix Logic Analyser
-Vi xử lý Intel X86
-OS: Windows XP
Trang 18Ví dụ
Cánh tay robot
-Vi xử lý Intel X86
-OS: Windows XP Embedded & others
Trang 20-Tự động hoàn toàn
theo các kịch bản được thiết lập
Trang 21Việt Nam???
Robot đánh bóng bàn
ToSy
-Vi xử lý hiệu năng cao
-Trí tuệ nhân tạo
-Cơ khí chính xác
Trang 25Kiến trúc tổng thể
Trang 26Ví dụ - Hệ nhúng Mini2440
Trang 27KIT mini2440
Hardware Layer
Trang 28KIT mini2440
System Software Layer
• Hệ điều hành: Linux, Windows CE, Android
• Bootloader: Nboot, Uboot, Supervivi
Trang 31Mô hình lập trình hệ thống nhúng
•Host: hệ thống chứa môi trường phát triển
•Target: hệ nhúng cần phát triển ứng dụng
Trang 32Mô hình lập trình hệ thống nhúng
•Host: hệ thống chứa môi trường phát triển
Trang 33Đặc trưng hệ thống nhúng
Thường bị giới hạn về tài nguyên: hiệu năng bộ
xử lý, dung lượng bộ nhớ…
Thỏa mãn yêu cầu về độ tin cậy và khả năng
chịu lỗi cao, yêu cầu về tính thời gian thực
(Realtime)
Trang 34Thảo luận
Trang 35Nội dung chương 2
Chương 2: Quy trình phát triển hệ thống nhúng
2.1 Tìm hiểu phân tích yêu cầu
Trang 36 Điều gì xảy ra nếu không có qui trình phát triển
hệ thống hoặc qui trình không tốt?
Trang 372 Qui trình phát triển hệ thống nhúng
Trang 382.1 Tìm hiểu phân tích yêu cầu
Giống như quá trình tìm hiểu phân tích yêu cầu đối với phần mềm
Tuy nhiên, đối với hệ nhúng thường chú trọng
nhiều hơn đến performance
• Tốc độ CPU
• Bộ nhớ hỗ trợ
• Realtime?
Trang 392.1 Tìm hiểu phân tích yêu cầu
• Yêu cầu của người sử dụng (khách hàng)
Theo cách nhìn của người sử dụng
Chưa rõ ràng, chi tiết (đôi khi là mập mờ)
Đầu ra
• Bản đặc tả yêu cầu người dùng
Yêu cầu hệ thống dưới góc nhìn của người thiết
kế, phát triển hệ thống
Chi tiết, rõ ràng tất cả các yêu cầu của người sử dụng
Trang 41Mô hình vòng đời thiết kế và phát triển
Trang 42Mô hình vòng đời thiết kế và phát triển
• Quá trình thiết kế và phát triển hệ thống gồm 4
giai đoạn: Tạo bản thiết kế, thực thi hệ thống,
kiểm thử hệ thống, và bảo trì hệ thống
• Giai đoạn tạo bản thiết kế là giai đoạn quan
trọng nhất và quyết định đến thành công dự
án
Trang 43Quá trình tạo bản thiết kế hệ nhúng
Quá trình thiết kế cần trải qua 6 giai đoạn chính sau đây:
• Giai đoạn 1: Nắm vững kiến thức nền tảng
• Giai đoạn 2: Hiểu được vòng đời thương mại của sản phẩm (architecture business cycle - ABC)
• Giai đoạn 3: Xây dựng thiết kế tổng quan
• Giai đoạn 4: Thiết kế chi tiết
• Giai đoạn 5: Tài liệu hóa các thiết kế
• Giai đoạn 6: Phân tích và đánh giá thiết kế
Trang 44Giai đoạn 1: Nắm vững kiến thức nền tảng
cứng lẫn phần mềm
Hiểu tổng quan về toàn bộ hệ thống mình tham gia
Trang 45Giai đoạn 2: Nắm được ABC của sản phẩm
Trang 46Giai đoạn 2: Nắm được ABC của sản phẩm
Từ Architecture Business Cycle của hệ nhúng có thể suy ra:
• Hệ nhúng không chỉ được thiết kế trên cơ sở các yêu cầu về mặt kỹ thuật mà còn phụ thuộc rất
nhiều yếu tố khác
• Ví dụ: Cùng là thiết kế một chiếc TV
Technical requirement là hoàn toàn giống nhau
Tuy nhiên mỗi hãng khác nhau lại cho ra một thiết
kế riêng của mình
Trang 47Giai đoạn 2: Nắm được ABC của sản phẩm
• Bước 1: Liệt kê tất cả các ảnh hưởng có thể tác động đến yêu cầu của hệ thống (không chỉ có các yếu tố kỹ thuật)
• Bước 2: Phân loại các yếu tố ảnh hưởng: yếu tố nào là kỹ thuật, yếu tố nào là yếu tố kinh doanh, yếu tố con người…
• Bước 3: Từ 2 bước trên thu thập yêu cầu cho
hệ thống
• Bước 4: Xác định các thành phần phần cứng,
phần mềm có thể thỏa mãn yêu cầu hệ thống
Trang 48Giai đoạn 2: Nắm được ABC của sản phẩm
Trên thực tế, hầu hết các hệ nhúng đều dùng
các đặc trưng chung của ABCs là tiêu chí đầu
tiên để thu thập requirement
Time-to-Thời gian phát triển sản phẩm
Cost Giá thành của sản phẩm
Device lifetime Vòng đời của sản phẩm ngoài thị
trường, vòng đời của sản phẩm thực tế…
Trang 49Giai đoạn 2: Nắm được ABC của sản phẩm
User-Dễ sử dụng, giao diện thân thiện đẹp mắt…
Modifiability Khả năng dễ dàng sửa đổi, nâng cấp
Security Tính bảo mật của hệ thống, khả năng
chống bẻ khóa, chống hacker…
Reliability Hệ thống có bị hỏng hóc, ngừng hoạt
động đột ngột? Khi có sự cố xảy ra hệ thống phản ứng thế nào…
Portability Khả năng phần mềm có thể chạy trên
nhiều phần cứng khác nhau, hay phần cứng có tương thích với nhiều nền tảng phần mềm khác nhau
Trang 50Giai đoạn 2: Hiểu ABCs của hệ nhúng
Trang 51Giai đoạn 2: Hiểu ABCs của hệ nhúng
Các Ảnh
hưởng
Đặc trưng Mô tả
Industry Standards Các chuẩn công nghiệp, có thể do thị
trường qui định (Ví dụ: chuẩn TV, chuẩn cho các thiết bị y tế, chuẩn mạng…) Quality
Assurance
Testability Xem trong phần technical ở trên
Availability Khi nào thì hệ thống sẵn sàng cho việc
test Schedule Xem trong phần business ở trên
QA standards ISO 9000, ISO 9001…
Customer Cost Giá của thiết bị, giá vận hành bảo trì…
User friendliness
Xem trong phần bussiness ở trên
Performance Xem trong phần technical ở trên
Trang 52Xác định các thành phần phần cứng, mềm
mềm thỏa mãn requirements
• Liệt kê các kịch bản thỏa mãn mỗi yêu cầu
• Đưa ra các chiến lược (cách giải quyết) cho mỗi kịch bản ở trên
• Dựa vào các chiến lược ở trên đưa ra các chức năng cần thiết phải có trong hệ thống, từ đó liệt
kê các phần cứng và phần mềm
Trang 53Liệt kê các kịch bản thỏa mãn yêu cầu
Ví dụ kịch bản thõa mãn yêu cầu về performance
Trang 54Liệt kê các kịch bản thỏa mãn yêu cầu
Ví dụ kịch bản thỏa mãn yêu cầu về tính
testability của hệ thống
Trang 55Đưa ra các chiến lược giải quyết các kịch bản
Ví dụ chiến lược giải quyết kịch bản thỏa mãn
yêu cầu performance
Trang 56Đưa ra các chiến lược giải quyết các kịch bản
Ví dụ chiến lược giải quyết kịch bản thỏa mãn
yêu cầu testability
Trang 57Giai đoạn 3: Xây dựng thiết kế tổng quan
phần mềm mà hệ thống cần có
Mối quan hệ giữa các thành phần với nhau
Thường tiến hành thiết kế theo kiểu top-down và đưa ra mô hình phân tầng
• Phân rã hệ thống thành các chức năng con
• Phân rã các chức năng con thành các chức năng nhỏ hơn nữa
Trang 58Giai đoạn 3: Xây dựng thiết kế tổng
quan (basic design)
Ví dụ: Thiết kế TV set-top box
Trang 59Giai đoạn 3: Xây dựng thiết kế tổng quan
Sau khi có mô hình phân tầng, tiến hành chọn
Trang 60Chọn lựa các thành phần phần cứng và
phần mềm
Cách phổ biến nhất để tiến hành lựa chọn các
thành phần phần cứng và phần mềm là lập bảng phân tích đặc trưng cho mỗi yêu cầu của từng
sản phẩm
Trang 61Ví dụ: Chọn ngôn ngữ lập trình
MHP: Multimedia home platform
ATVEF: Advanced Television
Enhancement Forum
Trang 63…
vxWork Tornado
IDE, Singer step
debugger…
BSP Device
driver, graphics, networking
…
x86, MIPS, ARM, PPC
Hard real-time, priority based
…
Linux Depend on
vendor for developme
nt IDE, gcc…
Depend on vendor, some with
no BSP
Device driver, graphics, networking
…
Depend
on vendor (x86,
ARM…)
Depend on vendor, some are hard real- time, some are soft
Window
CE
Visual studio
BSP Device
driver, graphics, networking
…
x86, ARM…
Real time …
Trang 64Giai đoạn 4: Thiết kế chi tiết
Có nhiều kỹ thuật thiết kế kiến trúc hệ thống
Kỹ thuật thông dụng và được ưa dùng nhất là
mô hình “4+1”
Trang 65Mô hình cấu trúc “4+1”
“4”: Đưa ra thiết kế cấu trúc hệ thống từ 4 góc
nhìn khác nhau
Thành phần “+1”: đóng vai trò đánh giá và đảm bảo 4 cấu trúc trên đồng nhất
Trang 66Mô hình cấu trúc “4+1”
Cấu trúc 1: logical structure là cấu trúc module của
hệ thống (sơ đồ khối) đưa ra các thành phần phần cứng phần mềm, mối quan hệ giữa thành phần
Cấu trúc 2: process structure đối với các hệ thống
có hệ điều hành, cấu trúc process giải quyết các yêu cầu phi chức năng như performance, system
integrity, resource availability…
Trang 67Mô hình cấu trúc “4+1”
trường phát triển hệ thống: IDE, debugger, ngôn ngữ lập trình… Cấu trúc này đưa ra cách
mapping hệ thống phần cứng và phần mềm vào trong môi trường phát triển
ra cách đồng bộ hệ thống phần mềm với hệ
thống phần cứng
Trang 68Giai đoạn 5: Tài liệu hóa các thiết kế
Các chuẩn để viết các tài liệu thiết kế rất đa dạng tùy
thuộc vào từng ngành công nghiệp, từng công ty hay
các nhóm phát triển…
Thông thường quá trình tài liệu hóa thường có 2 bước
• Bước 1: Viết overview về hệ thống, gồm có các cấu trúc nào, các mối quan hệ giữa các cấu trúc
• Bước 2: Viết chi tiết cho từng cấu trúc cụ thể
Không có template chuẩn để viết các tài liệu cho hệ
thống embedded, tuy nhiên có thể dùng các ngôn ngữ
mô hình hóa thông dụng
• UML
Trang 69Giai đoạn 5: Tài liệu hóa các thiết kế
Trang 70Giai đoạn 6: Phân tích và đánh giá thiết kế
bởi một nhóm
nhóm thiết kế, phát triển để đảm bảo tính khách quan và tránh bị tư duy theo lối mòn
Trang 712.3 Thực thi hệ thống nhúng
Quá trình thực thi hệ thống nhúng thường trải
qua các giai đoạn sau
Giai đoạn 1: Cài đặt môi trường phát triển
Giai đoạn 2: Thiết kế mạch phần cứng
Giai đoạn 3: Porting hệ điều hành, viết firmware
Giai đoạn 4: Viết phần mềm điều khiển, giao tiếp
trên PC
Trang 72Giai đoạn 1: Cài đặt môi trường phát triển
Cài đặt IDE
Compiler, cross compiler
Thiết lập kết nối host-target
Trang 73Giai đoạn 2: Thiết kế mạch phần cứng
Thiết kế sơ đồ nguyên lý
Thiết kế sơ đồ mạch in
Đặt mạch, hàn thiết bị lên mạch
Trang 74Giai đoạn 3: Porting hệ điều hành, viết
firmware
Đối với các hệ nhúng có hệ điều hành
• Porting hệ điều hành
• Cài đặt các driver cần thiết
Đối với các hệ không có hệ điều hành
• Viết firmware
Giao tiếp với các ngoại vi
Giao tiếp với máy tính
Trang 75Giai đoạn 4: Viết phần mềm điều khiển
giao tiếp trên PC
Phần mềm trên PC đóng vai trò điều khiển, hoặc cập nhật dữ liệu cho board mạch cứng
Ngay cả với các hệ nhúng hoạt động độc lập,
thường vẫn cần viết phần mềm trên PC để giao tiếp với board mạch cứng
• Test các chức năng mạch
• Giả lập các môi trường thực tế
• …
Trang 76• Viết các test case
• Tiến hành test, và phản hồi tới đội phát triển
Trang 772.4 Kiểm thử hệ thống nhúng
Ở đây xin đưa ra một số lưu ý và trình tự kiểm
thử thông dụng
1) Sau khi thiết kế xong mạch phần cứng, kiểm tra
thông mạch đảm bảo mạch phần cứng không
có vấn đề như bị đứt dây ngầm, chập các điểm…
2) Kiểm tra module nguồn Đảm bảo module
nguồn cấp đúng mong muốn, không bị quá dòng, quá áp…
3) Kiểm tra IC chính (IC sẽ được nạp firmware)
Trang 784) Kiểm tra các ngoại vi
5) Kiểm tra firmware và phần mềm trên PC
Trang 792.5 Triển khai bảo trì hệ thống nhúng
Qui trình triển khai bảo trì bao gồm các bước sau
• Lập kế hoạch triển khai
• Cung cấp tài liệu hướng dẫn vận hành, sử dụng,
tổ chức đào tạo vận hành hệ thống
• Ghi nhận các lỗi phát sinh
• Tiến hành sửa chữa đảm bảo hệ thống vận hành đúng theo yêu cầu thực tế
Trang 80Bài tập thảo luận
trình phát triển hệ nhúng: bắt yêu cầu và thiết kế tổng quan
Trang 81Nội dung chương 3
Chương 3: Vi điều khiển và lập trình firmware
3.1 Tổng quan vi điều khiển
3.2 Vi điều khiển họ 8051
3.3 Vi điều khiển ARM
Trang 823.1 Tổng quan vi điều khiển
Vi điều khiển <> Vi xử lý
Vi điều khiển: Computer On Chip (bao gồm cả CPU, Bộ nhớ, cổng vào ra)
Trang 83Tổng quan vi điều khiển
Một số dòng vi điều khiển phổ biến hiện nay
• 8051 (AT89C51, AT89S51, AT89S52)
• AVR (ATMEGA8, ATMEGA16…)
• PIC (PIC16F877A, PIC18F4550, PIC18F2550…)
• ARM (ARM7, ARM9, ARM Cortex-Mx, ARM
Cortex-Ax)
• …
Trang 853.2 Vi điều khiển họ 8051
Kiến trúc vi điều khiển 8051
Lập trình firmware cho vi điều khiển 8051
Trang 863.2.1 Kiến trúc vi điều khiển 8051
Do hãng Intel thiết kế năm
Trang 87Đóng vỏ vi điều khiển 8051
Trang 88Kiến trúc vi điều khiển 8051
Trang 89Các thanh ghi của 8051
Các thanh ghi dùng để lưu tạm thời dữ liệu hoặc địa chỉ
Các thanh ghi này chủ yếu là thanh ghi 8 bit
• Thanh ghi A : thanh ghi tích lũy
• Thanh ghi R0->R7
• Thanh ghi con trỏ dữ liệu DPTR (16 bit)
• Thanh ghi bộ đếm chương trình PC (16bit)
Trang 903.2.2 Lập trình vi điều khiển 8051
Giới thiệu về lập trình hợp ngữ
Lập trình C
Trang 91Giới thiệu lập trình hợp ngữ
Ngôn ngữ máy:
• Chỉ được biểu diễn bằng số nhị phân
• Bộ vi xử lý chỉ hiểu được các chương trình mã máy
• Con người rất khó khăn để tạo lập hay đọc hiểu chương trình ngôn ngữ máy
Hợp ngữ (Assembly Language):
• Là ngôn ngữ lập trình bậc thấp (gần ngôn ngữ máy nhất)
• Được xây dựng trên cơ sở ký hiệu tập lệnh của bộ vi xử lý tương ứng
• Phụ thuộc hoàn toàn vào bộ vi xử lý cụ thể
Ngôn ngữ lập trình bậc cao:
• Gần với ngôn ngữ tự nhiên hơn
• Được xây dựng độc lập với cấu trúc của máy tính
Trang 92Tập lệnh
Mỗi bộ xử lý/ vi điều khiển có một tập lệnh xác định
(mang tính kế thừa trong cùng một dòng họ)
Tập lệnh thường có hàng chục đến hàng trăm lệnh
Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý/ vi điều
khiển hiểu được để thực hiện một thao tác xác định
Các lệnh được mô tả bằng các kí hiệu gợi nhớ các
lệnh hợp ngữ
Ví dụ: Lệnh ADD A, #3Ah
0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0
Trang 93Khuôn dạng của một lệnh máy
Mã thao tác (Operation Code - Opcode): mã hóa cho thao tác mà CPU phải thực hiện
hoặc nơi chứa toán hạng mà thao tác sẽ tác
Trang 95Các chế độ địa chỉ
Chế độ định địa chỉ thanh ghi
• Sử dụng thanh ghi để lưu trữ dữ liệu cần thao tác
• Thanh ghi nguồn và đích phải phù hợp về kích
Trang 96Các chế độ địa chỉ
Chế độ địa chỉ trực tiếp
• Toán hạng (nguồn hoặc đích) là địa chỉ của ô nhớ
• Trước địa chỉ ô nhớ không có dấu #
• Ví dụ:
MOV A, 35h ;Dữ liệu trong ô nhớ có địa chỉ
; 35h được chuyển vào thanh ghi A
Trang 97Các chế độ địa chỉ
Chế độ định địa chỉ gián tiếp thanh ghi
• Địa chỉ ô nhớ chứa dữ liệu được chứa trong
thanh ghi R0 hoặc R1
• Trước thanh ghi R0 hoặc R1 phải chèn thêm ký
tự “@” để biểu thị cho chế độ địa chỉ này
• Ví dụ:
MOV A,@R0 ;chuyển dữ liệu trong ô nhớ có
;địa chỉ được chỉ ra trong thanh
;ghi R0 vào thanh ghi A
Trang 99Tập lệnh vi điều khiển 8051
Lệnh số học