ecgr-6185 µc/os ii nayana rao university of north carolina at charlotte

19
ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Upload: oswald-hawkins

Post on 17-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

ECGR-6185

µC/OS II

Nayana Rao

University of North Carolina at Charlotte

Page 2: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Introduction and Features

• Very small real time OS kernel: OS that enforces timing constraints

• Memory footprint is small ~ 20 KB

• OS source code is written in C-open source but not free for commercial use

Page 3: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

MULTITASKING

• Process of switching CPU and scheduling between several tasks

• Resources are shared

• Each task is an infinite loop

Page 4: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

KERNEL

• Responsible for managing tasks and initiate context switching

• Pre-emptive kernel

Page 5: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

SCHEDULING

• Preemptive priority driven real time scheduling

• 64 priority levels which means maximum allowed tasks = 64

• Priority inversion problem: When a task with lower priority holds a resource required by high priority task.

Page 6: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Priority Inversion problem:

Page 7: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Solution: Priority Inheritance

Page 8: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

MUTUAL EXCLUSION

Avoidance of simultaneous use of resources

• Interrupt Handlers: Enabling and disabling interrupts to manipulate and protect critical sections so that no other ISR or context switch occurs

• Semaphores: binary or counting

• If Deadlock-> Set timeout

Page 9: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

SYNCHRONIZATION AND INTERRUPTS

• Between two tasks or between task and ISR

• Interrupt informs the CPU of asynchronous events

• Interrupt latency is important and should be kept low to improve responsiveness Interrupt latency = max duration for which interrupts are disabled+ time to start executing first instruction in ISR

Page 10: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

µC/OS II File Structure

Page 11: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Tasks

• Small piece of code that performs some function: infinite loop

• Several tasks controlled by a Task Control Block. Also maintains state of task

• Task information maintained by OS-Task’s Context

• Each task has a unique priority

Page 12: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Dormant: Procedure residing on RAM/ROM. Not a task till it is called to execute

Ready: Not delayed or waiting. Contained in a ready list

Running: Task ready or schedule to run on the CPU

Waiting: Task is waiting for an event to occur eg: timeout or for semaphore

ISR: A task may be pre empted by an ISR

Page 13: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

• Each task could be in 1 of 5 states: Dormant, Ready, Running, Waiting, ISR

Page 14: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Example of Task

Page 15: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

Task level Scheduling, Context Switching and Clock Ticks

Scheduler schedules highest priority task to run- Interrupts are disabled during scheduling so that new tasks are not added by

other interrupts to the ready list

Context Switching (handled at interrupt level) must save CPU registers of the pre-empted task to its stack and be able to restore highest priority task from its task

Clock Ticks: Special interrupt that keeps track of timing and delays in tasks

Page 16: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

µC/OS II and the Renesas µC

• Can be ported to several existing µC architectures

• Download the port to run the Renesas board from http://www.ucos-ii.com and installed C:\renesas\NC30WA

Page 17: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

• Modify contents of main.c file (located in test folder) to build the required application

/*Constants, Macros, Globals, Prototypes*/

void main (void)

{

OSInit();

OSTaskCreate(TaskStart, (void*)0x5aa5, (void*)&TaskStartStk[TASK_STK_SIZE - 1], 0);

OSStart();

}/*Startup Task*/

/*Task List*/

/*System Tick*/

/*Other Initializations*/

/*Interrupts*/

Page 18: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte

• Make changes to and execute the mk.bat file

• Set up Flash over USB (v2.4)

• Compile main file to main.mot using flash over USB and load to board

Page 19: ECGR-6185 µC/OS II Nayana Rao University of North Carolina at Charlotte