just enough information to program a blackfin

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

Upload: malini

Post on 06-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Just enough information to program a Blackfin

Just enough information to program a Blackfin

Familiarization assignment for the Analog Devices’ VisualDSP++Integrated Development Environment

Page 2: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

2 / 27

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

Page 3: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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

Page 4: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

4 / 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) 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)

Page 5: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

5 / 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

Page 6: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

6 / 27

Analog Devices CONFIGURATOR

Page 7: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

7 / 27

Run VisualDSP – Add New Project

Page 8: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

8 / 27

WRITE main.cpp, ADD to Project

Page 9: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

9 / 27

Then BUILD (which causes a LOAD)

Build and load

Page 10: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

10 / 27

Then Debug | Run the code

Page 11: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

11 / 27

Prepare for Assignment – C++ result

Page 12: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

12 / 27

C++ Version of assignment

Page 13: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

13 / 27

Assignment talks about “auto-increment”. Here is how to “try” to get compiler to do it

Page 14: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

14 / 27

Prepare main( ) to call assembly codeand CHECK the results

Page 15: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

15 / 27

We thought we needed the function Assignment1_ASMversion( )

However the linker is worried about not finding _Assignment1_ASMversion__Fv

Build WITHOUT ADDING assembly code fileError message is VERY SPECIAL

Page 16: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

16 / 27

Standard Format“Assembly code” stub

Header info

Prologue

Code toreturn value

Epilogue

Page 17: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

17 / 27

Result using “Assembly code” stub

Exactly the result we expected

Page 18: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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

Page 19: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

19 / 27

Keyword – P0 – 32-bit pointer Register

32 bit pointer register -- P0, P1, P2, P3, P4

Page 20: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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

Page 21: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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

Page 22: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

22 / 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)

Page 23: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

23 / 27

Keyword – Memory operations

8 bit memory reads are also possible B[FP + 4];

Page 24: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

24 / 27

Perhaps time for a working example

Page 25: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

25 / 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 P0, P1, P2, P3, P4

NO 16 bit Pointer registers 32 bit Frame Pointer -- FP 32 bit Stack Pointer -- SP

Page 26: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

26 / 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)

Page 27: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

27 / 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)

Page 28: Just enough information to program a Blackfin

M. Smith -- ENCM415 Assembly Language and Interfacing on the Blackfin ADSP-BF533 microcontroller

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