1 / 28

Just enough information to program a Blackfin

Just enough information to program a Blackfin. 90% of this course can be done knowing less than 10% of the Blackfin Instructions Familiarization assignment for the Analog Devices’ VisualDSP++ Integrated Development Environment. Reminder – Tutorial tomorrow -- Thursday

Download Presentation

Just enough information to program a Blackfin

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Just enough information to program a Blackfin 90% of this course can be done knowing less than 10% of the Blackfin Instructions Familiarization assignment for the Analog Devices’ VisualDSP++Integrated Development Environment

  2. Reminder – Tutorial tomorrow -- Thursday • This will help to get ahead on the assignments M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

  3. 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

  4. VisualDSP++ IDE Analog Devices’ integrated development environment (IDE) has been used in the following courses • Blackfin – ADSP-BF533 • ENCM415 – Assembly language and interfacing (2004) • ENCM417 – Switching to Blackfin for 2007 • ENCM491 – Real Time Systems (2003) • ENEL619.23 -- High speed embedded system architectures (2004) • ENEL583/589 – Many 4th year team projects (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

  5. 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 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 M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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

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

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

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

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

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

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

  13. 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

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

  15. 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

  16. 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

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

  18. 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

  19. Keyword – P0 – 32-bit pointer Register 32 bit pointer register -- P0, P1, P2, P3, P4 Final exam question from last year 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. M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

  20. 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

  21. 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

  22. 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

  23. 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

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

  25. 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

  26. 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

  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) M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

  28. 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

More Related