290 likes | 509 Views
SVTH: Văn Quốc Dũng Lê Quang Vũ. 1. 2. 3. 4. 5. Tổng quan. Task và Co-routine. Soft-timer. Support Architecture. Inter-task Communication. CONTENT. TỔNG QUAN. FreeRTOS TM hỗ trợ chính thức 27 kiến trúc (PIC32, AVR32,…) Portable, open source , mini Real Time Kernel
E N D
SVTH: VănQuốcDũng LêQuangVũ
1 2 3 4 5 Tổngquan Task và Co-routine Soft-timer Support Architecture Inter-task Communication CONTENT
TỔNG QUAN • FreeRTOSTMhỗtrợchínhthức27 kiếntrúc(PIC32, AVR32,…) • Portable, open source, mini Real Time Kernel • Cóthểsửdụngtrongcácứngdụngthươngmại? -> GPL (General Public License)
TỔNG QUAN • OpenRTOSTM : fully featured professional grade USB, file system and TCP/IP components • SafeRTOSTM : sửdụngtrong “safety critical applications”
TỔNG QUAN • Thiếtkếnhỏgọn, dễsửdụng. (4K to 9K bytes). • Ngônngữlậptrình C. • Sửdụngtasks and co-routines.
TỔNG QUAN • Queues, binary semaphores, counting semaphores, recursive semaphores and mutexeschogiaotiếpvàđồngbộgiữacáctask,vàgiữacác task và interrupt. • Mutexesvới “priority inheritance”. • Hỗtrợsoftware timers.
TASK VÀ CO-ROUTINE • Task: • Ready • Running • Block • Suspended
TASK VÀ CO-ROUTINE • Task: • Multitasking – with full preemption • Fully prioritised • Each task maintains its own stack • Priority: • 0 -> configMAX_PRIORITIES – 1 • Low -> High • = 0 : idle task
TASK VÀ CO-ROUTINE • Implement task: void vATaskFunction( void *pvParameters ) { for( ;; ) { -- Task application code here. } } • Create: xTaskCreate() • Delete : vTaskDelete()
TASK VÀ CO-ROUTINE • Idle task: • created automatically when the scheduler is started • free memory allocated • which will execute only when there are no other tasks able to do • Other tasks can share the idle task priority
TASK VÀ CO-ROUTINE • Idle task:
TASK VÀ CO-ROUTINE • Share a single stack • Co-routine: • Running • Ready • Block • Priority: • 0 -> configMAX_CO_ROUTINE_PRIORITIES - 1
TASK VÀ CO-ROUTINE • Implement co-routine: void vACoRoutineFunction( xCoRoutineHandlexHandle, unsigned portBASE_TYPEuxIndex ) { crSTART( xHandle ); for( ;; ) { -- Co-routine application code here. – } crEND(); }
TASK VÀ CO-ROUTINE • Scheduling co-routine: • scheduled by repeated calls to vCoRoutineSchedule() • tasks and co-routines to be easily mixed within the same application • execute when there are no tasks of priority higher than the idle task
inter-task communication • Queues • Binary Semaphores • Counting Semaphores • Mutexes, and • Recursive Mutexes.
inter-task communication • Queues • Là dạng chính trong inter-task communication. • Tasks – tasks, tasks – interrupts. • Thường được dùng ở dạng FIFO. • Phần tử trong queue có kích thước cố định: có thể ở dạng con trỏ nếu cần thiết. • Có 3 trạng thái trống, đầy và bình thường. • Ticks.
inter-task communication • Binary Semaphores • Chủ yếu dùng với mục đích đồng bộ.
inter-task communication • Counting Semaphores • Đếm sự kiện • Semaphoes khởi tạo là 0. • Khi có sự kiện Semaphore tăng . • Khi task nhận sự kiện Semaphore giảm. • Quản lý tài nguyên • Semaphoes khởi tạo là số lượng tài nguyên. • Khi task lấy tài nguyên thì Semaphore giảm. • Khi task trả tài nguyên thì Semaphore tăng.
inter-task communication • Mutexes('MUT'ual 'EX'clusion) • Dùng để giải quyết đụng độ. • Thay đổi priority cho phù hợp.
inter-task communication • Recursive Mutexes
Software Timers • In a nutshell • One-Shot and Auto-reload • Resetting a Timer
Software Timers • In a nutshell • Gọi hàm tại một thời điểm xác định trong tương lai. • NOTE: Software timers phải được khởi tạo trước khi sử dụng.
Software Timers • One-Shot and Auto-reload
Software Timers • Resetting a Timer
Support Architecture AlteraAtmelCortusCypressEnergy MicroFreescaleFujitsuLuminary MicroMicrochipNECMicrosemi (formally Actel)NXPRenesasSilicon LabsST MicroelectronicsTexas InstrumentsXilinxx86 (real mode)x86 / Windows Simulator
Support Architecture the PIC32, a MIPS based 32bit microcontroller offerings from Microchip
Support Architecture he TCP/IP demo uses the lwIP TCP/IP stack and includes a basic web and TFTP server implementation