ĐẠI HỌC QUỐC GIA TP. HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
XÂY DỰNG HỆ THỐNG NHÚNG THỜI GIAN
THỰC VỚI VI ĐIỀU KHIỂN AT91SAM7S256
GVHD: Th.S CAO TRẦN BẢO THƯƠNG
SVTH: NGUYỄN CÔNG MINH 0520043
HOÀNG TRỌNG HẠNH 0620020
TRƯƠNG THANH HẢI 0620019
TP Hồ Chí Minh – Tháng 06/2010
- 1 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
- 2 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Mục lục
MỤC LỤC 2
1. Giới thiệu chung 3
1.1 Phần cứng 3
1.2 Phần mềm 5
2. Quá trình thực hiện 13
3. Kết luận 23
TAÌ LIỆU THAM KHẢO 24
NHẬN XÉT CỦA GIẢNG VIÊN 25
1. Giới thiệu chung
1.1 Phần cứng
Cấu trúc 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
* Biến trở xoay nối trực tiếp với ADC.
* Header mở rộng cho tất cả các cổng vào ra.
* Vùng Free Gird cho ứng dụng của người dùng.
* Nguồn cấp từ cổng USB hoặc 5-9V DC ngoài.
* Mạch 2 lớp chất lượng cao, linh kiện SMD
Chức năng của sản phẩm :
AT91SAM7S256 là một vi điều khiển hiệu năng cao thuộc dòng ARM7-TDMI
32 bit được phát triển bởi Atmel. AT91SAM7S_EB là một hệ phát triển cho phép các
kỹ sư dễ dàng tiếp cận và làm việc một cánh nhanh chóng nhất với dòng ARM.
Với một khe cắm thẻ nhớ SD/MMC người dùng hoàn toàn có thể phát triển các
ứng dụng lưu trữ hoặc sử dụng số liệu dung lượng cao. Ngoài ra,phần cứng có sẵn cho
phép lập trình minh họa hoạt động của các giao tiếp cơ bản như UART, ADC, GPIO,
USB 2.0.
Đặc biệt Board hỗ trợ chế độ lập trình BOOT ASSISTANT của Atmel, có khả
năng nạp chương trình trực tiếp qua cổng USB hoặc RS232 mà không cần đến mạch
nạp JTAG.
1.2 Phần mềm
Nhóm đã sử dụng và phát triển
- Driver giao tiếp USB 2.0 và cổng COM ảo trên Windows
- Phần mềm biên dịch IAR Embedded Workbench for ARM version 5.11
- Phần mềm nạp SAMBA version 2.8, hỗ trợ chế độ boot assistant
- Phần mềm Terminal giao tiếp giữa board và máy tính qua cổng COM, viết trên
môi trường Visual Basic.net
- Hệ điều hành thời gian thực FreeRTOS version 5.4.2
- 5 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
- Code giao tiếp với máy tính qua cổng COM và USB 2.0, nạp cho VĐK
AT91SAM7S256.
Về hệ thống nhúng thời gian thực
Mặc dù khái niệm hệ thống nhúng (embedded system) ra đời cách đây thực sự chưa
tính PC : một hệ thống nhúng chính là một hệ thống chuyên dụng với một chức năng
cụ thể, trong khi đó hệ thống máy tính PC là một hệ thống đa dụng với chức năng của
nó tại một thời điểm do phần mềm quyết định.
Trong một hệ thống nhúng có thể có nhiều chương trình phần mềm chạy cùng lúc với
nhau dưới một hệ điều hành nào đó. Bởi vì một hệ thống nhúng còn có thể là một
phần nhỏ của một hệ thống lớn hơn, nên nó có thể nằm trên một board mạch với một
vi xử lý riêng cùng với phần mềm được lưu trữ trong ROM. Vì là một hệ thống
chuyên dụng, nên hầu hết các hệ thống nhúng phải đáp ứng sự thay đổi ở các tín hiệu
ngõ vào (input) trong thời gian ngắn nhất có thể, tức là phải đảm bảo tốc độ hoạt động
của nó. Vì vậy, các hệ thống nhúng đều có tốc độ hoạt động rất cao là được xếp vào
loại thời gian thực (real time). Với các ứng dụng đơn giản, nó chỉ cần một chương
trình nhỏ (mà không cần hệ điều hành) để điều khiển hệ thống, tuy nhiên, một hệ điều
hành cài đặt trên hệ thống nhúng để chạy các chương trình ứng dụng sẽ giúp cho hệ
thống trở nên cực kỳ linh hoạt.
- Đặc trưng của hệ thống nhúng
Một đặc trưng quan trọng của hệ thống nhúng đó chính là “tính quyết định”. Đặc
trưng này có nghĩa là tất cả các trạng thái bên trong của hệ thống, các giá trị ngõ vào
liên quan đến ngõ ra đều có thể tính toán trước được (về mặt nguyên tắc). Tất nhiên
“tính quyết định” không chỉ là một đặc trưng riêng cho một hệ thống nhúng mà nó có
thể là một hệ thống bất kỳ, tuy vậy, một đặc tính khác cũng khá quan trọng và mang
nét riêng của hệ thống nhúng đó chính là thời gian thực. Một hệ thống nhúng phải có
khả năng thực hiện chức năng của mình trong một khoảng thời gian hữu hạn, ít nhất
và có thể biết trước.
Một hệ thống nhúng bao giờ cũng được “bao bọc” bởi một hệ thống phần cứng mà nó
điều khiển, chính vì vậy, đối với người sử dụng cuối, họ không nhận ra sự hiện diện
của hệ thống nhúng trong một thiết bị phần cứng. Do đó, đây cũng là sự khác biệt giữa
một hệ thống nhúng và một máy tính cá nhân. Một hệ thống nhúng cũng có khả năng
tương tác với thế giới bên ngoài, tuy nhiên giao diện người sử dụng của nó lại thường
khá đơn giản.
Lĩnh vực hệ thống nhúng đòi hỏi sự kết hợp của nhiều ngành lại với nhau như : kỹ
nhớ, nên một kernel thời gian thực thường có kích thước rất nhỏ, rất phù hợp cho các
bộ nhớ có dung lượng thấp trong các hệ thống nhúng. Hình dưới mô tả một kernel
trong một RTOS hoàn chỉnh.
- 8 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Hoạt động của hệ thống nhúng đươc thực hiện theo chương trình, gồm các tác vụ
(task) hoặc luồng (thread) trong việc đáp ứng các tín hiệu ngõ vào hay trong quá trình
xử lý bình thường theo yêu cầu của hệ thống. Các quá trình xử lý phải trả về kết quả
đúng trong một khoảng thời gian xác định.
- Chương trình, tác vụ và luồng
Một chương trình trên một hệ thống nhúng chính là một phần mềm có khả năng thực
thi độc lập và có vùng nhớ riêng của mình. Nó bao gồm môi trường thực thi một chức
năng cụ thể và khả năng tương tác với hệ điều hành. Một chương trình có thể được bắt
đầu chạy một cách độc lập hoặc có thể từ các chương trình khác. Một hệ điều hành có
khả năng thực thi nhiều chương trình cùng một lúc song song nhau.
Tuy nhiên, khi một chương trình có khả năng tự chia ra một vài phần có khả năng
thực thi song song nhau, mỗi phần đó được gọi là một luồng. Một luồng chính là một
phần trong chương trình và phụ thuộc về mặt chức năng so với các luồng khác nhưng
lại có khả năng hoạt động độc lập nhau. Các luồng sẽ chia sẻ chung một bộ nhớ trong
một chương trình. Khái niệm về tác vụ và luồng có thể thay thế cho nhau. Hình dưới
mô tả sự khác nhau giữa chương trình và luồng.
- Kiến trúc của hệ thống thời gian thực
Kiến trúc của một hệ thống thời gian thực sẽ quyết định các luồng được thực thi khi
nào và bằng cách nào. Có 2 kiến trúc phổ biến là kiến trúc điều khiển vòng lặp với
polling và mô hình sắp xếp ưu tiên. Trong kiến trúc điều khiển vòng lặp với polling,
kernel sẽ thực thi một vòng lặp vô hạn, vòng lặp này sẽ chọn ra luồng trong một mẫu
được định trước. Nếu một luồng cần dịch vụ, nó sẽ được xử lý. Có một vài biến thể
của phương pháp này, tuy nhiên vẫn phải đảm bảo mỗi luồng đều có khả năng truy
cập đến vi xử lý. Hình dưới mô tả cách xử lý của phương pháp này.
- 9 -
(ngắt cứng).
- Sự phát triển của hệ thống nhúng
Các ứng dụng nhúng ngày nay rất rộng rãi và sẽ được phát triển ngày càng cao ở cả
phần cứng lẫn phần mềm. Các ứng dụng nhúng đều cần phải có thời gian thực, đây là
một sự khác biệt rất lớn giữa một hệ thống nhúng và một hệ thống máy tính truyền
thống. Ngày nay để tăng tốc độ của một hệ thống nhúng, nó phải có khả năng thực
hiện xử lý song song giữa các luồng với nhau. Do vậy, cách viết các chương trình
phần mềm truyền thống sẽ không còn phù hợp khi lập trình cho các hệ thống nhúng đa
luồng nữa. Hơn nữa, một vi xử lý trong hệ thống nhúng đòi hỏi tốc độ cao sẽ không
còn làm nhiệm vụ xử lý, mà chỉ còn làm nhiệm vụ điều khiển và giám sát hoạt động
của hệ thống. Chức năng xử lý luồng dữ liệu sẽ được các module phần cứng trong hệ
thống đảm nhận và được thực hiện song song nhau. Kiến trúc một hệ thống nhúng
thời gian thực đã có sự khác biệt rất nhiều và những cải tiến đáng kể so với kiến trúc
hệ thống máy tính truyền thống trước kia. Điều này nhằm đảm bảo về sự chính xác và
cải thiện tốc độ của hệ thống. Hầu hết các hệ thống nhúng ngày nay dùng ngôn ngữ C
để lập trình, tuy nhiên một số rất ít vẫn dùng hợp ngữ.
Nguyên tắc hoạt động của HĐH FreeRTOS
- 11 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Hoạt động đa nhiệm
2 con trỏ program counter và stack pointer sẽ định hướng hoạt động cho HĐH
- 12 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
2. Quá trình thực hiện
Ý tưởng chính của nhóm là sẽ cài đặt hệ điều hành thời gian thực FreeRTOS
phiên bản 5.4.2 lên bộ nhớ flash của VĐK AT91SAM7S256 và thực hiện 2 chương
trình giao tiếp với PC qua cổng COM và USB.
A. Truyền nhận text giữa board và máy tính qua cổng COM ảo
B. Mô phỏng một Joystick qua cổng USB
- Cài đặt phần mềm nạp Samba 2.7, nằm trong bộ AT91-ISP (In System
- 18 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Chạy chương trình nạp SAMBA, chọn cổng kết nối là USB, tên VĐK là
AT91SAM7S256
Chọn file .bin đã được dịch thành công ở trên và tiến hành nạp chương trình.
- 19 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
A. Truyền nhận text giữa board và máy tính qua cổng COM ảo
Khởi chạy chương trình giao tiếp qua cổng COM và thiết lập chế độ hoạt động
thích hợp
Giao tiếp qua cổng COM ảo, truyền và nhận text giữa board với máy tính
- 20 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
B. Mô phỏng một Joystick qua cổng USB
Ta mô phỏng một joystick, khi kết nối, PC nhận dạng board như một thiết bị
USB mới được cắm vào
Kết nối thành công, board đã được cấu hình thành 1 joystick USB
Ta tiếp tục kiểm tra chế độ điều khiển của joystick
Ta sử dụng 2 nút nhấn PA20 và PA19 trên board để điều khiển hướng đi của
joystick, nút phải (switch 2) đi xuống và nút trái (switch 1) đi lên.
3. Kết luận
- 21 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Đề tài của nhóm chỉ dừng ở mức độ nghiên cứu một cách tổng quan và cơ bản về
cấu tạo và những ứng dụng của dòng vi xử lý ARM nói riêng, và các thao tác chính
trong quy trình xây dựng và phát triển một ứng dụng nhúng nói chung.
- 22 -
Xây dựng hệ thống nhúng thời gian thực với vi điều khiển AT91SAM7S256
Tài liệu tham khảo
1. Bách khoa mở wikipedia.org - />2. How FreeRTOS works - />3. Hệ thống nhúng thời gian thực là gì - BIMOS Việt Nam