real time systems

36
Real Time Systems VxWorks

Upload: petra-vasquez

Post on 02-Jan-2016

30 views

Category:

Documents


14 download

DESCRIPTION

Real Time Systems. VxWorks. VxWorks. מערכות הפעלה windows , unix אידיאליות לפיתוח אפליקציות רגילות אולם אינן מתאימות לפיתוח אפליקציות RT מערכות הפעלה סטנדרטיות לזמן אמת אינן מתאימות לפיתוח מתקדם של יישומים רגילים, לדוגמא אין תמיכה ב- GUI - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Real Time Systems

Real Time SystemsReal Time Systems

VxWorksVxWorks

Page 2: Real Time Systems

VxWorksVxWorks

אידיאליות לפיתוח windows, unixמערכות הפעלה •אפליקציות רגילות אולם אינן מתאימות לפיתוח

RTאפליקציות מערכות הפעלה סטנדרטיות לזמן אמת אינן מתאימות •

לפיתוח מתקדם של יישומים רגילים, לדוגמא אין GUIתמיכה ב-

הינה שילוב של שתי המערכות. VxWorksהגישה של •VxWorks -עבור החלקים הקריטיים ו windows או

unixעבור החלקים האחרים

אידיאליות לפיתוח windows, unixמערכות הפעלה •אפליקציות רגילות אולם אינן מתאימות לפיתוח

RTאפליקציות מערכות הפעלה סטנדרטיות לזמן אמת אינן מתאימות •

לפיתוח מתקדם של יישומים רגילים, לדוגמא אין GUIתמיכה ב-

הינה שילוב של שתי המערכות. VxWorksהגישה של •VxWorks -עבור החלקים הקריטיים ו windows או

unixעבור החלקים האחרים

Page 3: Real Time Systems

מערכת דינאמיתמערכת דינאמית

ניתן להכליל רק את המרכיבים שצריך לפיתוח •אפליקציה וכך לחסוך מקום לדוגמא תמיכה

ברשת.

hostניתן לפתח את המערכת על מחשב ה- •targetולהריץ אותה על ה-

targetניתן גם לשלב את המערכות כך שה- • ויספק נתונים מהמערכתhostישמש כשרת ל-

ניתן להכליל רק את המרכיבים שצריך לפיתוח •אפליקציה וכך לחסוך מקום לדוגמא תמיכה

ברשת.

hostניתן לפתח את המערכת על מחשב ה- •targetולהריץ אותה על ה-

targetניתן גם לשלב את המערכות כך שה- • ויספק נתונים מהמערכתhostישמש כשרת ל-

Page 4: Real Time Systems

מבנה כללימבנה כלליHostTarget

Tornado Tools: compiler debugger shell

File.cFile.cpp

File.oProject.out

VxWorksRTOS

Memory

TEXT

DATA

VxSim

TargetServer

Page 5: Real Time Systems

שלבי העבודהשלבי העבודה

targetאתחול 1.

Target Serverחיבור 2.

כתיבה והידור3.

targetאתחול 1.

Target Serverחיבור 2.

כתיבה והידור3.

4 .Download

. בדיקה5

Ethernet

RS-232

Development Host VxWorks Target

Page 6: Real Time Systems

Wind - The OS KernelWind - The OS Kernel

Supports:

• multitasking with preemptive priority scheduling

• intertask synchronization and communication

• Interrupt handling

• Timers

• memory management.

Supports:

• multitasking with preemptive priority scheduling

• intertask synchronization and communication

• Interrupt handling

• Timers

• memory management.

Page 7: Real Time Systems

Drivers SupportDrivers Support

• Network driver – for network devices (Ethernet, shared memory)

• Pipe driver – for intertask communication

• RAM “disk” driver – for memory-resident files

• SCSI driver – for SCSI hard disks, diskettes, tape drives

• Keyboard driver – for PC x86 keyboards

• Display driver – for PC x86 VGA displays

• Disk driver – for IDE and floppy disk drives

• Parallel port driver – for PC-style target hardware

• Network driver – for network devices (Ethernet, shared memory)

• Pipe driver – for intertask communication

• RAM “disk” driver – for memory-resident files

• SCSI driver – for SCSI hard disks, diskettes, tape drives

• Keyboard driver – for PC x86 keyboards

• Display driver – for PC x86 VGA displays

• Disk driver – for IDE and floppy disk drives

• Parallel port driver – for PC-style target hardware

Page 8: Real Time Systems

תכונות נוספותתכונות נוספות

כולל RTתמיכה במערכות קבצים מותאמות ל- •DOSמערכת הקבצים של

אחרותVxWorksגישה "שקופה" למערכות •

TCP/IPתמיכה ב- •

•Remote Procedure Calls

•Remote File Access

•Virtual Memory

כולל RTתמיכה במערכות קבצים מותאמות ל- •DOSמערכת הקבצים של

אחרותVxWorksגישה "שקופה" למערכות •

TCP/IPתמיכה ב- •

•Remote Procedure Calls

•Remote File Access

•Virtual Memory

Page 9: Real Time Systems

בין semaphoresיכולת שיתוף אובייקטים כגון •תהליכים שרצים על מעבדים שונים

, Ansi C++ מיוחדות, תמיכה ב- Cספריות •ספריות פונקציות לטיפול בפסיקות, הקצאת

זיכרון, מחרוזות ומבני נתונים

כלים לבדיקת ביצועים וניצול המעבד•

•Remote Debugging

תמיכה בסוגי לוחות שונים ואוסף פונקציות •לטיפול בחומרה, מיפוי התקנים בזיכרון וכד'

בין semaphoresיכולת שיתוף אובייקטים כגון •תהליכים שרצים על מעבדים שונים

, Ansi C++ מיוחדות, תמיכה ב- Cספריות •ספריות פונקציות לטיפול בפסיקות, הקצאת

זיכרון, מחרוזות ומבני נתונים

כלים לבדיקת ביצועים וניצול המעבד•

•Remote Debugging

תמיכה בסוגי לוחות שונים ואוסף פונקציות •לטיפול בחומרה, מיפוי התקנים בזיכרון וכד'

Page 10: Real Time Systems

Multitasking and Intertask Communications

Multitasking and Intertask Communications

• Interrupt-driven, priority-based task scheduling.

ניתן ליצור כל שגרה/פונקציה כתהליך נפרד עם •מחסנית פרטית

ניתן לחסום, לשחרר, להשהות ולשנות עדיפות •של כל תהליך באמצעות קריאות מערכת

•VxWorks מספקת סמפורים מסוגים שונים לסינכרון בין תהליכים

• Interrupt-driven, priority-based task.scheduling

ניתן ליצור כל שגרה/פונקציה כתהליך נפרד עם •מחסנית פרטית

ניתן לחסום, לשחרר, להשהות ולשנות עדיפות •של כל תהליך באמצעות קריאות מערכת

•VxWorks מספקת סמפורים מסוגים שונים לסינכרון בין תהליכים

Page 11: Real Time Systems

Portable Operating System Interface (POSIX)

Portable Operating System Interface (POSIX)

אוסף תקנים עבור קריאות מערכת •משמש לתאימות בין מערכות ויכולת העברת קוד •

ממערכת למערכת•VxWorks:תומכת בתקן זה עבור

• asynchronous I/O• Semaphores, message queues• memory management• queued signals• Scheduling, clocks and timers

אוסף תקנים עבור קריאות מערכת •משמש לתאימות בין מערכות ויכולת העברת קוד •

ממערכת למערכת•VxWorks:תומכת בתקן זה עבור

• asynchronous I/O• Semaphores, message queues• memory management• queued signals• Scheduling, clocks and timers

Page 12: Real Time Systems

I/O SystemI/O System

תמיכה בהתקנים רבים דרך פונקציות •()open(), close(), readסטנדרטיות כגון :

ANSI-C (printf, scanf)תמיכה ב- •

fopen, fclose, ק/פ באמצעות חוצצים ע"י: •fread, fwrite, putc, getc

תמיכה בתקשורת טורית, התקני ק/פ מכניים•

תמיכה בהתקנים רבים דרך פונקציות •()open(), close(), readסטנדרטיות כגון :

ANSI-C (printf, scanf)תמיכה ב- •

,fopen, fcloseק/פ באמצעות חוצצים ע"י: •fread, fwrite, putc, getc

תמיכה בתקשורת טורית, התקני ק/פ מכניים•

Page 13: Real Time Systems

File SystemsFile Systems

, הכוללת DOSתמיכה במערכת הקבצים של •ארגון היררכי, יכולת חלוקת קובץ למספר

.case senחלקים, ויכולת לעבוד במצב של (ללא היררכיה)rt11fsתמיכה ב- • – הדיסק מוגדר כקובץ אחד rawfsתמיכה ב- •

גדול. ביצועים טובים יותריכולת עבודה עם מספר מערכות קבצים בו זמנית•

, הכוללת DOSתמיכה במערכת הקבצים של •ארגון היררכי, יכולת חלוקת קובץ למספר

.case senחלקים, ויכולת לעבוד במצב של (ללא היררכיה)rt11fsתמיכה ב- • – הדיסק מוגדר כקובץ אחד rawfsתמיכה ב- •

גדול. ביצועים טובים יותריכולת עבודה עם מספר מערכות קבצים בו זמנית•

Page 14: Real Time Systems

Network SupportNetwork Support

hostתקשורת קלה ומהירה עם מחשב ה- •מאפשרת פיתוח התוכנה עליו, איתור שגיאות

RTמרוחק ושימוש ברכיבי תוכנה שאינם hostוממוקמים ב-

TCP/IPתמיכה ב- •

שימוש במשאבים מרוחקים•

hostיכולת איתחול דינאמי של המערכת מה- •

hostתקשורת קלה ומהירה עם מחשב ה- •מאפשרת פיתוח התוכנה עליו, איתור שגיאות

RTמרוחק ושימוש ברכיבי תוכנה שאינם hostוממוקמים ב-

TCP/IPתמיכה ב- •

שימוש במשאבים מרוחקים•

hostיכולת איתחול דינאמי של המערכת מה- •

Page 15: Real Time Systems

TasksTasks

רצים כיחידות עצמאיות עם VxWorksתהליכים ב- •אוגרים נפרדים ומשאבים נפרדים

לכל תהליך יש עדיפות, באמצעות העדיפות נקבע זמן •הריצה של התהליך

כל התהליכים משתפים את אותו מרחב זיכרון• מצבים:4לתהליך יש •

– readyמוכן לריצה – –delayedמושהה – –suspendedחסום – –pendedממתין למשאב –

יורץreadyהתהליך בעדיפות הגבוהה ביותר במצב •

רצים כיחידות עצמאיות עם VxWorksתהליכים ב- •אוגרים נפרדים ומשאבים נפרדים

לכל תהליך יש עדיפות, באמצעות העדיפות נקבע זמן •הריצה של התהליך

כל התהליכים משתפים את אותו מרחב זיכרון• מצבים:4לתהליך יש •

– readyמוכן לריצה – –delayedמושהה – –suspendedחסום – –pendedממתין למשאב –

יורץreadyהתהליך בעדיפות הגבוהה ביותר במצב •

Page 16: Real Time Systems
Page 17: Real Time Systems

שליטה על תהליכיםשליטה על תהליכים

יש אפשרות לשנות את אופן VxWorksב- •החלפת התהליכים:

•kernelTimeSlice שינוי – ()Round-Robin

•taskPrioritySetשינוי עדיפות תהליך – ()

•taskLockנעילת תהליך – ()

•taskUnlockשחרור תהליך – ()

יש אפשרות לשנות את אופן VxWorksב- •החלפת התהליכים:

•kernelTimeSlice שינוי – ()Round-Robin

•taskPrioritySetשינוי עדיפות תהליך – ()

•taskLockנעילת תהליך – ()

•taskUnlockשחרור תהליך – ()

Page 18: Real Time Systems

Preemptive MultitaskingPreemptive Multitasking

בשיטה זו התהליך בעדיפות הגבוהה ביותר • ירוץ עד שיכנס תהליך בעדיפות readyבמצב

גבוהה יותר או עד שיסתיים רמות של עדיפות 256 יש VxWorksב- •

– העדיפות הגבוהה ביותר0– – העדיפות הנמוכה ביותר255–

תהליך מקבל עדיפות כאשר נוצר אולם ניתן •לשנות עדיפות זו בזמן הריצה

בשיטה זו התהליך בעדיפות הגבוהה ביותר • ירוץ עד שיכנס תהליך בעדיפות readyבמצב

גבוהה יותר או עד שיסתיים רמות של עדיפות 256 יש VxWorksב- •

– העדיפות הגבוהה ביותר0– – העדיפות הנמוכה ביותר255–

תהליך מקבל עדיפות כאשר נוצר אולם ניתן •לשנות עדיפות זו בזמן הריצה

Page 19: Real Time Systems

Round-Robin SchedulingRound-Robin Scheduling

היא שאם יש preemptive multitaskingהבעיה של •מספר תהליכים בעלי עדיפות זהה רק אחד מהם ירוץ

מחלקים את הזמן לפרוסות וכל round-robinבשיטת •תהליך מקבל פרוסת זמן

החלוקה היא תמיד בין התהליכים בעדיפות הגבוהה •ביותר

) מאפשרת שינוי מרווח )kernelTimeSliceהפונקציה •הזמן בין כל שתי החלפות

היא שאם יש preemptive multitaskingהבעיה של •מספר תהליכים בעלי עדיפות זהה רק אחד מהם ירוץ

מחלקים את הזמן לפרוסות וכל round-robinבשיטת •תהליך מקבל פרוסת זמן

החלוקה היא תמיד בין התהליכים בעדיפות הגבוהה •ביותר

) מאפשרת שינוי מרווח )kernelTimeSliceהפונקציה •הזמן בין כל שתי החלפות

Page 20: Real Time Systems

יצירת תהליכיםיצירת תהליכים

•taskSpawn – )(יצירה ואתחול של תהליך•taskInit – )( יצירת תהליך במצבsuspend•taskActivate )(אתחול תהליך –דוגמא:•

• ,id=taskSpawn(name, priority, options ;(stacksize, func_add,arg1,…,arg10

שם התהליך חייב להיות ייחודי (ניתן לרשום •מחרוזת ריקה ואז השם ינתן ע"י המערכת

•taskSpawn – )(יצירה ואתחול של תהליך•taskInit – )( יצירת תהליך במצבsuspend•taskActivate )(אתחול תהליך –דוגמא:•

• id=taskSpawn(name, priority, options, stacksize, func_add,arg1,…,arg10);

שם התהליך חייב להיות ייחודי (ניתן לרשום •מחרוזת ריקה ואז השם ינתן ע"י המערכת

Page 21: Real Time Systems

פונקציותפונקציות

•taskName )( מחזירה את שם התהליך לפי –id•taskNameToId )( – מחזירה את ה –id לפי

השם•taskIdSelf )( מחזירה את המזהה של התהליך –

הנוכחי•taskIdVerify )( מחזירה האם קיים תהליך –

מסויים( לפי מזהה)

•taskName )( מחזירה את שם התהליך לפי –id•taskNameToId )( – מחזירה את ה –id לפי

השם•taskIdSelf )( מחזירה את המזהה של התהליך –

הנוכחי•taskIdVerify )( מחזירה האם קיים תהליך –

מסויים( לפי מזהה)

Page 22: Real Time Systems

דוגמאדוגמא

• tid = taskSpawn ("tMyTask", 90, VX_FP_TASK, 20000, myFunc, 2387, 0, 0, 0, 0, 0, 0, 0, 0, 0);

מציין שהתהליך VX_FP_TASKהמאפיין •יעשה שימוש במספרים ממשיים

• ,tid = taskSpawn ("tMyTask", 90 ,VX_FP_TASK, 20000, myFunc;(0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,2387

מציין שהתהליך VX_FP_TASKהמאפיין •יעשה שימוש במספרים ממשיים

Page 23: Real Time Systems

#include "vxworks.h"#include "stdio.h"#include "taskLib.h"

int taskOne)void({

for)int i=0;i<10;i++({printf)"task 1\n"(;taskDelay)50(;

}return 0;}

int taskTwo)void({

for)int i=0;i<10;i++({printf)"task 2\n"(;taskDelay)50(;

}return 0;}

#include "vxworks.h"#include "stdio.h"#include "taskLib.h"

int taskOne)void({

for)int i=0;i<10;i++({printf)"task 1\n"(;taskDelay)50(;

}return 0;}

int taskTwo)void({

for)int i=0;i<10;i++({printf)"task 2\n"(;taskDelay)50(;

}return 0;}

Page 24: Real Time Systems

פונקצית ההפעלהפונקצית ההפעלה

void start(void)

{

taskSpawn("task1",100,0,1000,taskOne,0,0,0,0,0,0,0,0,0,0);

taskSpawn("task2",100,0,1000,taskTwo,0,0,0,0,0,0,0,0,0,0);

}

void start(void)

{

taskSpawn("task1",100,0,1000,taskOne,0,0,0,0,0,0,0,0,0,0);

taskSpawn("task2",100,0,1000,taskTwo,0,0,0,0,0,0,0,0,0,0);

}

Page 25: Real Time Systems

Task InformationTask Information

•taskIdListGet )( מאתחלת מערך בכל מספרי –התהליכים הפעילים

•taskPriorityGet )(מחזירה את העדיפות –•taskRegsGet )( מחזירה את הרגיסטרים של –

התהליך•taskRegsSet )(קובעת את הרגיסטרים –•taskIsSuspended)(•taskIsReady)(

•taskIdListGet )( מאתחלת מערך בכל מספרי –התהליכים הפעילים

•taskPriorityGet )(מחזירה את העדיפות –•taskRegsGet )( מחזירה את הרגיסטרים של –

התהליך•taskRegsSet )(קובעת את הרגיסטרים –•taskIsSuspended)(•taskIsReady)(

Page 26: Real Time Systems

Task-DeletionTask-Deletion

•exit )(סיום התהליך הנוכחי –

•taskDelete )(סיום תהליך לפי מזהה –

•taskSafe )(הגנה על תהליך שלא יסגר –

•taskUnsafe )(שחרור ההגנה –

זיכרון דינאמי אינו משתחרר אוטומטית כאשר •התהליך נסגר

•exit )(סיום התהליך הנוכחי –

•taskDelete )(סיום תהליך לפי מזהה –

•taskSafe )(הגנה על תהליך שלא יסגר –

•taskUnsafe )(שחרור ההגנה –

זיכרון דינאמי אינו משתחרר אוטומטית כאשר •התהליך נסגר

Page 27: Real Time Systems

הגנה על תהליךהגנה על תהליך

taskSafe ();semTake (semId, WAIT_FOREVER);

/* Block until semaphore available */.. critical region.semGive (semId); /* Release semaphore */taskUnsafe ();

אסור לסגור תהליך שמחזיק משאב

;() taskSafe ;semTake (semId, WAIT_FOREVER)

/* Block until semaphore available */. .critical region./* semGive (semId); /* Release semaphore;() taskUnsafe

אסור לסגור תהליך שמחזיק משאב

Page 28: Real Time Systems

Task ControlTask Control

• taskSuspend()

• taskResume()

• taskRestart()

• taskDelay()

• nonosleep()

delayשימוש ב-•

• taskDelay(sysClkRateGet()/2); //500ms

• taskSuspend()

• taskResume()

• taskRestart()

• taskDelay()

• nonosleep()

delayשימוש ב-•

• taskDelay(sysClkRateGet()/2); //500ms

Page 29: Real Time Systems

SemaphoresSemaphores

אובייקטים המשמשים לחסימה/שחרור •תהליכים לצורך סינכרון ותקשורת

סוגים:3•

• binary

• counting

• mutex

אובייקטים המשמשים לחסימה/שחרור •תהליכים לצורך סינכרון ותקשורת

סוגים:3•

• binary

• counting

• mutex

Page 30: Real Time Systems

Binary SemaphoresBinary Semaphores

תהליך שרוצה להמתין לארוע משתמש •באובייקט זה.

התהליך יחסם עד שיתקבל הארוע•

()semBCreateיצירה: •

()semTakeהמתנה: •

()semGiveשחרור: •

תהליך שרוצה להמתין לארוע משתמש •באובייקט זה.

התהליך יחסם עד שיתקבל הארוע•

()semBCreateיצירה: •

()semTakeהמתנה: •

()semGiveשחרור: •

Page 31: Real Time Systems

Counting SemaphoresCounting Semaphores

•Binary semaphoreמשמש לקבלת ארוע יחיד

כאשר רוצים לדעת גם כמה ארועים התקבלו •משתמשים באובייקט זה

()semCCreateיצירה: •

•Binary semaphoreמשמש לקבלת ארוע יחיד

כאשר רוצים לדעת גם כמה ארועים התקבלו •משתמשים באובייקט זה

()semCCreateיצירה: •

Page 32: Real Time Systems

MutexMutex

משמש לשיתוף משאבים (חומרה, קבצים וכו') •בין תהליכים

()semMCreateיצירה: •

()semDelete מכל סוג: semמחיקת •

משמש לשיתוף משאבים (חומרה, קבצים וכו') •בין תהליכים

()semMCreateיצירה: •

()semDelete מכל סוג: semמחיקת •

Page 33: Real Time Systems

Message QueuesMessage Queues

להעברת הודעות בין תהליכיםFIFOחוצץ •

תהליך שמנסה לקרוא מחוצץ ריק או לכתוב •)timeoutלחוצץ מלא ייחסם (ניתן לקבוע

()msgQCreateיצירה: •

()msgQSendשליחת הודעה: •

()msgQReceiveקבלת הודעה: •

()msgQDeleteמחיקה: •

להעברת הודעות בין תהליכיםFIFOחוצץ •

תהליך שמנסה לקרוא מחוצץ ריק או לכתוב •)timeoutלחוצץ מלא ייחסם (ניתן לקבוע

()msgQCreateיצירה: •

()msgQSendשליחת הודעה: •

()msgQReceiveקבלת הודעה: •

()msgQDeleteמחיקה: •

Page 34: Real Time Systems

WatchdogsWatchdogs

משמשים לתזמון פעולות. הפעלת פונקציה •אחרי זמן מסויים

;()wd=wdCreate

;wdStart(wd,sysClkRateGet()*3,funcPtr,arg)

()wdCancelביטול: •

()wdDeleteמחיקה: •

משמשים לתזמון פעולות. הפעלת פונקציה •אחרי זמן מסויים

wd=wdCreate();

wdStart(wd,sysClkRateGet()*3,funcPtr,arg);

()wdCancelביטול: •

()wdDeleteמחיקה: •

Page 35: Real Time Systems

Deadline-Miss DetectionDeadline-Miss Detection

בדיקה שקטע קוד מתבצע בזמן נתון אחרת טיפול •בשגיאה

;()wd=wdCreate

;wdStart(wd,deadline,panic,arg)

;()doWork

;wdCancel(wd)

:

{..…}(…)void panic

בדיקה שקטע קוד מתבצע בזמן נתון אחרת טיפול •בשגיאה

wd=wdCreate();

wdStart(wd,deadline,panic,arg);

doWork();

wdCancel(wd);

:

void panic(…){…..}

Page 36: Real Time Systems

SignalsSignals

שליחת ארוע אסינכרוני לתהליך אחר•exceptionsטיפול ב- •אם בתהליך מסויים התרחשה שגיאה ונקבעה •

פונקצית טיפול היא תופעל, אחרת התהליך יחסם

פונקצית הטיפול יכולה לאתחל את התהליך או •()setjmpלחזור לנקודה מסויימת שנקבעה ע"י

()longjmpחזרה לנקודה שנקבעה: •

שליחת ארוע אסינכרוני לתהליך אחר•exceptionsטיפול ב- •אם בתהליך מסויים התרחשה שגיאה ונקבעה •

פונקצית טיפול היא תופעל, אחרת התהליך יחסם

פונקצית הטיפול יכולה לאתחל את התהליך או •()setjmpלחזור לנקודה מסויימת שנקבעה ע"י

()longjmpחזרה לנקודה שנקבעה: •