1 / 29

Microprocesors, Advanced W hat You Need to Know About RTOSes

Microprocesors, Advanced W hat You Need to Know About RTOSes . February 1, 2012 Jack Ganssle. The RTOS. The kernel – the multitasker The kernel handles tasking It also has resources to pass data between tasks safely, and to synchronize tasking.

jessenia
Download Presentation

Microprocesors, Advanced W hat You Need to Know About RTOSes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microprocesors, AdvancedWhat You Need to Know About RTOSes February 1, 2012Jack Ganssle

  2. The RTOS The kernel – the multitasker The kernel handles tasking It also has resources to pass data between tasks safely, and to synchronize tasking. An RTOS also has resources like communications, a GUI, a file system, and debugging tools.

  3. Polled Loop Wait for something Dosomething

  4. Polled Loop With Interrupts Interrupt event Wait for something Wait for interrupt signal Handle Interrupt Dosomething Signal main loop

  5. Enter the RTOS Kernel Interrupt event Handle Interrupt Handle screen Handle TCP/IP Process data Signal RTOS

  6. When Do You Need an RTOS? Multiple independent activities Communications File system GUIs

  7. An Infusion Pump

  8. What About Linux? Memory needs Real-time response Reliability, validation and security Licensing issues Porting Linux is hard!

  9. Multitasking and Tasks void App_TaskADC (void *p_arg) { while (1) { ADC_Read(); OSTimeDly(10); } }

  10. Multitasking and Tasks void App_TaskLowFluid (void *p_arg) { code to handle low fluid; OSTaskDel(. . .); }

  11. Task Creation • void main (void) • { • OSInit(); /* Kernel initialization */ • OSTaskCreate(...); /* Task creation */ • OSTaskCreate(...); • OSStart(); /* Start multitasking */ • }

  12. TCBs and Stacks Task Control Block Stack Stack pointer Registers Task Priority Rest of stack Task state Other task data

  13. Task States

  14. Scheduling Preemption The suspension of one task and start of another Context switching The process of switching from one task to another Round robin The giving of equal time to all same-priority tasks

  15. Round-Robin Scheduling

  16. Priorities

  17. Scheduling Points When a task decides to wait for time to expire When a task sends a message or a signal to another task When an ISR sends a message or a signal to a task When a kernel object is deleted When the priority of a task is changed Other places

  18. I/O Perils Task 1 “Hi There” Terminal “HHio wTdhyere” Task 2 “Howdy”

  19. The Mutex Acquire_mutex; Access_device; Release_mutex;

  20. Semaphores • AtoD_Read (uint16 *result) • { • start ADC conversion • wait for semaphore • Read A/D • return result • } • ADC_ISR (void) • { • release semaphore • clear interrupt • }

  21. Message Queues Rx ISR Message queue Serial Stream Rx Task

  22. Roll Your Own? Consider the cost of buying vs. cost to write Cost to validate Messaging and synchronization Modularity

  23. Rate Monotonic Scheduling If tasks are periodic, and do not share resources or sync with each other, then RMA says: if: E1/T1 + E2/T2 + E3/T3 … <= n(2 1/n - 1) all hard real time deadlines will be met.

  24. // Task A – if angle> 90 swap modes void a (void){ int raw; float angle; float scale=2*pi; raw=inport(encoder); angle=(float)raw * scale; if(angle>90)swap_mode; }

  25. 0013DA 9A 00 00 CALL ddload 0013DF 83 C4 04 ADD SP,4 0013E2 9A 00 00 CALL dpush 0013E7 FF 76 FC PUSH WORD PTR [BP-4] 0013EA 9A 00 00 CALL dicvt 0013EF 83 C4 02 ADD SP,2 0013F2 9A 00 00 CALL dpush 0013F7 9A 00 00 CALL drmul 0013FC 83 C4 10 ADD SP,16 0013FF 9A 00 00 CALL dpush

  26. k=(l1>l2); 000E8A 8B 56 CA MOV DX,[BP-54] 000E8D 8B 46 C8 MOV AX,[BP-56] 000E90 3B 56 D6 CMP DX,[BP-42] 000E93 7F 07 JG SHORT L42 000E95 7C 0A JL SHORT L40 000E97 3B 46 D4 CMP AX,[BP-44] 000E9A 76 05 JBE SHORT L40 000E9C B8 01 00 L42 MOV AX,1 000E9F EB 02 JMP L41 000EA1 2B C0 L40 SUB AX,AX 000EA3 89 46 F6 L41 MOV BP-10],AX 000EA6 FF 46 FE INC [BP-2]

  27. Talk to the vendors We’re mad as hell and we’re not gonna take it anymore!

  28. Software Selection • CPU/Language/Tool compatibility • Pricing model • Source or object? • Size and performance • Debugging tools • Services, drivers • Other software components • Reputation/Tech Support • Reliability

  29. Questions?

More Related