Presentation is loading. Please wait.

Presentation is loading. Please wait.

Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment.

Similar presentations


Presentation on theme: "Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment."— Presentation transcript:

1 Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment

2 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller2 / 27  This will help to get ahead on the assignments

3 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller3 / 27 Tackled today Recipe for Just in time knowledge  Need a dollop of “C++” code  A smizzen of knowledge to build the simplest possible Blackfin assembly language for-loop { } and while { }  A pinch of Window’s Experience  And a bowl to put the ingredients in (a computer account with password) and somebody else to do all the clean-up (a partner) and a desk in Labs ICT318 and 320.

4 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller4 / 27 VisualDSP++ IDE Analog Devices’ integrated development environment (IDE) has been used in the following courses  Blackfin – ADSP-BF533 ENCM415 – Assembly language and interfacing (2004) ENSF413 – Switching to Blackfin for 2008 ENCM491 – Real Time Systems (2003) ENCM511 – New project oriented microcontroller course (2008) ENEL619.23 -- High speed embedded system architectures (2004) ENEL583/589 – Many 4 th year team projects (2004)  TigerSHARC – ADSP-TS201 ENCM515 – Comparative Processor Architectures for DSP (Since 1999) ENEL619.23 -- High speed embedded system architectures (2004)

5 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller5 / 27 Just enough to know  If time today will do a demo.  Build a directory :/ENCM415/Assignment  Remember to insert the BF533 board power plug (check that lights on board flash)  Activate VisualDSP -- Log into a station and use Analog devices CONFIGURATOR to set up a “BF533 session” to connect to the hardware  Use VisualDSP++ and activate a Blackfin BF533 session – lights should pause  Build a Blackfin Project, add to your directory  Add your C++ files to the project  Compile, Link and Run using the equivalent commands as with Microsoft Visual Basic, Visual Studio etc  Add your assembly ASM files to the Blackfin project  Compile, Link and Run using the equivalent commands as with Microsoft Visual Basic, Visual Studio etc  Don’t forget to add some tests so that you know the code is working

6 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller6 / 27 Analog Devices CONFIGURATOR

7 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller7 / 27 Run VisualDSP – Add New Project

8 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller8 / 27 WRITE main.cpp, ADD to Project

9 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller9 / 27 Then BUILD (which causes a LOAD) Build and load

10 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller10 / 27 Then Debug | Run the code

11 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller11 / 27 Prepare for Assignment – C++ result

12 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller12 / 27 C++ Version of an assignment

13 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller13 / 27 “auto-increment” of a pointer. Here is how to “try” to get compiler to do it

14 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller14 / 27 Prepare main( ) to call assembly code and CHECK the results

15 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller15 / 27 We thought we needed to build the function Assignment1_ASMversion( ) However the linker is worried about not finding _Assignment1_ASMversion__Fv Build WITHOUT ADDING assembly code file Error message is VERY SPECIAL

16 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller16 / 27 Standard Format “Assembly code” stub assignment1ASM.asm Header info Prologue Code to return value Epilogue A “stub” provides “just enough code” not to crash the development system. It acts as a “test” for the correct call from “main()”

17 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller17 / 27 Result using “Assembly code” stub Exactly the result we expected

18 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller18 / 27 Keyword – R0 – 32-bit Data Register R0 = 7; // This returns value 7 … Assembly code comment End of line marker 32 bit data register -- R0, R1, R2, R3, R4, R5, R6, R7

19 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller19 / 27 Keyword – P0 – 32-bit pointer Register 32 bit pointer register -- P0, P1, P2, P3, P4 Careful – when not in the assembler, the linker may give errors which mention p0 which stands for processor 0. The blackfin hardware can come in multi-core version (p0 and p1 for BF561) or multi-processor version.

20 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller20 / 27 Keyword 32-bit Frame pointer 32 bit Frame pointer -- FP As on many processors LINK and UNLINK instructions involve hidden operations on FP and SP (stack pointer) More on that in a later class

21 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller21 / 27 Keyword – Memory operations 32 bit memory read [ ] – long-word access R0 = [FP + 4]; If FP contains the value 0x20000000 then fetch the 32-bit value starting at memory location 0x20000004 and place in data register R0

22 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller22 / 27 Keyword – Memory operations 16 bit memory read W[ ] –word access R1.H = W[FP + 28]; If FP contains the value 0x20000000 then fetch the 16-bit value starting at memory location 0x20000028 and place in data register R1.H which is the UPPER part of the register R1 (R1.H and R1.L)

23 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller23 / 27 Keyword – Memory operations 8 bit memory reads are also possible B[FP + 4];

24 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller24 / 27  Perhaps time for a working example

25 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller25 / 27 Programmer’s model  32 bit data register R0, R1, R2, R3, R4, R5, R6, R7  16 bit data register R0.H, R1.H, R2.H, R3.H ……. R7.H R0.L, R1.L, R2.L, R3.L ………. R7.L  32 bit Pointer register (“address”) P0, P1, P2, P3, P4  NO 16 bit Pointer (“address”) registers You need to have 32 pointers to access 16-bit values stored ANYWHERE in the memory  32 bit Frame Pointer -- FP  32 bit Stack Pointer -- SP

26 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller26 / 27 Memory access MUST be done via a Pointer register 32-bit Memory access Place value 0x2000 into register P1 THEN R0 = [P1] accesses (reads) the 32-bit value at 0x2000 and leaves P1 unchanged (P1 still equals 0x2000) R0 = [P1 + 4] accesses (reads) the 32-bit value at 0x2004 and leaves P1 unchanged (P1 still equals 0x2000) R0 = [P1++] accesses (reads) the 32-bit value at 0x2000 and autoincrements P1 by the size of a long word (4 bytes) (P1 NOW equals 0x2004)

27 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller27 / 27 Memory access MUST be done via a Pointer register 16-bit Memory access Place value 0x4000 into register P2 THEN R0 = W[P2] accesses (reads) the 16-bit value at 0x4000 and leaves P2 unchanged (P2 still equals 0x4000) R0 = W[P2 + 4] accesses (reads) the 16-bit value at 0x4004 and leaves P2 unchanged (P2 still equals 0x4000) R0 = W[P2++] accesses (reads) the 16-bit value at 0x4000 and autoincrements P2 by the size of a word (2 bytes) (P2 NOW equals 0x2002)

28 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller28 / 27 Just enough to know  If time today will do a demo.  Build a directory U:/ENCM415/Assignment  Remember to insert the BF533 board power plug (check that lights on board flash)  Activate VisualDSP Log into a station and use Analog devices CONFIGURATOR to set up a “BF533 session” to connect to the hardware  Use VisualDSP++ and activate a Blackfin BF533 session – lights should pause  Build a Blackfin Project, add to your directory  Add your C++ files to the project  Compile, Link and Run using the equivalent commands as with Microsoft Visual Basic, Visual Studio etc  Add your ASM files to the project  Compile, Link and Run using the equivalent commands as with Microsoft Visual Basic, Visual Studio etc  Don’t forget to add some tests so that you know the code is working


Download ppt "Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment."

Similar presentations


Ads by Google