Blackfin Familiarization Assignment for Analog Devices VisualDSP++ IDE
280 likes | 407 Vues
Attend the lab on Thursday in ICT320 and ICT318 to learn about Blackfin assembly language and interfacing using the Analog Devices VisualDSP++ Integrated Development Environment. Lab Section 1 will facilitate partner selection and equipment testing to get ahead on assignments. This session will cover the basics of building a Blackfin project, coding in C++, and compiling in VisualDSP++. Make sure to prepare by activating configurator settings for the BF533 session and adding the necessary files. Let's collaborate and enhance our understanding of the BF533 microcontroller!
Blackfin Familiarization Assignment for Analog Devices VisualDSP++ IDE
E N D
Presentation Transcript
Just enough information to program a Blackfin Familiarization assignment for the Analog Devices’ VisualDSP++Integrated Development Environment
Reminder – Tutorial tomorrow -- Thursday • Lab. Section 1 will meet in ICT320 and 318 to choose lab. partners and test equipment • This will help to get ahead on the assignments • Am looking for about 6 people to switch lab. sections to balance lab. sizesSEE ME BEFORE SWITCHING M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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. M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
VisualDSP++ IDE Analog Devices’ integrated development environment (IDE) has been used in the following courses • Blackfin – ADSP-BF533 • ENCM415 – Assembly language and interfacing (2004) • ENCM491 – Real Time Systems (2003) • ENEL619.23 -- High speed embedded system architectures (2004) • TigerSHARC – ADSP-TS201 • ENCM515 – Comparative Processor Architectures for DSP (Since 1999) • ENEL619.23 -- High speed embedded system architectures (2004) M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Analog Devices CONFIGURATOR M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Run VisualDSP – Add New Project M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
WRITE main.cpp, ADD to Project M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Then BUILD (which causes a LOAD) Build and load M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Then Debug | Run the code M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Prepare for Assignment – C++ result M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
C++ Version of assignment M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Assignment talks about “auto-increment”. Here is how to “try” to get compiler to do it M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Prepare main( ) to call assembly codeand CHECK the results M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Build WITHOUT ADDING assembly code fileError message is VERY SPECIAL We thought we needed the function Assignment1_ASMversion( ) However the linker is worried about not finding _Assignment1_ASMversion__Fv M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Standard Format“Assembly code” stub Header info Prologue Code toreturn value Epilogue M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Result using “Assembly code” stub Exactly the result we expected M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Keyword – P0 – 32-bit pointer Register 32 bit pointer register -- P0, P1, P2, P3, P4 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Keyword 32-bit Frame pointer As on many processors LINK and UNLINK instructions involve hidden operations on FP and SP (stack pointer) More on that in a later class 32 bit Frame pointer -- FP M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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) M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Keyword – Memory operations 8 bit memory reads are also possible B[FP + 4]; M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
Perhaps time for a working example M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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 • P0, P1, P2, P3, P4 • NO 16 bit Pointer registers • 32 bit Frame Pointer -- FP • 32 bit Stack Pointer -- SP M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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) M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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) M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller
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 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller