1 return codes, 5 srom function descriptions, 1 swbootreset function – Cypress enCoRe CY7C63310 User Manual

Page 15: 2 readblock function, Table 9-2

Advertising
background image

CY7C63310, CY7C638xx

Document 38-08035 Rev. *K

Page 15 of 83

Two important variables that are used for all functions are KEY1

and KEY2. These variables are used to help discriminate

between valid SSCs and inadvertent SSCs. KEY1 must always

have a value of 3Ah, while KEY2 must have the same value as

the stack pointer when the SROM function begins execution.

This would be the Stack Pointer value when the SSC opcode is

executed, plus three. If either of the keys do not match the

expected values, the M8C halts (with the exception of the

SWBootReset function). The following code puts the correct

value in KEY1 and KEY2. The code starts with a halt, to force the

program to jump directly into the setup code and not run into it.
halt
SSCOP: mov [KEY1], 3ah
mov X, SP
mov A, X
add A, 3
mov [KEY2], A

9.4.1 Return Codes
The SROM also features Return Codes and Lockouts.
Return codes aid in the determination of the success or failure of

a particular function. The return code is stored in KEY1’s position

in the parameter block. The CheckSum and TableRead functions

do not have return codes because KEY1’s position in the

parameter block is used to return other data.

Read, write, and erase operations may fail if the target block is

read or write protected. Block protection levels are set during

device programming.
The EraseAll function overwrites data in addition to leaving the

entire user Flash in the erase state. The EraseAll function loops

through the number of Flash macros in the product, executing

the following sequence: erase, bulk program all zeros, erase.

After all the user space in all the Flash macros are erased, a

second loop erases and then programs each protection block

with zeros.

9.5 SROM Function Descriptions

9.5.1 SWBootReset Function
The SROM function, SWBootReset, is the function that is

responsible for transitioning the device from a reset state to

running user code. The SWBootReset function is executed

whenever the SROM is entered with an M8C accumulator value

of 00h: the SRAM parameter block is not used as an input to the

function. This happens by design after a hardware reset,

because the M8C's accumulator is reset to 00h or when the user

code executes the SSC instruction with an accumulator value of

00h. The SWBootReset function is not executed when the SSC

instruction is executed with a bad key value and a non-zero

function code. An enCoRe II device executes the HALT

instruction if a bad value is given for either KEY1 or KEY2.
The SWBootReset function verifies the integrity of the calibration

data by way of a 16-bit checksum, before releasing the M8C to

run user code.

9.5.2 ReadBlock Function
The ReadBlock function is used to read 64 contiguous bytes

from Flash: a block.
This function first checks the protection bits and determines if the

desired BLOCKID is readable. If the read protection is turned on,

the ReadBlock function exits setting the accumulator and KEY2

back to 00h. KEY1 has a value of 01h, indicating a read failure.

If read protection is not enabled, the function reads 64 bytes from

the Flash using a ROMX instruction and stores the results in the

SRAM using an MVI instruction. The first of the 64 bytes are

stored in the SRAM at the address indicated by the value of the

POINTER parameter. When the ReadBlock completes

successfully, the accumulator, KEY1, and KEY2 all have a value

of 00h.

Table 9-2. SROM Function Parameters

Variable Name

SRAM Address

Key1/Counter/Return Code

0,F8h

Key2/TMP

0,F9h

BlockID

0,FAh

Pointer

0,FBh

Clock

0,FCh

Mode

0,FDh

Delay

0,FEh

PCL

0,FFh

Table 9-3. SROM Return Codes

Return Code

Description

00h

Success

01h

Function not allowed due to level of protection

on block.

02h

Software reset without hardware reset.

03h

Fatal error, SROM halted.

Table 9-4. ReadBlock Parameters

Name

Address

Description

KEY1

0,F8h

3Ah

KEY2

0,F9h

Stack Pointer value, when SSC is

executed.

BLOCKID

0,FAh

Flash block number

POINTER

0,FBh

First of 64 addresses in SRAM

where returned data must be stored.

[+] Feedback

[+] Feedback

Advertising
This manual is related to the following products: