beautypg.com

2 creating errors in structures, Creating errors in structures – Teledyne LeCroy PETrainer Scripting Language Reference Manual User Manual

Page 83

background image

Teledyne LeCroy

PETrainer Scripting Language

78

15.2 Creating Errors in Structures


There are several ways of inserting various errors in the NVMe and AHCI/ATA structures

-

Using “Field” construct to set non-zero values to reserved fields.


The “Field” directive (described in 3.1) can be used to set non zero values in reserved fields within first 8
DWORDs of any structure:

Structure=NVMe
{
Location=Mem64
Offset = 0

NVMeStructType=AdminCommand
OpcodeAdmin = ADMIN_IDENTIFY
PRP1_Low = 0x3F25B190
PRP1_High = 0x8
PRP2_Low = 0x3F25C000
PRP2_High = 0x8
CNS = Controller

Field[63:71] = 0xA5 ; setting non-zero value of a reserved byte in Command DW 2
}

-

Assigning undefined values to structure fields.


A numeric value can be assigned to any of the defined structure fields that is undefined or invalid:

Structure=AHCI
{
Location=Mem64
Offset = 0x1000
AhciStructType=FIS
FISType = 0x15 ; undefined FIS type instead of RegisterH2D
Features = 0x02
ATACommand = SET_FEATURES
C = Yes
Device = 0xA0
}

-

Using AddressSpace=Write to supply raw byte image of the structure with any contents desired.\


As before Structure command was implemented, AddressSpace=Write can be used to place the byte
stream of the desired structure in the Host Memory Region. This way any byte image of a structure can
be programmed, creating any type of error desired.