VDK Module Outline What is the VDK Why

  • Slides: 16
Download presentation
VDK Module Outline • What is the VDK? • Why Do We Need a

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

What is the VDK? • The Visual DSP Kernel is a pre-emptive kernel designed to run efficiently on Analog Devices family processors • Included with Visual. DSP++ 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

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

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

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

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

Threads • Thread types defined at project creation • Each thread has a unique Thread. ID • Each thread has its own stack – Programmers responsibility not to overflow • The size of heap for 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

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

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

Messages • Inter-thread communication – Transfer information between threads • i. e. ) Thread A sends some data for processing to Thread B • Application views single and multiprocessor systems the same Copyright © Avnet, Inc. , Analog Devices, Inc. All rights reserved.

Interrupts • Execute using hardware priorities – Spend as little time as necessary and

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

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 – Sync. Read – Sync. Write – IOCtl Copyright © Avnet, Inc. , Analog Devices, Inc. All rights reserved.

Creating a Project using VDK • VDK support is added from the project wizard

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 System Control Thread Blackfin Threads Configuration Copyright © Avnet, Inc. ,

The System Node System Control Thread Blackfin Threads Configuration Copyright © Avnet, Inc. , Analog Devices, Inc. All rights reserved.

Debug Assistance • Integrated in to Visual DSP++ • VDK Status window – State

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

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 Copyright © Avnet, Inc. , Analog Devices, Inc. All rights reserved.