RTOS-ARM Cortex M-3 4Giới thiệu CoOS CoOS là sản phẩm của CooCox Team, một nhóm nghiên cứu chuyên cung cấp các tiện ích hỗ trợ vi điều khiển họ ARM.. RTOS-ARM Cortex M-3 9Tiện ích quản
Trang 1Thiết kế và xấy dựng ứng dụng với ARM Cortex M-3
trên nền CoOS-RTOS
Trang 3RTOS-ARM Cortex M-3 3
Hệ điều hành CoOS
Nội dung:
Giới thiệu CoOS
Các tiện ích chính của CoOS
Trang 4RTOS-ARM Cortex M-3 4
Giới thiệu CoOS
CoOS là sản phẩm của CooCox Team, một nhóm nghiên cứu chuyên cung cấp các tiện ích hỗ trợ vi điều khiển họ ARM
CoOS là hệ điều hành nhúng, hỗ trợ đa
nhiệm và thời gian thực
CoOS hỗ trợ LPC1766, MCU xây dựng trên nền CPU ARM Cortex-M3
CoOS là một hệ điều hành nhỏ và tương đối đơn giản
Trang 5RTOS-ARM Cortex M-3 5
Các tiện ích chính của CoOS
Quản lý task
Quản lý thời gian
Đồng bộ các task với nhau
Giao tiếp giữa các task
Trang 6RTOS-ARM Cortex M-3 6
Tiện ích quản lý Task
Task là một công việc cụ thể cần MCU thực
hiện Một task có 3 thuộc tính quan trọng là: mức ưu tiên, stack và con trỏ hàm trỏ đến hàm quy định công việc cần làm
Các trạng thái của task: Running, Ready,
Waiting
Task Control Block (TCB) dùng để lưu trữ
các thông tin của task: con trỏ stack, mức
ưu tiên, trạng thái, ID, …
Trang 7RTOS-ARM Cortex M-3 7
Tiện ích quản lý Task (2)
Ready Task List dùng để quản lý các task ở
trạng thái Ready Khi một task chuyển vào trạng thái Ready, TCB của nó sẽ được đưa vào list theo đúng mức ưu tiên
Trang 8RTOS-ARM Cortex M-3 8
Tiện ích quản lý Task (3)
Các cơ chế định thời gồm có Round robin và
Preemtive Thời gian thực hiện của task ở cơ chế
Round robin được quy định ở biến timeSlice
U8 state; /*Trạng thái của task */
OS_TID taskID; /*ID của task */
…
#if CFG_ROBIN_EN >0 U16 timeSlice;
#endif
…
}OSTCB,*P_OSTCB;
Trang 9RTOS-ARM Cortex M-3 9
Tiện ích quản lý thời gian
Sau một khoảng thời gian xác định, một
ngắt được tạo ra và CoOS làm các công việc liên quan đến hệ thống trong hàm ngắt:
định thời task, xử lý software timer, … Ngắt
mà CoOS sử dụng là SYSTICK exception
được MCU hỗ trợ
Khoảng thời gian giữa 2 SYSTICK có thể thay đổi được
Trang 10RTOS-ARM Cortex M-3 10
Tiện ích quản lý thời gian (2)
đếm CoOS tổ chức các Software Timer
thành một Timer List
Trang 11task Mỗi flag tương ứng với một điều kiện, điều kiện đó xảy ra thì task mới được thực hiện tiếp
Ví dụ:
Trang 12RTOS-ARM Cortex M-3 12
Tiện ích giao tiếp các task
CoOS cung cấp Mailbox để giúp các task
giao tiếp, trao đổi thông tin với nhau
Mỗi mailbox có một mailbox ID để định danh và một con trỏ trỏ đến dữ liệu cần
chia sẻ
Trang 13RTOS-ARM Cortex M-3 13
Tiện ích giao tiếp các task
(2)
Thực chất cơ chế mailbox là task gửi mail
tạo ra một vùng nhớ rồi trỏ con trỏ mailbox đến vùng nhớ đó
Task nhận mail đọc vùng nhớ được trỏ bởi
con trỏ mail, sau đó clear con trỏ mail
Trang 17RTOS-ARM Cortex M-3 17
Kênh giao tiếp SPI
Giao tiếp nối tiếp, “byte-oriented”
SD Card: chế độ SPI Bus, đóng vai trò Slave
Module SPI trong LPC1766: chế độ master (host), truyền 8 bit
Trao đổi dữ liệu: tích cực CS -> ghi dữ liệu cần truyền vào S0SPDR -> chờ bit SPIF tích cực -> đọc S0SPSR -> đọc dữ liệu nhận từ S0SDR/xóa bit SPIF
Trang 18RTOS-ARM Cortex M-3 18
Định dạng thông tin
Command Token: gửi bởi host, là một yêu cầu đến card (đọc/ghi card, đọc thanh ghi…) Ký hiệu: CMDx (x là chỉ số lệnh)
Responde Token: luôn gửi bởi card ngay sau khi nhận CMDx, báo cáo sự thực thi lệnh Ký hiệu: Rx (R1 là thông dụng nhất)
Data Block: dữ liệu thực sự cần trao đổi
Control Token: điều khiển việc truyền Data
Block, gồm Data Responde Token, Start Block Token, Stop Tran Token và Data Error Token
Trang 19nhận Start Block Token -> nhận Data Block
512 byte (1 sector) từ card
Đọc thanh ghi: gửi CMD9 (đọc CSD) hay
CMD10 (đọc CID)/nhận R1 = 0 -> nhận
Start Block Token -> nhận các byte chứa
nội dung thanh ghi
Trang 21RTOS-ARM Cortex M-3 21
Cấu trúc dữ liệu của SD
Card
Gồm 2 vùng: Partiton Area và Regular Area
Partition Area: chứa Master Boot Record
và Partition Table, giúp xác định vị trí, kích thước các phân vùng hiện có trên card
Regular Area: nơi chứa phân vùng của card (thường thì card chỉ có một phân vùng) Dữ liệu trong phân vùng được tổ chức theo
chuẩn tập tin FAT (phổ biến nhất là FAT16)
Trang 22RTOS-ARM Cortex M-3 22
Cấu trúc phân vùng FAT
Boot Sector: dùng để xác định các tham số quan trọng như kích thước sector và
cluster; vị trí và kích thước của bảng FAT, của Root Directory và của vùng Data
Trang 23RTOS-ARM Cortex M-3 23
Bảng FAT
Mỗi file được lưu trong vùng Data theo
một chuỗi các cluster không liên tục
Bảng FAT (File Allocation Table): ánh xạ
toàn bộ cluster trong vùng Data, mỗi entry trong bảng FAT mang một trong các thông tin sau:
Chỉ số cluster kế tiếp
Đánh dấu cluster cuối cùng
Cluster trống, chưa được cấp phát
Cluster xấu hoặc không được phép cấp phát
Trang 24RTOS-ARM Cortex M-3 24
Thư mục (Directory)
Thư mục là bảng các Directory Entry, cung cấp thông tin về các file, thư mục con trong thư mục, về thư mục cha hoặc về tên của phân vùng
Cấu trúc một Directory Entry
Trang 26RTOS-ARM Cortex M-3 26
Cấu hình EFSL trên LPC1766
Hiện thực Hardware Endpoint tương ứng với LPC1766 để đảm nhận việc trao đổi cấp SPI
với SD Card
Tinh chỉnh các thông số trong file cấu hình
Kiến trúc bộ nhớ: byte alignment? Endian?
Số lượng RAM dành cho Caching
Cơ chế tiền cấp phát (Pre-allocate)
Chức năng báo lỗi
Chức năng debug
Trang 28RTOS-ARM Cortex M-3 28
Cấu trúc thư viện EFSL
Trang 30RTOS-ARM Cortex M-3 30
TFT LCD 2.4’
Sự dụng chip điều khiển ILI9320
one-chip SoC 262,144 màu
240RGBx320 điểm ảnh
172,800 bytes RAM cho dữ liệu graphic
System interface
i-80 system (8-/9-/16-/18-bit bus width)
Serial Peripheral Interface (SPI)
RGB interface …
Trang 33RTOS-ARM Cortex M-3 33
Touch Pad
Loại 4 dây , sử dụng nguyên tắc cầu phần áp
Sử dụng ADC để lấy mẫu
Touch đơn điểm
Sử dụng ngắt ngoài để
xác định sự kiện
Trang 36RTOS-ARM Cortex M-3 36
Hardware
Chip LPC1766
Dòng Arm Cotex-M3 của NXP
Tiết kiệm năng lượng => ứng dụng
có tính di động
Xung thạch anh 20MHZ với bộ PLL nhân 5 lần
Các chức năng ngoại vi : Ethernet ; USB Host, devide, Otg, ADC, DAC Hầu hết hỗ trợ DMA hiệu suất cao
Trang 37RTOS-ARM Cortex M-3 37
Hardware
Trang 39RTOS-ARM Cortex M-3 39
WAVPlayer Task
Định dạng file WAV
Hiện thực WAVPlayer
Trang 40RTOS-ARM Cortex M-3 40
Định dạng file WAV
Phần miêu tả của RIFF
Định dạng ở đây l à “WAVE”, yêu cầu có thêm hai sub-chunk là fmt
và data
Sub-chunk fmt
Miêu tả c ác thông tin liên quan đến định dạng âm thanh ở phần sub- chunk data
Sub-chunk data
Chỉ ra kích thước của file và chứa dữ liệu âm thanh thô
Trang 42RTOS-ARM Cortex M-3 42
Trang 44RTOS-ARM Cortex M-3 44
Định dạng file BMP
Header DIB Header Palette Data
Trang 45RTOS-ARM Cortex M-3 45
Module BMP
Hỗ trợ định dạng BMP 24 bit, cho phép mở đóng file BMP, đọc và hiển thị ra LCD
Trang 46RTOS-ARM Cortex M-3 46
Hiện thực BMPViewer
Trang 47RTOS-ARM Cortex M-3 47
GUIMain Task
Task quản lý, luôn được chạy
Tạo một task mới, hủy task
Quản lý giao diện, nút nhất của tất cả các task khác
Các task được định thời theo cơ chế
round_robin
Quản lý các task thông qua các API của OS
CoCreateTask()
CoDelTask()
Trang 49RTOS-ARM Cortex M-3 49
Trang 50RTOS-ARM Cortex M-3 50
Tài liệu tham khảo
1 CooCox_CoOS_User's_Guide.
3 The Definitive Guide to the ARM Cortex-M3, Joseph Yui
4 SD Group, SD specification, Part1: Physical Layer Simplified
Trang 51RTOS-ARM Cortex M-3 51
Demo
Trang 52RTOS-ARM Cortex M-3 52