Title: Just enough information to program a Blackfin
1Just 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 VisualDSPIntegrated Development
Environment
2- Reminder Tutorial tomorrow -- Thursday
- This will help to get ahead on the assignments
3Tackled 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 Windows 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.
4VisualDSP 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)
5Just 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 - Dont forget to add some tests so that you know
the code is working
6Analog Devices CONFIGURATOR
7Run VisualDSP Add New Project
8WRITE main.cpp, ADD to Project
9Then BUILD (which causes a LOAD)
10Then Debug Run the code
11Prepare for Assignment C result
12C Version of assignment
13Assignment talks about auto-increment. Here is
how to try to get compiler to do it
14Prepare main( ) to call assembly codeand CHECK
the results
15Build 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
16Standard FormatAssembly code stub
- Header info
- Prologue
- Code toreturn value
- Epilogue
17Result using Assembly code stub
Exactly the result we expected
18Keyword R0 32-bit Data Register
Assembly code comment
- R0 7 // This returns value 7
End of line marker
32 bit data register -- R0, R1, R2, R3, R4, R5,
R6, R7
19Keyword 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.
20Keyword 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
21Keyword 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
22Keyword Memory operations
16 bit memory read W word access
R1.H WFP 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)
23Keyword Memory operations
8 bit memory reads are also possible BFP
4
24- Perhaps time for a working example
25Programmers 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
26Memory 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)
27Memory access MUST be done via a Pointer register
- 16-bit Memory access
- Place value 0x4000 into register P2 THEN
- R0 WP2 accesses (reads) the 16-bit value at
0x4000 and leaves P2 unchanged (P2 still equals
0x4000) - R0 WP2 4 accesses (reads) the 16-bit value
at 0x4004 and leaves P2 unchanged (P2 still
equals 0x4000) - R0 WP2 accesses (reads) the 16-bit value at
0x4000 and autoincrements P2 by the size of a
word (2 bytes) (P2 NOW equals 0x2002)
28Just 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 - Dont forget to add some tests so that you know
the code is working