support across the board ™ visual dsp kernel (vdk)

16
Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved. VDK Module Outline •What is the VDK? •Why Do We Need a Kernel? •VDK Concepts and Features •How to Create a Project with VDK support •Debug Capabilities •Summary/Conclusion

Upload: ashley-chandler

Post on 13-Dec-2015

223 views

Category:

Documents


1 download

TRANSCRIPT

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

VDK Module Outline

• What is the VDK? • Why Do We Need a Kernel?• VDK Concepts and Features• How to Create a Project with VDK support• Debug Capabilities• Summary/Conclusion

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

What is the VDK?

• The Visual DSP Kernel is a pre-emptive kernel designed to run efficiently on Analog Devices family processors

• Included with VisualDSP++ development tools

• No NRE or royalties associated with VDK

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Why do we need a kernel?

• A simple application that does only one task may not need a kernel– i.e.) Blind processing of a super loop

• If you have more than one task, an application could be structured in a couple of ways

– Respond to an event• Events change execution state

– Assign tasks a given priority and execute high priority tasks more often

• These approaches get difficult when– You need to preserve the state of a task– Low priority tasks may steal processing time longer than anticipated

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

What does a kernel give you?

• Automatic preservation of task/system state

• Assign a scheduling method to tasks

• Provides synchronization abilities

• Frees architect from having to design ‘control code’

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

VDK Domain Concepts

• Application code executes in one of two domains– 1 Thread Domain

– 2 Interrupt Domain

• Applications and algorithms execute in the thread domain under control of the VDK Kernel

• Interrupts execute outside this domain and priority is implemented in hardware– Thread execution is halted while in the interrupt domain

• Device drivers are a bridge between the two domains

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

More VDK Concepts

• Threads– A segment of code and it’s related variables/data– Each thread has its own stack and executes in supervisor mode

• Interrupts– Priority based in hardware

• Strongly recommend writing in assembly but C/C++ is supported

• Signals– Semaphores, Events, Device Flags, and Messages– Used to synchronize activity

• Device Drivers– Threads do not communicate with hardware directly– Hide the details of the hardware

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Threads

• Thread types defined at project creation

• Each thread has a unique ThreadID

• Each thread has its own stack –Programmers responsibility not to overflow

• The heap for the stack and thread data can be specified

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Semaphores

• Signals are used to synchronize thread activity– A semaphore is a token that threads can post or acquire

– i.e.) relay race – second runner can not run until it has the baton

• Semaphores can be periodic– allows given tasks to be scheduled on a fixed interval

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Events and Event Bits

• Events are used to synchronize thread activity to the system–Used to convey various system states to

threads

• Similar to semaphores but can convey several combined system states at once

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Messages

• Inter-thread communication–Transfer information between threads

• i.e.) Thread A sends some data for processing to Thread B

• Application views single and multi- processor systems the same

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Interrupts

• Execute using hardware priorities–Spend as little time as necessary and only do the

minimal processing required in ISR

• Any registers used by an ISR must be saved and restored

• ISRs can be written in assembly, C or C++–C/C++ not recommended but included for

flexibility

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Device Drivers

• Device drivers bridge the gap between the thread and interrupt domains– How threads communicate with hardware– Provides a black box view to the application

• A device driver is a single function with multiple entry points– Initialization– Activation– Open– Close– SyncRead– SyncWrite– IOCtl

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Creating a Project using VDK

• VDK support is added from the project wizard in Visual DSP++

• Visual DSP++ creates all the necessary project files and skeleton code

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

The System Node

Blackfin Threads

System Control

Thread Configuration

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

Debug Assistance

• Integrated in to Visual DSP++

• VDK Status window – State of each object, active thread, resource management, etc

• VDK History window– Graphical display of system events– Useful when used with Trigger points

Copyright © Avnet, Inc., Analog Devices, Inc. All rights reserved.

VDK Summary

• Provides a comprehensive set of services reducing the need to create your own control code

• Allows for rapid prototype of system

• Easy to move applications/algorithms across ADI processor families

• Well integrated with the IDDE for efficient editing and debug