Freescale MQX TimerGiới thiệu về module Timer trong MQXGiải thích cơ thế hoạt động khối timer trong MQX RTOSGiải thích thời gian tương đối và thời gian tuyệt đốiCác hàm quan trọng trong khối timer của MQX RTOSGiải thích về Watchdog trong MQX RTOS
Trang 1EMBEDDED SYSTEM
LECTURE 11: FREESCALE MQX
RTOS TIMER
Trang 2Mục tiêu
Understanding on how the MQX maintain the timing feature.
Introduce about the MQX timer Component
Introduce about the MQX software Watdog component
Trang 3TABLE OF CONNTENTS
MQX Timing features
Deep look at how kernel handles time
Absolute time and Elapsed time
Time Component Watchdog
Trang 4GIẢI THÍCH CÁC THUẬT NGỮ
Freescale: Tên một công ty đa quốc
gia trụ sở Austin – Texas NXP
semiconductors (2015).
MQX RTOS: Real Time Operating System được phát triển bởi Precise
Software Technologies Inc
Freescale MQX(Message Queue
eXecutive)
Trang 5 BSP: (Board Suport package) là một mã thực thi nhằm
cung cấp một giao diện chuẩn giữa phần cứng và phần hệ điều hành BSP không trực tiếp truy cập vào phần cứng BSP chỉ cung cấp giao diện device driver cho phép kernel giao tiếp với tài nguyên phần cứng như CPU, RAM, …
Trang 6 Thời gian thực: là thời gian phản ánh về độ trung thực
của thời gian hay không? có phải là hiển thị chính xác và đồng bộ theo đúng nhịp đồng hồ đếm thời gian hay không?
Thời gian thực được hiểu là yêu cầu của hệ thống phải
đảm bảo thoả mãn về tính tiền định trong hoạt động của
hệ thống Tính tiền định nói lên hành vi của hệ thống thực hiện đúng trong một khung thời gian cho trước hoàn toàn xác định Khung thời gian này được quyết định bởi đặc điểm hoặc yêu cầu của hệ thống, có thể là vài giây và cũng có thể là vài nano giây hoặc nhỏ hơn nữa Ở đây chúng ta phân biệt yếu tố thời gian gắn liền với khái niệm về thời gian thực
Trang 7 Hard Readtime: nếu không đáp ứng yêu cầu thời gian
thực, hệ thống sẽ sụp đổ hay gây ra hậu quả khôn lường (Fire System, hệ thống túi khí xe hơi, hệ thống làm mát điện hạt nhân,…)
Soft Realtime: nếu không đáp ứng yêu cầu thời gian
thực, hệ thống sẽ bị suy giảm về chất lượng dịch vụ
(Quality of Service – QoS) (hệ thống Video, Audio,…)
RTOS – Hệ điều hành thời gian thực: là phần mềm điều
khiển chuyên dụng thường được dùng trong những ứng dụng điện toán nhúng có tài nguyên bộ nhớ hạn chế và yêu cầu ngặt nghèo về thời gian đáp ứng tức thời, tính sẵn sàng cao và khả năng tự kiểm soát một cách chính xác Ví dụ: Windows, Linux, Unix, VxWorks
Trang 8MQX Timing
MQX timer được sử dụng cho các ứng dụng như
sau:
Round – Robin Scheduling
Định giờ cho hàm gọi MQX (msg_recv,…)
Tạm ngưng 1 tác vụ/tiến trình nào đó một khoảng thời
gian (time delay) chưa chính xác nguyên nhân độ phân giải của BSP
Date and time
Trang 9Round-Robin Scheduling
time 50ms 100ms 150ms
Trang 10Timeouts for MQX function calls
And time_delay
Trang 11Timer là một thành phần tùy chọn mà bạn có thể
enable hoặc disable ở cấp BSP(BSP level).
Có 2 loại time: Thời gian tuyệt đối và thời gian tương đối.
Bạn có thể thay đổi thời gian tuyệt đối.
Resolution depends on hardware and app settings
MQX RTOS sử dụng Counter 64 – bit để đếm số lượng
ngắt kể từ khi hệ thống khởi động (Cung cấp một giá trị lớn trước khi timer bị tràn, ví dụ nếu “Tick” xảy ra trong
1 nanosecond, timer sẽ bị tràn sau 584 năm – User manual MQX)
Trang 12 Sau đó giá trị trả về cho ứng dụng là 1 số 32 –bit thể hiện
số lượng hardware tick kể từ lần tick cuối cùng
Thông thường MQX RTOS đọc giá trị này từ hardware
counter phục vụ trong chương trình timer Kết quả nhận được thời gian một cách chính xác vì số lần “tick” có thể được xác định.
Trang 13Cái nhìn sâu về xử lý T/gian của Kernel
Trang 14Trong lý thuyết về hệ điều hành, kernel chính là
một phần của hệ điều hành, nó sẽ được nạp lên bộ nhớ đầu tiên và vẫn tồn tại trong lúc chương trình hoạt động
Một kernel thời gian thực sẽ cung cấp hầu hết các
dịch vụ cần thiết cho các ứng dụng nhúng.Do đó chỉ là một phần của hệ điều hành và được nạp
thẳng lên bộ 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.
Trang 15Kernel là một lõi mềm giám sát hệ thống, cung cấp
các khối logic, các giải thuật lập lịch, các giải thuật quản lý tài nguyên Mỗi một hệ thống thời gian
thực đều có một kernel Mỗi hệ thống thời gian
thực là một sự tổng hợp của nhiều module trong
đó bao gồm kernel, file system, network protocol stack, và các module khác tùy thuộc vào yêu cầu chức năng của hệ thống.
Trang 17Kiế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
Trang 18Nế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.
Trang 20Mặc dù phương pháp điều khiển vòng lặp với
polling rất dễ thực hiện, tuy nhiên nó vẫn có
những hạn chế nghiêm trọng
Thứ nhất đó chính là nó sẽ mất rất nhiều thời gian, khi
mà một luồng cần truy cập đến vi xử lý sẽ phải chờ đến lượt của mình, và một chương trình có quá nhiều luồng
sẽ bị chậm đi rất nhiều.
Thứ hai, phương pháp này không có sự phân biệt giữa
các luồng, luồng nào quan trọng và luồng nào ít quan trọng, từ đó xác định mức độ ưu tiên giữa các luồng.
Trang 21 Một phương pháp khác mà các kernel thời gian
thực hay sử dụng đó chính là mô hình sắp xếp
mức độ ưu tiên
Trong mô hình này, mỗi luồng sẽ đi kèm với mức
độ ưu tiên của nó, lúc này, vi xử lý sẽ thiết lập
đường truy cập tới luồng nào có mức độ ưu tiên cao nhất khi nó đòi hỏi được phục vụ Cũng 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 các luồng có mức độ ưu tiên
thấp nhất vẫn phải có thể truy cập tới vi xử lý một vài lần
Trang 23Một ưu điểm cực kỳ quan trọng của phương pháp
này đó chính là nó có khả năng tạm hoãn thực thi một luồng khi có một luồng khác với mức độ ưu tiên cao hơn cần phục vụ Quá trình lưu trữ lại các
thông tin hiện thời của luồng bị tạm hoãn thực thi khi có một luồng khác với mức độ ưu tiên cao hơn cần phục vụ gọi là “context switching” Quá trình này phải được thực hiện nhanh và đơn giản để
luồng bị tạm hoãn có thể thực hiện tiếp nhiệm vụ
của mình một cách chính xác khi nó lấy lại đươc
quyền điều khiển.
Trang 24 Một hệ thống nhúng thời gian thực phải có khả năng
đáp ứng lại các tín hiệu ngõ vào hay các sự kiện một cách nhanh nhất và chính xác nhất, đây chính là các ngắt của hệ thống Ngắt của hệ thống sẽ phải làm cho
vi xử lý ngưng nhiệm vụ đang thực thi để xử lý ngắt
Một ngắt sẽ được xử lý bởi ISR (interrupt service
routine), nó có khả năng kích hoạt một luồng có mức
độ ưu tiên cao hơn luồng đang được thực thi Lúc
này, nó sẽ tạm hoãn lại luồng hiện tại để dành quyền cho luồng mới có mức độ ưu tiên cao hơn Ngắt có thể được tạo ra bởi phần mềm (ngắt mềm) hay bởi các
thiết bị phần cứng (ngắt cứng).
Trang 25Absolute Time and Elapsed Time
Elapsed Time:
Elapsed Time is the amount of time since MQX
RTOS boot up following a power reset to intire
system or a processor reset.
MQX Bootup
Time 0
End
Elapsed Time Absolute Time
X
Trang 26Absolute Time and Elapsed Time
Trang 27Time Formats
Trang 300:00:00:0000 Jan 1, 1970
What is it? Unix Time, Epoch Time, Posix Time
Jan 1, 1970
Trang 310:00:00:0000 Jan 1, 1970
Trang 32Update the current time
Trang 36Getting Elapsed Time
Trang 39Getting Absolute Time
Trang 41Setting Absolute Time
Trang 44Blocking until a future Absolute Time
Trang 45Timer Component
Trang 48Giới thiêệu về Watchdog
Các hệ thống nhúng: thường
nằm trong các cỗ máy được kỳ
vọng là sẽ chạy hàng năm trời
liên tục mà không bị lỗi hoặc
có thể khôi phục hệ thống khi
gặp lỗi
TẠI SAO LẠI CẦN ĐẾN WATCHDOG ?
→ CẦN MÔÔT KỸ THUÂÔT
ĐẢM BẢO SỰ ỔN ĐỊNH
ĐÓ
Trang 49Giới thiêệu về Watchdog
WATCHDOG LÀ GÌ?
và khôi phục lại trạng thái
của hệ thống trong trường
hợp hệ thống bị lỗi, do
phần cứng hoạt phần mềm
gây ra
Trang 50Giới thiêệu về Watchdog
BẢN CHẤT CỦA WATCHDOG
Watchdog về bản
chất sẽ là một bộ
định thời gian đặc
biệt để định nghĩa
thời gian hoạt động
bình thường của hệ
thống
Khi có một sự cố, hệ thống bị treo hoặc chạy quẩn,
CPU sẽ không thực hiện đúng chức năng, lúc này
thời gian hoạt động sẽ có sự sai lệch
Trang 51Giới thiêệu về Watchdog
HOẠT ĐỘNG CỦA WATCHDOG
Dựa vào yếu tố trên, nguyên tắc hoạt động của
Watchdog :
Nếu hệ thống hoạt động bình thường Watchdog sẽ
nhận lệnh reset lại bộ đếm của nó sau 1 khoảng thời
gian, và tiếp tục đếm lên từ 0
1 khoảng thời gian ở đây sẽ nhỏ hơn thời gian mà
Watchdog đã lưu ở trên
Watchdog sẽ lưu lại thời gian hoạt động bình
thường của mạch
Trang 52Giới thiêệu về Watchdog
HOẠT ĐỘNG CỦA WATCHDOG
Quá trình hoạt động này lặp đi lặp lại cho đến khi
gặp sự cố.
Lúc này CPU sẽ không chạy đúng chức năng, bị treo
và sẽ không gửi lại lệnh Reset cho bộ đếm
Watchdog
Trang 53Giới thiêệu về Watchdog
HOẠT ĐỘNG CỦA WATCHDOG
Watchdog vẫn tiếp tục đếm cho đến khi thời gian
đếm vượt quá thời gian hoạt động bình thường của hệ thống.
Watchdog sẽ gửi tín hiệu Reset đến CPU để khôi
phục lại hệ thống