An operating system designed for use in real-time systems, which is - - PowerPoint PPT Presentation

an operating system designed for use in real time systems
SMART_READER_LITE
LIVE PREVIEW

An operating system designed for use in real-time systems, which is - - PowerPoint PPT Presentation

An operating system designed for use in real-time systems, which is Any computer system, embedded or otherwise, that has timeliness requirements. HIT BRAKES!!! Antivirus scanning Print spool emptying Email coming in


slide-1
SLIDE 1
slide-2
SLIDE 2

 An operating system designed for use

in real-time systems, which is…

 Any computer system, embedded or

  • therwise, that has timeliness

requirements.

slide-3
SLIDE 3
  • HIT BRAKES!!!
  • Antivirus scanning
  • Print spool emptying
  • Email coming in
  • Start brake function
slide-4
SLIDE 4
  • HIT BRAKES!!!
  • Start brake function
slide-5
SLIDE 5

A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function.

slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8

Print driver Serial port User Interface Motor controller Light sensor Timer Interrupt

slide-9
SLIDE 9

 It is NOT an RTOS  It is a tool that creates an RTOS (ASOS)  One that requires no RTOS knowledge  One that is optimized for your project  One that is secure  It is NOT an RTOS

slide-10
SLIDE 10

SYNTHESIZE RTOS

source code source code + primitives

Configuration file

slide-11
SLIDE 11

TASK5 TASK4 TASK3 TASK2 TASK1 RTOS kernel TASK5 TASK4 TASK3 TASK2 TASK1 RTOS kernel KEY: Task management code User code

slide-12
SLIDE 12

System Initialization Loop Task 1 Library 2 Library 1 Library N ISR 1 ISR 2 ISR N System Hardware and Sensors ASOS System Management (SynthOS Generated)

Init Task 1 Init Task 2 Init Task N

Loop Task 1 Loop Task 1

Call Task 1 Call Task 1 Call Task 1

slide-13
SLIDE 13

 Init Task

  • Runs once when system is initialized

 Loop Task

  • Run by the RTOS at regular intervals

 Call Task

  • Run by another task
slide-14
SLIDE 14

 SynthOS_call()  SynthOS_check()  SynthOS_sleep()  SynthOS_start()  SynthOS_wait()

slide-15
SLIDE 15

Used to begin execution of another task while suspending execution of the current task until the called task has completed.

slide-16
SLIDE 16

Checks whether a task is currently executing.

slide-17
SLIDE 17

Gives control back to the RTOS to resume execution at a later time as determined by the RTOS.

slide-18
SLIDE 18

Used to begin execution of another task without suspending execution of the current task.

slide-19
SLIDE 19

Suspends execution of the current task and waits for another task to finish executing.

slide-20
SLIDE 20

Suspends execution of the current task and waits for a condition to be true. The condition can be any legal C condition such as (x == i*j + 5).

slide-21
SLIDE 21

# SynthOS Project File [tool] version = 1.00 # This is the start of the project section. [project] project_name = Project X target = 68HC05 processor_size = 32 language = C scheduler = round_robin contact = Vladimir Nabokov company = PaleFire Corporation website = www.palefire.com email = vlad@palefire.com # Description of the project description = Mobile Phone Prototype # The compiler directives compiler_directives = $explicit \ $base10 \ $xyz # The source code files [source] file = ConfirmDialog.c file = AboutDialog.c file = ../BigTask.c file = F:/SynthOS/Dev/SmallTask.c # The library object files [lib] file = iolib.o file = ../lib/mathlib.o file = C:/Zeidman/libraries/TCPIP.o

slide-22
SLIDE 22
slide-23
SLIDE 23

// This is code in file "hello.c" // Do not have to declare extern for sync // because SynthOS does it for you //extern int sync_variable; void helloTask() { while (1) { printf("Hello task, "); //SynthOS_sleep(); // You can use sleep // to release the CPU // use SynthOS_wait for synchronization // with other tasks and ISR SynthOS_wait(sync_variable < 3); } }

slide-24
SLIDE 24

// This is code in file "world.c" int sync_variable; void worldTask() { while (1) { sync_variable = 3; printf(" World Task\n"); // Call the synchronizaion task // SynthOS_call forces task context switch SynthOS_call(syncTask(sync_variable)); } }

slide-25
SLIDE 25

// This is code in file "world.c" void syncTask(int cnt_limit) { int count; printf("sync task: "); for(count = 0; count < cnt_limit; count++) { printf("waiting %d... ", count); } sync_variable = 0; }

slide-26
SLIDE 26

[source] file = hello.c file = world.c [task] entry = helloTask period = 1 type = loop [task] entry = worldTask period = 1 type = loop [task] entry = syncTask type = call

slide-27
SLIDE 27

 Synthesize  Compile  Run

slide-28
SLIDE 28

 Altera NIOS 32-bit Soft processor  Cyclone EP1C20 FPGA  Took the Altera web server code  Added functionality  Turned single task into multitask system  Kernel size: ~ 3K bytes

slide-29
SLIDE 29

 Xilinx Vertex-II Pro FPGA  Xilinx MicroBlaze 32-bit soft processor  PowerPC 32-bit hard processor  MicroBlaze kernel size < 0.9 Kbytes  PowerPC kernel size ~ 2.3 Kbytes  Development time ~ 3 days

slide-30
SLIDE 30

 Total RAM = 26K  Lego RTOS = 22K  BrickOS = 11K  SynthOS = 2K

slide-31
SLIDE 31

 Self directed robot  Arduino Uno (Atmel ATmega328p)

  • 32K flash
  • 2K RAM
  • 16Mhz clock

 Resources used

  • 13K flash
  • less than 1k RAM
slide-32
SLIDE 32
slide-33
SLIDE 33

 Time to Market  Security  Cost of goods sold  Development costs  Power consumption  Portability

slide-34
SLIDE 34

Bob Zeidman VP Product Management bob@zeidman.biz www.zeidman.biz Try it out completely free at www.SynthOSonline.com