blackfin bf533 ez-kit control the o in i/o activating a flash memory “output line” part 3 –...

24
Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Upload: kelly-albert-stephens

Post on 16-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 EZ-KIT Control

The O in I/O

Activating a FLASH memory “output line”Part 3 – New instruction recap Tutorial

Page 2: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 2

Agenda• Processors need to send out control

signals (high / low 1 / 0 true / false)– General purpose input / output GPIO on

processor chip (16)– FLASH memory chip has additional I/O

ports connected to Ez-Lite KIT LED’s

• Making the FLASH memory I/O port control the Ez-KIT LED’s

• The new Blackfin assembly language instructions needed

Page 3: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 3

LEDs connected to FLASH portBACKFORWARDRIGHTLEFT???

CONTROL ON

Might be connected to other things

DON’T CHANGEBEHAVIOUR

Page 4: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 4

Activating LEDs -- REVIEW• Get the FLASH to work correctly– InitFlashASM( )

• Get the Port to work correctly as output for pins PB5 PB0, leaving other pins unchanged– InitFlashPortASM( )

• Write the value we want to LEDs–WriteFlashLEDASM( int value)

• Read back the value the LEDs show– int ReadFlashLEDASM( )

Page 5: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 5

Blackfin Memory Map• If P0 is

0x20001000then

R0 = [P0]; readsa value fromFLASH BANK 0

• If R0 is 6 andP0 is 0x1000 then

[P0] = R0; placesa value intoSDRAM

Page 6: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 6

InitFlashASM( ) -- REVIEW• Get the FLASH to work correctly• May be “many” processes running on the

Blackfin. All these processes may want to use InitFlashASM( )

• InitFlashASM( ) { If FLASH memory already configured

– return without initializing Else { configure Memory Bank control register THEN configure Global control

(turns on the FLASH) } }

Page 7: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 7

Set the Bank control register• Kit documentation recommends

0x7BB0

7 cyclesnot 15

11 not 15

B = 1011

2 cycles

3 cycles

IGNORE

4cycles

Page 8: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 8

Set General Control Register• Documentation says set to “0xF” for

this particular FLASH chip

ENABLE

ALL

Page 9: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 9

Key issues -- REVIEWInitFlashASM( )

• Does not sound too big a deal– Set P0 to point to EBIU_AMBCTLO– Then R0 = 0x7BB07BB0– Then [P0] = R0– Then make sure “write occurs” NOW as this

processor can delay doing writes “until convenient”

• Do the same for the other “32 bit” registers

Page 10: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 10

Obvious problem – value needed EBIU_AMBCTL0 = ?

Code review

2 obviouserrors

Page 11: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 11

Corrected code – still fails

No “=“ in a define statement

No “spaces” in number

Spell check

“0” not “O”

DEFECTS in code process

Pair programming cost

3 * $5

Page 12: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 12

MIPS and Blackfin behave same

• You can’t load a 32-bit register with a 32-bit immediate value using one instruction

• WRONG R0 = 0x7BB07BB0;

• Must load low 16-bit of register R0.L = 0x7BB0;

• Then load high 16-bits of register R0.H = 0x7B00;

• You handle P0 = 0xFFC00A04

Page 13: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 13

More readable code

Selfdocumenting code

I do “define”and then cut-and-pastethe label

Page 14: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 14

WriteFlashLEDASM(long in_value)• Write ‘1’ (on) or ‘0’ (off) to the Port to

activate LEDs connected to pins PB5 PB0, leaving other pins unchanged.

Page 15: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 15

WriteFlashLEDASM(long in_value)– Read “LED data register” into processor data

register (makes a copy)– Keep “top” 2 bits (AND operation) of copy– Keep “bottom” 6 bits of “in-par” 32-bit in_value– OR the two processor data registers – Write “modified copy” back into “LED data

register”

• PROBLEM “byte” read and writes

Page 16: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 16

Now identify the registers to use

• In_par is in R0

• We can use R1, R2 and R3 without saving registers to the stack

Page 17: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 17

Add in the code we understand

Fixed typo

Still anothersyntaxproblem

Page 18: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 18

8 bit and 32 bit writes• [P0] = R0; 32-bit write (4 bytes)– Places all 32-bits of processor data

register into “long word” (32 bit) address starting at memory location P0

– If P0 = 0x1000 – then place “32-bit” value at memory location 0x1000

• B[P0] = R0; 8-bit write– Places “bottom” 8-bits of processor data

register into “byte” (8 bit) address starting at memory location P0

Page 19: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 19

8 bit and 32 bit reads• R0 = [P0]; 32-bit read (4 bytes)– Places all 32-bits of “long word” (32 bit)

address starting at memory location P0 into processor data register

– If P0 = 0x1000 – then place “32-bit” value at memory location 0x1000

• R0 = B[P0] (Z); 8-bit read– Places “byte” (8 bit) address starting at

memory location P0 into “bottom” 8-bits of processor data register and puts “0” into the “top” 24 bits of register

–Must convert “8-bit” read operation into a “32” bit “store in register” operation

Page 20: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 20

Add byte read and write operations

Is this correct for keeping top 2 bits of an 8-bit value?

“DEFECT” if not corrected

Still syntaxproblems ”ERRORS”

Fix as exercise

Page 21: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 21

InitFlashPortASM() to complete• Set direction to 1 on lower pins leaving other

direction values unchanged – around 12 lines Read “direction” byte register into processor data register (makes a copy)– Set another processor data register to 0x3F– OR the two data registers (HOW?)– Write “modified copy” back into “direction byte

register”

Page 22: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 22

InitFlashASM( ) -- Exercise

• InitFlashASM( ) { If FLASH memory already configured

– return without initializing Else { configure Memory Bank control register THEN configure Global control

(turns on the FLASH) } } -- 21 instructions

– many cut-and-paste-modify

IF CLOCK ACTIVATED THEN ASSUME ANOTHER PROCESS HAS ALREADY SET THE FLASH

“AND” on BIT 0 of EBIU_AMGCTL register followed by “IF” set then JUMP

Page 23: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 23

• Work in pairs for the solutions

• These exercises will form part of take-home quiz 1

• IF-THEN-ELSE SYNTAX Do bits 7 to 4 of register R0 contain 12??? R0 = ????; R1 = 0x000000F0; // MASK R2 = 0x000000C0; // Expected value R1 = R0 & R1; // KEEP old value CC = R1 == R2; // Check to see if 12 is there IF CC JUMP IS_TRUE; IF !CC JUMP IS_FALSE;

Page 24: Blackfin BF533 EZ-KIT Control The O in I/O Activating a FLASH memory “output line” Part 3 – New instruction recap Tutorial

Blackfin BF533 I/O 27

Agenda• Processors need to send out control

signals (high / low 1 / 0 true / false)– General purpose input / output GPIO on

processor chip (16)– FLASH memory chip has additional I/O

ports connected to Ez-Lite KIT LED’s

• Making the FLASH memory I/O port control the Ez-KIT LED’s

• The new Blackfin assembly language instructions needed