support across the board ™ visual dsp kernel (vdk)
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