Fixed parity handling to respect the --no-parity config option.

- Automatically disable parity checks for old SASI/SCSI1 hosts.
- Add scsi disconnect/reconnect support for long SD card writes.
This commit is contained in:
Michael McMaster 2014-10-09 09:47:46 +10:00
parent e71076759c
commit a8cd4216a2
21 changed files with 379 additions and 3418 deletions

View File

@ -4,6 +4,7 @@
multiple devices on the SCSI bus.
- Re-add parity checking. This can be disabled using scsi2sd-config if
required.
- Added disconnect/reconnect support during SD card writes.
20140718 3.5.2
- Fix blank SCSI ID in scsi2sd-config output.

View File

@ -73,6 +73,9 @@ Compatibility
Microvax 3100 Model 80 running VMS 7.3 (needs patch against v3.5.2 firmware)
Amiga 500+ with GVP A530
Atari TT030 System V
Atari MEGA STE
needs J3 TERMPWR jumper
1GB limit (--blocks=2048000)
Samplers
@ -93,5 +96,5 @@ Samplers
Other
HP 16601A logic analyzer
HP 16601A, 16700A logic analyzers
Fluke 9100 series

View File

@ -22,6 +22,7 @@
#include "config.h"
#include "disk.h"
#include "sd.h"
#include "time.h"
#include <string.h>
@ -56,7 +57,7 @@ static void doFormatUnitSkipData(int bytes)
int i;
for (i = 0; i < bytes; ++i)
{
scsiReadByte();
scsiReadByte();
}
}
@ -80,7 +81,7 @@ static void doFormatUnitHeader(void)
{
int IP = (scsiDev.data[1] & 0x08) ? 1 : 0;
int DSP = (scsiDev.data[1] & 0x04) ? 1 : 0;
if (! DSP) // disable save parameters
{
configSave(); // Save the "MODE SELECT savable parameters"
@ -520,15 +521,18 @@ void scsiDiskPoll()
transfer.currentBlock != transfer.blocks)
{
scsiEnterPhase(DATA_OUT);
int totalSDSectors = transfer.blocks * SDSectorsPerSCSISector();
int buffers = sizeof(scsiDev.data) / SD_SECTOR_SIZE;
int prep = 0;
int i = 0;
int scsiDisconnected = 0;
volatile uint32_t lastActivityTime = getTime_ms();
int scsiActive = 0;
int sdActive = 0;
while ((i < totalSDSectors) &&
(scsiDev.phase == DATA_OUT) &&
(scsiDev.phase == DATA_OUT) && // scsiDisconnect keeps our phase.
!scsiDev.resetFlag)
{
if ((sdActive == 1) && sdWriteSectorDMAPoll())
@ -547,8 +551,12 @@ void scsiDiskPoll()
{
scsiActive = 0;
++prep;
lastActivityTime = getTime_ms();
}
else if ((scsiActive == 0) && ((prep - i) < buffers) && (prep < totalSDSectors))
else if ((scsiActive == 0) &&
((prep - i) < buffers) &&
(prep < totalSDSectors) &&
!scsiDisconnected)
{
int dmaBytes = SD_SECTOR_SIZE;
if (prep % SDSectorsPerSCSISector() == SDSectorsPerSCSISector() - 1)
@ -559,11 +567,62 @@ void scsiDiskPoll()
scsiReadDMA(&scsiDev.data[SD_SECTOR_SIZE * (prep % buffers)], dmaBytes);
scsiActive = 1;
}
else if (
(scsiActive == 0) &&
!scsiDisconnected &&
scsiDev.discPriv &&
(diffTime_ms(lastActivityTime, getTime_ms()) >= 20) &&
(scsiDev.phase == DATA_OUT))
{
// We're transferring over the SCSI bus faster than the SD card
// can write. There is no more buffer space once we've finished
// this SCSI transfer.
// The NCR 53C700 interface chips have a 250ms "byte-to-byte"
// timeout buffer. SD card writes are supposed to complete
// within 200ms, but sometimes they don't.
// The NCR 53C700 series is used on HP 9000 workstations.
scsiDisconnect();
scsiDisconnected = 1;
lastActivityTime = getTime_ms();
}
else if (scsiDisconnected &&
(
(prep == i) || // Buffers empty.
// Send some messages every 100ms so we don't timeout.
// At a minimum, a reselection involves an IDENTIFY message.
(diffTime_ms(lastActivityTime, getTime_ms()) >= 100)
))
{
int reconnected = scsiReconnect();
if (reconnected)
{
scsiDisconnected = 0;
lastActivityTime = getTime_ms(); // Don't disconnect immediately.
}
else if (diffTime_ms(lastActivityTime, getTime_ms()) >= 10000)
{
// Give up after 10 seconds of trying to reconnect.
scsiDev.resetFlag = 1;
}
}
}
while (
!scsiDev.resetFlag &&
scsiDisconnected &&
(diffTime_ms(lastActivityTime, getTime_ms()) <= 10000))
{
scsiDisconnected = !scsiReconnect();
}
if (scsiDisconnected)
{
// Failed to reconnect
scsiDev.resetFlag = 1;
}
if (scsiDev.phase == DATA_OUT)
{
if (scsiDev.parityError)
if (scsiDev.parityError && config->enableParity && !scsiDev.compatMode)
{
scsiDev.sense.code = ABORTED_COMMAND;
scsiDev.sense.asc = SCSI_PARITY_ERROR;

View File

@ -21,11 +21,13 @@
#include "config.h"
#include "disk.h"
#include "led.h"
#include "time.h"
const char* Notice = "Copyright (C) 2014 Michael McMaster <michael@codesrc.com>";
int main()
{
timeInit();
ledInit();
// Enable global interrupts.

View File

@ -26,6 +26,7 @@
#include "led.h"
#include "mode.h"
#include "disk.h"
#include "time.h"
#include <string.h>
@ -197,7 +198,7 @@ static void process_DataOut()
scsiRead(scsiDev.data + scsiDev.dataPtr, len);
scsiDev.dataPtr += len;
if (scsiDev.parityError && config->enableParity)
if (scsiDev.parityError && config->enableParity && !scsiDev.compatMode)
{
scsiDev.sense.code = ABORTED_COMMAND;
scsiDev.sense.asc = SCSI_PARITY_ERROR;
@ -255,7 +256,7 @@ static void process_Command()
memset(scsiDev.cdb, 0xff, sizeof(scsiDev.cdb));
return;
}
else if (scsiDev.parityError)
else if (scsiDev.parityError && config->enableParity && !scsiDev.compatMode)
{
scsiDev.sense.code = ABORTED_COMMAND;
scsiDev.sense.asc = SCSI_PARITY_ERROR;
@ -464,6 +465,8 @@ static void enter_SelectionPhase()
scsiDev.status = GOOD;
scsiDev.phase = SELECTION;
scsiDev.lun = -1;
scsiDev.discPriv = 0;
scsiDev.compatMode = 0;
transfer.blocks = 0;
transfer.currentBlock = 0;
@ -481,21 +484,26 @@ static void process_SelectionPhase()
uint8 mask = scsiReadDBxPins();
int maskBitCount = countBits(mask);
int goodParity = (Lookup_OddParity[mask] == SCSI_ReadPin(SCSI_In_DBP));
int atnFlag = SCSI_ReadFilt(SCSI_Filt_ATN);
if (!bsy && sel &&
(mask & scsiDev.scsiIdMask) &&
(goodParity || !config->enableParity) && (maskBitCount <= 2))
(goodParity || !config->enableParity || !atnFlag) &&
(maskBitCount <= 2))
{
// Do we enter MESSAGE OUT immediately ? SCSI 1 and 2 standards says
// move to MESSAGE OUT if ATN is true before we assert BSY.
// The initiator should assert ATN with SEL.
scsiDev.atnFlag = SCSI_ReadFilt(SCSI_Filt_ATN);
// Unit attention breaks many older SCSI hosts. Disable it completely for
// SCSI-1 (and older) hosts, regardless of our configured setting.
scsiDev.atnFlag = atnFlag;
// Unit attention breaks many older SCSI hosts. Disable it completely
// for SCSI-1 (and older) hosts, regardless of our configured setting.
// Enable the compatability mode also as many SASI and SCSI1
// controllers don't generate parity bits.
if (!scsiDev.atnFlag)
{
scsiDev.unitAttention = 0;
scsiDev.compatMode = 1;
}
// We've been selected!
@ -557,7 +565,7 @@ static void process_MessageOut()
scsiDev.msgOut = scsiReadByte();
scsiDev.msgCount++;
if (scsiDev.parityError)
if (scsiDev.parityError && config->enableParity && !scsiDev.compatMode)
{
// Skip the remaining message bytes, and then start the MESSAGE_OUT
// phase again from the start. The initiator will re-send the
@ -630,7 +638,6 @@ static void process_MessageOut()
else if (scsiDev.msgOut & 0x80) // 0x80 -> 0xFF
{
// IDENTIFY
// We don't disconnect, so ignore disconnect privilege.
if ((scsiDev.msgOut & 0x18) || // Reserved bits set.
(scsiDev.msgOut & 0x20)) // We don't have any target routines!
{
@ -638,7 +645,9 @@ static void process_MessageOut()
}
scsiDev.lun = scsiDev.msgOut & 0x7;
//scsiDev.allowDisconnect = scsiDev.msgOut & 0x40;
scsiDev.discPriv =
((scsiDev.msgOut & 0x40) && (scsiDev.initiatorId >= 0))
? 1 : 0;
}
else if (scsiDev.msgOut >= 0x20 && scsiDev.msgOut <= 0x2F)
{
@ -811,3 +820,105 @@ void scsiInit()
scsiDev.unitAttention = POWER_ON_RESET;
}
void scsiDisconnect()
{
scsiEnterPhase(MESSAGE_IN);
scsiWriteByte(0x02); // save data pointer
scsiWriteByte(0x04); // disconnect msg.
// For now, the caller is responsible for tracking the disconnected
// state, and calling scsiReconnect.
// Ideally the client would exit their loop and we'd implement this
// as part of scsiPoll
int phase = scsiDev.phase;
enter_BusFree();
scsiDev.phase = phase;
}
int scsiReconnect()
{
int reconnected = 0;
int sel = SCSI_ReadFilt(SCSI_Filt_SEL);
int bsy = SCSI_ReadFilt(SCSI_Filt_BSY);
if (!sel && !bsy)
{
CyDelayUs(1);
sel = SCSI_ReadFilt(SCSI_Filt_SEL);
bsy = SCSI_ReadFilt(SCSI_Filt_BSY);
}
if (!sel && !bsy)
{
// Arbitrate.
ledOn();
SCSI_Out_Bits_Write(scsiDev.scsiIdMask);
SCSI_Out_Ctl_Write(1); // Write bits manually.
SCSI_SetPin(SCSI_Out_BSY);
CyDelayUs(3); // arbitrate delay. 2.4us.
uint8_t dbx = scsiReadDBxPins();
sel = SCSI_ReadFilt(SCSI_Filt_SEL);
if (sel || ((dbx ^ scsiDev.scsiIdMask) > scsiDev.scsiIdMask))
{
// Lost arbitration.
SCSI_Out_Ctl_Write(0);
SCSI_ClearPin(SCSI_Out_BSY);
ledOff();
}
else
{
// Won arbitration
SCSI_SetPin(SCSI_Out_SEL);
CyDelayUs(1); // Bus clear + Bus settle.
// Reselection phase
SCSI_CTL_PHASE_Write(__scsiphase_io);
SCSI_Out_Bits_Write(scsiDev.scsiIdMask | (1 << scsiDev.initiatorId));
scsiDeskewDelay(); // 2 deskew delays
scsiDeskewDelay(); // 2 deskew delays
SCSI_ClearPin(SCSI_Out_BSY);
CyDelayUs(1); // Bus Settle Delay
uint32_t waitStart_ms = getTime_ms();
bsy = SCSI_ReadFilt(SCSI_Filt_BSY);
// Wait for initiator.
while (
!bsy &&
!scsiDev.resetFlag &&
(diffTime_ms(waitStart_ms, getTime_ms()) < 250))
{
bsy = SCSI_ReadFilt(SCSI_Filt_BSY);
}
if (bsy)
{
SCSI_SetPin(SCSI_Out_BSY);
scsiDeskewDelay(); // 2 deskew delays
scsiDeskewDelay(); // 2 deskew delays
SCSI_ClearPin(SCSI_Out_SEL);
// Prepare for the initial IDENTIFY message.
SCSI_Out_Ctl_Write(0);
scsiEnterPhase(MESSAGE_IN);
// Send identify command
scsiWriteByte(0x80);
scsiEnterPhase(scsiDev.phase);
reconnected = 1;
}
else
{
// reselect timeout.
SCSI_Out_Ctl_Write(0);
SCSI_ClearPin(SCSI_Out_SEL);
SCSI_CTL_PHASE_Write(0);
ledOff();
}
}
}
return reconnected;
}

View File

@ -85,6 +85,8 @@ typedef struct
uint8 cdb[12]; // command descriptor block
uint8 cdbLen; // 6, 10, or 12 byte message.
int8 lun; // Target lun, set by IDENTIFY message.
uint8 discPriv; // Disconnect priviledge.
uint8_t compatMode; // true for SCSI1 and SASI hosts.
// Only let the reserved initiator talk to us.
// A 3rd party may be sending the RESERVE/RELEASE commands
@ -93,7 +95,7 @@ typedef struct
int reserverId; // 0 -> 7 if reserved. -1 if not reserved.
// SCSI_STATUS value.
// Change to SCSI_STATUS_CHECK_CONDITION when setting a SENSE value
// Change to CHECK_CONDITION when setting a SENSE value
uint8 status;
ScsiSense sense;
@ -118,6 +120,7 @@ extern ScsiDevice scsiDev;
void scsiInit(void);
void scsiPoll(void);
void scsiDisconnect(void);
int scsiReconnect(void);
#endif

View File

@ -60,6 +60,10 @@ enum FilteredInputs
#define SCSI_ReadFilt(filt) \
((SCSI_Filtered_Read() & (filt)) == 0)
// SCSI delays, as referenced to the cpu clock
#define CPU_CLK_PERIOD_NS (1000000000U / BCLK__BUS_CLK__HZ)
#define scsiDeskewDelay() CyDelayCycles((55 / CPU_CLK_PERIOD_NS) + 1)
// Contains the odd-parity flag for a given 8-bit value.
extern const uint8_t Lookup_OddParity[256];

56
software/SCSI2SD/src/time.c Executable file
View File

@ -0,0 +1,56 @@
// Copyright (C) 2014 Michael McMaster <michael@codesrc.com>
//
// This file is part of SCSI2SD.
//
// SCSI2SD is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// SCSI2SD is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with SCSI2SD. If not, see <http://www.gnu.org/licenses/>.
#include "time.h"
#include "limits.h"
static volatile uint32_t counter = 0;
CY_ISR_PROTO(TickISR);
CY_ISR(TickISR)
{
// Should be atomic at 32bit word size. Limits runtime to 49 days.
++counter;
}
void timeInit()
{
// Interrupt 15. SysTick_IRQn is -1.
// The SysTick timer is integrated into the Arm Cortex M3
CyIntSetSysVector((SysTick_IRQn + 16), TickISR);
// Ensure the cycle count is < 24bit.
// At 50MHz bus clock, counter is 50000.
SysTick_Config((BCLK__BUS_CLK__HZ + 999u) / 1000u);
}
uint32_t getTime_ms()
{
return counter;
}
uint32_t diffTime_ms(uint32_t start, uint32_t end)
{
if (end >= start)
{
return end - start;
}
else
{
return (UINT_MAX - start) + end;
}
}

26
software/SCSI2SD/src/time.h Executable file
View File

@ -0,0 +1,26 @@
// Copyright (C) 2014 Michael McMaster <michael@codesrc.com>
//
// This file is part of SCSI2SD.
//
// SCSI2SD is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// SCSI2SD is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with SCSI2SD. If not, see <http://www.gnu.org/licenses/>.
#ifndef TIME_H
#define TIME_H
#include "device.h"
void timeInit(void);
uint32_t getTime_ms(void); // Returns milliseconds since init
uint32_t diffTime_ms(uint32_t start, uint32_t end);
#endif

View File

@ -18,7 +18,7 @@
<Tool Name="postbuild" Command="" Options="" />
</Toolchain>
</Toolchains>
<Project Name="SCSI2SD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" Version="4.0" Type="Bootloadable">
<Project Name="SCSI2SD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" Version="4.0" Type="Bootloadable">
<CMSIS_SVD_File>SCSI2SD.svd</CMSIS_SVD_File>
<Datasheet />
<LinkerFiles>
@ -27,8 +27,8 @@
<LinkerFile Toolchain="IAR EWARM">.\Generated_Source\PSoC5\Cm3Iar.icf</LinkerFile>
</LinkerFiles>
<Folders>
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\src">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\src">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">..\..\src\main.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\diagnostic.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\disk.c</File>
@ -41,6 +41,7 @@
<File BuildType="BUILD" Toolchain="">..\..\src\sd.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\config.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\led.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\time.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\diagnostic.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\disk.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\geometry.h</File>
@ -53,15 +54,16 @@
<File BuildType="BUILD" Toolchain="">..\..\src\bits.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\sd.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\config.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\time.h</File>
</Files>
</Folder>
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">.\device.h</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.h</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.c</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cydevice.h</File>
@ -209,41 +211,41 @@
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\libelf.dll</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="ARM GCC">.\Generated_Source\PSoC5\ARM_GCC\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="ARM Keil MDK">.\Generated_Source\PSoC5\ARM_Keil_MDK\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="IAR">.\Generated_Source\PSoC5\IAR\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="EXCLUDE" Path=".\codegentemp">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_441">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_473">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051_Keil_951">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM0">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM3">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\SCSI2SD.cydsn" />
</Folder>
</Folders>
</Project>

View File

@ -102,6 +102,13 @@
<build_action v="C_FILE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="time.c" persistent="..\..\src\time.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="C_FILE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
@ -210,6 +217,13 @@
<build_action v="NONE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="time.h" persistent="..\..\src\time.h">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="NONE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>

View File

@ -18,7 +18,7 @@
<Tool Name="postbuild" Command="" Options="" />
</Toolchain>
</Toolchains>
<Project Name="USB_Bootloader" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" Version="4.0" Type="Bootloader">
<Project Name="USB_Bootloader" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" Version="4.0" Type="Bootloader">
<CMSIS_SVD_File>USB_Bootloader.svd</CMSIS_SVD_File>
<Datasheet />
<LinkerFiles>
@ -27,13 +27,13 @@
<LinkerFile Toolchain="IAR EWARM">.\Generated_Source\PSoC5\Cm3Iar.icf</LinkerFile>
</LinkerFiles>
<Folders>
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<File BuildType="BUILD" Toolchain="">.\main.c</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.h</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.c</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cymetadata.c</File>
@ -111,41 +111,41 @@
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\libelf.dll</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<File BuildType="BUILD" Toolchain="ARM GCC">.\Generated_Source\PSoC5\ARM_GCC\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<File BuildType="BUILD" Toolchain="ARM Keil MDK">.\Generated_Source\PSoC5\ARM_Keil_MDK\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn">
<File BuildType="BUILD" Toolchain="IAR">.\Generated_Source\PSoC5\IAR\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="EXCLUDE" Path=".\codegentemp">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_441">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_473">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051_Keil_951">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM0">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM3">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn" />
</Folder>
</Folders>
</Project>

View File

@ -1082,6 +1082,7 @@
<name_val_pair name="Z:\projects\SCSI2SD\git-3.5\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\CortexM3\ARM_GCC_473\Release\USB_Bootloader.hex" v="&quot;-mthumb &quot;&quot;-march=armv7-m &quot;&quot;-mfix-cortex-m3-ldrd &quot;&quot;-T &quot;&quot;.\Generated_Source\PSoC5\cm3gcc.ld &quot;&quot;-g &quot;&quot;-Wl,-Map,${OutputDir}\${ProjectShortName}.map &quot;&quot;-specs=nano.specs &quot;&quot;-Wl,--gc-sections &quot;" />
<name_val_pair name="Z:\projects\SCSI2SD\git\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\CortexM3\ARM_GCC_473\Release\USB_Bootloader.hex" v="&quot;-mthumb &quot;&quot;-march=armv7-m &quot;&quot;-mfix-cortex-m3-ldrd &quot;&quot;-T &quot;&quot;.\Generated_Source\PSoC5\cm3gcc.ld &quot;&quot;-g &quot;&quot;-Wl,-Map,${OutputDir}\${ProjectShortName}.map &quot;&quot;-specs=nano.specs &quot;&quot;-Wl,--gc-sections &quot;" />
<name_val_pair name="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\CortexM3\ARM_GCC_473\Release\USB_Bootloader.hex" v="&quot;-mthumb &quot;&quot;-march=armv7-m &quot;&quot;-mfix-cortex-m3-ldrd &quot;&quot;-T &quot;&quot;.\Generated_Source\PSoC5\cm3gcc.ld &quot;&quot;-g &quot;&quot;-Wl,-Map,${OutputDir}\${ProjectShortName}.map &quot;&quot;-specs=nano.specs &quot;&quot;-Wl,--gc-sections &quot;" />
<name_val_pair name="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\CortexM3\ARM_GCC_473\Release\USB_Bootloader.hex" v="&quot;-mthumb &quot;&quot;-march=armv7-m &quot;&quot;-mfix-cortex-m3-ldrd &quot;&quot;-T &quot;&quot;.\Generated_Source\PSoC5\cm3gcc.ld &quot;&quot;-g &quot;&quot;-Wl,-Map,${OutputDir}\${ProjectShortName}.map &quot;&quot;-specs=nano.specs &quot;&quot;-Wl,--gc-sections &quot;" />
</name>
<name v="c9323d49-d323-40b8-9b59-cc008d68a989@Debug@CortexM3">
<name_val_pair name=".\main.c" v="&quot;-I. &quot;&quot;-I./Generated_Source/PSoC5 &quot;&quot;-Wno-main &quot;&quot;-mcpu=cortex-m3 &quot;&quot;-mthumb &quot;&quot;-Wall &quot;&quot;-g &quot;&quot;-D &quot;&quot;DEBUG &quot;&quot;-Wa,-alh=${OutputDir}\${CompileFile}.lst &quot;&quot;-ffunction-sections &quot;" />
@ -1115,7 +1116,7 @@
<name_val_pair name="W:\SCSI2SD\software\SCSI2SD\USB_Bootloader.cydsn\CortexM3\ARM_GCC_473\Debug\USB_Bootloader.hex" v="&quot;-mthumb &quot;&quot;-march=armv7-m &quot;&quot;-mfix-cortex-m3-ldrd &quot;&quot;-T &quot;&quot;.\Generated_Source\PSoC5\cm3gcc.ld &quot;&quot;-g &quot;&quot;-Wl,-Map,${OutputDir}\${ProjectShortName}.map &quot;&quot;-specs=nano.specs &quot;&quot;-Wl,--gc-sections &quot;" />
</name>
</genericCmdLineData>
<codeGenCmdLineTag v="&quot;-.appdatapath&quot; &quot;C:\Users\Micha_000\AppData\Local\Cypress Semiconductor\PSoC Creator\3.0&quot; &quot;-.fdsnotice&quot; &quot;-.fdswarpdepfile=warp_dependencies.txt&quot; &quot;-.fdselabdepfile=elab_dependencies.txt&quot; &quot;-.fdsbldfile=generated_files.txt&quot; &quot;-p&quot; &quot;Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\USB_Bootloader.cyprj&quot; &quot;-d&quot; &quot;CY8C5267AXI-LP051&quot; &quot;-s&quot; &quot;Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5&quot; &quot;--&quot; &quot;-yv2&quot; &quot;-v3&quot; &quot;-ygs&quot; &quot;-q10&quot; &quot;-o2&quot; &quot;-.fftcfgtype=LE&quot; " />
<codeGenCmdLineTag v="&quot;-.appdatapath&quot; &quot;C:\Users\Micha_000\AppData\Local\Cypress Semiconductor\PSoC Creator\3.0&quot; &quot;-.fdsnotice&quot; &quot;-.fdswarpdepfile=warp_dependencies.txt&quot; &quot;-.fdselabdepfile=elab_dependencies.txt&quot; &quot;-.fdsbldfile=generated_files.txt&quot; &quot;-p&quot; &quot;Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\USB_Bootloader.cyprj&quot; &quot;-d&quot; &quot;CY8C5267AXI-LP051&quot; &quot;-s&quot; &quot;Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v3\USB_Bootloader.cydsn\Generated_Source\PSoC5&quot; &quot;--&quot; &quot;-yv2&quot; &quot;-v3&quot; &quot;-ygs&quot; &quot;-q10&quot; &quot;-o2&quot; &quot;-.fftcfgtype=LE&quot; " />
</CyGuid_b0374e30-ce3a-47f2-ad85-821643292c68>
</dataGuid>
<dataGuid v="597c5b74-0c46-4204-8b7f-96f3570671dc">
@ -1668,14 +1669,14 @@
<v>C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\mod_genv.vif</v>
<v>C:\Program Files (x86)\Cypress\PSoC Creator\3.0\PSoC Creator\warp\lib\common\stdlogic\rtlpkg.vif</v>
</warp_dep>
<deps_time v="130537023991022657" />
<deps_time v="130571566842994698" />
<top_block v="TopDesign" />
<last_generation v="0" />
</CyGuid_925cc1e1-309e-4e08-b0a1-09a83c35b157>
</dataGuid>
<dataGuid v="769d31ea-68b1-4f0c-b90a-7c10a43ee563">
<CyGuid_769d31ea-68b1-4f0c-b90a-7c10a43ee563 type_name="CyDesigner.Common.ProjMgmt.Model.CyLinkCustomData" version="1">
<deps_time v="130537025103831962" />
<deps_time v="130571567839248780" />
</CyGuid_769d31ea-68b1-4f0c-b90a-7c10a43ee563>
</dataGuid>
<dataGuid v="bf610382-39c6-441f-80b8-b04622ea7845">

File diff suppressed because it is too large Load Diff

View File

@ -1,642 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Static Timing Analysis Report</title>
<style type="text/css">
<!--
body {
font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
}
table.sta_tsu > thead > tr > th.Delay,
table.sta_tsu > tbody > tr > td.Delay,
table.sta_tscs > thead > tr > th.Period,
table.sta_tscs > tbody > tr > td.Period,
table.sta_tscs > thead > tr > th.MaxFreq,
table.sta_tscs > tbody > tr > td.MaxFreq,
table.sta_tscs > thead > tr > th.Frequency,
table.sta_tscs > tbody > tr > td.Frequency,
table.sta_tco > thead > tr > th.Delay,
table.sta_tco > tbody > tr > td.Delay,
table.sta_tpd > thead > tr > th.Delay,
table.sta_tpd > tbody > tr > td.Delay,
table.sta_toe > thead > tr > th.Delay,
table.sta_toe > tbody > tr > td.Delay,
table.sta_tcoe > thead > tr > th.Delay,
table.sta_tcoe > tbody > tr > td.Delay,
table.sta_path > thead > tr > th.Delay,
table.sta_path > tbody > tr > td.Delay,
table.sta_path > thead > tr > th.Total,
table.sta_path > tbody > tr > td.Total,
table.sta_clocksummary > thead > tr > th.ActualFreq,
table.sta_clocksummary > tbody > tr > td.ActualFreq,
table.sta_clocksummary > thead > tr > th.MaxFreq,
table.sta_clocksummary > tbody > tr > td.MaxFreq,
table > tbody > tr > td.number
{
text-align: right;
}
table.sta_tsu {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
table.sta_tpd {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
table.sta_tscs {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
table.sta_tco {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
table.sta_toe {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
table.sta_tcoe {
border: solid 2px;
border-collapse: collapse;
width: 90%;
}
th {
border: solid 1px;
vertical-align: top;
font-family: monospace;
text-align: center;
white-space: pre-line;
}
td {
border: solid 1px;
vertical-align: top;
font-family: monospace;
white-space: pre-line;
}
table.sta_tpd > tbody > tr:hover,
table.sta_tsu > tbody > tr:hover,
table.sta_tscs > tbody > tr:hover,
table.sta_tco > tbody > tr:hover,
table.sta_toe > tbody > tr:hover,
table.sta_tcoe > tbody > tr:hover
{
background-color: #e8e8ff;
}
table.sta_path > tbody > tr:hover {
background-color: #e8e8ff;
}
table.sta_path {
background-color: #f8f8f8;
border: none;
border-collapse: collapse;
width: 90%;
margin-left: 1em;
margin-right: 1em;
}
table.sta_clocksummary {
border: solid 2px;
border-collapse: collapse;
}
div.sta_sec {
padding: 0.5em;
}
div.sta_sec div.sta_sec {
margin-left: 0.75em;
}
.proptext {
font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
border: 0px;
}
.prop {
font: normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
font-weight: bolder;
border: 0px;
}
.sec_head {
display: block;
font-size: 1.17em;
font-weight: bolder;
margin: .83em 0;
}
div.sta_secbody {
margin-left: 0.75em;
}
div.vio_sta_secbody {
margin-left: 0.75em;
}
.sta_sec_desc {
margin-bottom: 0.5em;
white-space: pre-line;
}
.violation_color {
color: red;
border-color: black;
}
-->
</style>
<script type="text/javascript">
<!--
function HideElement(element) {
var headerDiv = getChildElementsByTagName(element, "div")[0];
var expandLink = getChildElementsByTagName(headerDiv, "a")[0];
expandLink.onclick = clicked;
var children = element.childNodes;
var secBody = null;
for (var j = 0; j < children.length; j++)
{
if (children[j].nodeType == document.ELEMENT_NODE &&
(children[j].className == "sta_secbody" ||
children[j].className == "vio_sta_secbody" ||
children[j].className == "sta_sec" ))
{
secBody = children[j];
secBody.style.display = "none";
}
}
}
function HideElements(elements) {
for( var i=0; i<elements.length; i++)
HideElement(elements[i]);
}
// Description : returns boolean indicating whether the object has the class name
// built with the understanding that there may be multiple classes
//
// Arguments:
// objElement - element to check for.
// strClass - class name to be checked.
//
function HasClassName(objElement, strClass)
{
if ( objElement.className )
{
// the classes are just a space separated list, so first get the list
var arrList = objElement.className.split(' ');
for ( var i = 0; i < arrList.length; i++ )
{
if ( arrList[i] == strClass )
{
return true;
}
}
}
return false;
}
function initialize() {
if (document.ELEMENT_NODE == null)
{
/* Workaround for old IE */
document.ELEMENT_NODE = 1;
document.ATTRIBUTE_NODE = 2;
document.TEXT_NODE = 3;
document.CDATA_SECTION_MODE = 4;
document.ENTITY_REFERENCE_MODE = 5;
document.ENTITY_NODE = 6;
document.PROCESSING_INSTRUCTION_NODE = 7;
document.COMMENT_NODE = 8;
document.DOCUMENT_NODE = 9;
document.DOCUMENT_TYPE_NODE = 10;
document.DOCUMENT_FRAGMENT_NODE = 11;
document.NOTATION_NODE = 12;
}
HideElements(getElementsByClass(document, 'div', 'sta_sec'));
toggleExpandSection(document.getElementById('clock_summary'));
toggleExpandSection(document.getElementById('violations'));
var allTD = document.getElementsByTagName("td");
for( var i=0; i< allTD.length; i++)
{
if(allTD[i].className != "proptext" && allTD[i].innerHTML.match(/^\s*[-]?[0-9]+[\.]?[0-9]*$/))
{
allTD[i].align = "right";
//allTD[i].style.textAlign = "right";
}
}
var allTables = document.getElementsByTagName("table");
for (var i = 0; i < allTables.length; i++)
{
var table = allTables[i];
if (table.className == "sta_tsu" ||
table.className == "sta_tscs" ||
table.className == "sta_tco" ||
table.className == "sta_toe" ||
table.className == "sta_tcoe")
{
var tbodyList = getChildElementsByTagName(table, "tbody");
if (tbodyList.length != 0)
{
for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)
{
if (row.nodeName.toLowerCase() == "tr")
{
if (HasClassName(row,"sta_path"))
{
row.style.display = "none";
}
else
{
row.style.cursor = "pointer";
row.onclick = rowClicked;
}
}
}
}
}
else if(table.className == "sta_tpd" )
{
var tbodyList = getChildElementsByTagName(table, "tbody");
if (tbodyList.length != 0)
{
for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)
{
if (row.nodeName.toLowerCase() == "tr")
{
if(HasClassName(row, "sta_tv"))
{
row.style.cursor = "pointer";
row.onclick = violationClicked;
}
}
}
}
}
}
}
function clicked()
{
var parent = findAncestorByClass(this, "sta_sec");
toggleExpandSection(parent);
return false;
}
function toggleExpandSection(section)
{
if (section == null)
return false;
var children = section.childNodes;
for (var i = 0; i < children.length; i++)
{
if (children[i].nodeType == document.ELEMENT_NODE &&
(children[i].className == "sta_secbody" ||
children[i].className == "vio_sta_secbody"))
toggleVisible(children[i]);
}
}
function findAncestorByClass(node, className)
{
var parent;
for (parent = node; parent != null; parent = parent.parentNode)
{
if (parent.nodeType == document.ELEMENT_NODE &&
parent.className == className)
{
return parent;
}
}
return null;
}
function rowClicked()
{
for (var next = this.nextSibling; next != null; next = next.nextSibling)
{
if (next.nodeType == document.ELEMENT_NODE &&
next.nodeName.toLowerCase() == "tr" &&
HasClassName(next,"sta_path"))
{
if (next.style.display == "none")
next.style.display = "table-row";
else
next.style.display = "none";
break;
}
}
return false;
}
function findPos(obj)
{
var curtop = 0;
if (obj.offsetParent)
{
do
{
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return [curtop];
}
}
function jumpto(ClassName)
{
var classname = 'sta_path';
classname += ' ';
classname += ClassName;
if((obj = getElementsByClass(document, 'tr', classname)) &&
obj.length > 0 ){
window.scrollTo(0, findPos(obj[0]));
}
}
function violationClicked()
{
expandAllSections(0);
expandViolations(1);
var ident=this.id;
var rlist= document.getElementsByTagName( "tr");
var clickedElementClassNames = this.className.split(' ');
//The second class name is to match the violation element with the
//corresponding path element in the detailed section.
var identificationClassValue = clickedElementClassNames[1];
for(var i=0 ; i < rlist.length ; i++)
{
if( rlist[i].nodeType == document.ELEMENT_NODE && HasClassName(rlist[i],"sta_path") )
{
var staPathClassNames = rlist[i].className.split(' ');
// Assumption: There will be two class names, one indicating
// style (sta_path), other to identify elements tv1.
if(staPathClassNames.length > 1)
{
// Matching second class Names of both elements.
if(staPathClassNames[1] == identificationClassValue)
{
var parent= findAncestorByClass ( rlist[i] , "sta_tscs" );
if(parent == null)
parent= findAncestorByClass ( rlist[i] , "sta_tco" );
for( ; (parent!= null && parent.nodeName!="body") ; parent= parent.parentNode )
{
if( parent.nodeType == document.ELEMENT_NODE && parent.className == "sta_secbody")
{
//parent.style.display = "block";
visible(parent);
rlist[i].style.display = "table-row" ;
//alert(rlist[i].id);
}
}
}
}
}
}
//document.getElementById(this.id).scrollIntoView(true);
// location = location + this.id;
jumpto(identificationClassValue);
return false;
}
function toggleVisible(elem)
{
if (elem.style.display == "none")
elem.style.display = "block";
else
elem.style.display = "none";
headerDiv = getChildElementsByTagName(elem.parentNode, "div")[0];
link = getChildElementsByTagName(headerDiv, "a")[0];
innerSpan = getChildElementsByTagName(link, "span")[0];
textNode = getChildElementsByTagName(innerSpan, "span")[0].firstChild;
textNode.data = (elem.style.display == "none") ? "+" : "-";
}
function visible(elem)
{
elem.style.display = "block";
headerDiv = getChildElementsByTagName(elem.parentNode, "div")[0];
link = getChildElementsByTagName(headerDiv, "a")[0];
innerSpan = getChildElementsByTagName(link, "span")[0];
textNode = getChildElementsByTagName(innerSpan, "span")[0].firstChild;
textNode.data = (elem.style.display == "none") ? "+" : "-";
}
function getChildElementsByTagName(node, name)
{
var result = new Array(), i = 0;
name = name.toLowerCase();
for (var child = node.firstChild; child != null; child = child.nextSibling)
{
if (child.nodeType == document.ELEMENT_NODE &&
child.nodeName.toLowerCase() == name)
{
result[i++] = child;
}
}
return result;
}
function expandAllPaths(rootNode, show)
{
var show = show ? "table-row" : "none";
var elements = getElementsByClass(rootNode, "tr", "sta_path");
for (var i = 0; i < elements.length; i++)
{
elements[i].style.display = show;
}
}
function expandAllSections(show)
{
var show = show ? "block" : "none";
var elements = getElementsByClass(document, "div", "sta_secbody");
for (var i = 0; i < elements.length; i++)
{
if (elements[i].style.display != show)
toggleVisible(elements[i]);
}
var elements1 = getElementsByClass(document, "div", "vio_sta_secbody");
for (var i = 0; i < elements1.length; i++)
{
if (elements1[i].style.display != show)
toggleVisible(elements1[i]);
}
}
function expandViolations(show)
{
var show = show ? "block" : "none";
var elements = getElementsByClass(document, "div", "vio_sta_secbody");
for (var i = 0; i < elements.length; i++)
{
if (elements[i].style.display != show)
toggleVisible(elements[i]);
}
}
function expandViolationSections(show)
{
var show =show ? "block" :"none" ;
}
function getElementsByClass(rootNode, elemName, className)
{
var result = new Array(), idx = 0;
var elements = rootNode.getElementsByTagName(elemName);
for (var i = 0; i < elements.length; i++)
{
if (elements[i].className == className)
result[idx++] = elements[i];
}
return result;
}
//-->
</script>
</head>
<body onload="initialize();">
<noscript>
<p style="display: block; border: 1px solid; margin: 4em; padding: 1.5em">View this file with a JavaScript-enabled browser to enable all features.</p>
</noscript>
<h1> Static Timing Analysis </h1>
<table class="property">
<tr> <td class="prop"> Project :</td>
<td class="proptext"> USB_Bootloader</td></tr>
<tr> <td class="prop"> Build Time :</td>
<td class="proptext"> 08/28/14 22:25:58</td></tr>
<tr> <td class="prop"> Device :</td>
<td class="proptext"> CY8C5267AXI-LP051</td></tr>
<tr> <td class="prop"> Temperature :</td>
<td class="proptext"> -40C - 85/125C</td></tr>
<tr> <td class="prop"> Vdda :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Vddd :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Vio0 :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Vio1 :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Vio2 :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Vio3 :</td>
<td class="proptext"> 5.00</td></tr>
<tr> <td class="prop"> Voltage :</td>
<td class="proptext"> 5.0</td></tr>
<tr> <td class="prop"> Vusb :</td>
<td class="proptext"> 5.00</td></tr>
</table>
<div>
<a href="#" onclick="expandAllSections(1);return false;">Expand All</a> |
<a href="#" onclick="expandAllSections(0);return false;">Collapse All</a> |
<a href="#" onclick="expandAllPaths(document, 1);return false;">Show All Paths</a> |
<a href="#" onclick="expandAllPaths(document, 0);return false;">Hide All Paths</a>
</div>
<div class="sta_sec" id="violations">
<div>
<a href="#" style="text-decoration: none; color: inherit;">
<span class="sec_head"><span style="font-family: monospace;">+</span>
Timing Violation Section</span>
</a>
</div><div class="vio_sta_secbody"><div class="sta_sec_desc">No Timing Violations</div>
</div>
</div>
<div class="sta_sec" id="clock_summary">
<div>
<a href="#" style="text-decoration: none; color: inherit;">
<span class="sec_head"><span style="font-family: monospace;">+</span>
Clock Summary Section</span>
</a>
</div><div class="sta_secbody"><table class="sta_clocksummary">
<thead>
<tr>
<th>Clock</th>
<th>Domain</th>
<th>Nominal Frequency</th>
<th>Required Frequency</th>
<th>Maximum Frequency</th>
<th>Violation</th>
</tr>
</thead>
<tbody>
<tr>
<td class = "text_info">CyILO</td>
<td class = "text_info">CyILO</td>
<td class = "number">100.000&nbsp;kHz</td>
<td class = "number">100.000&nbsp;kHz</td>
<td class = "number"> N/A </td>
<td class = "text_info"> </td>
</tr>
<tr>
<td class = "text_info">CyIMO</td>
<td class = "text_info">CyIMO</td>
<td class = "number">24.000&nbsp;MHz</td>
<td class = "number">24.000&nbsp;MHz</td>
<td class = "number"> N/A </td>
<td class = "text_info"> </td>
</tr>
<tr>
<td class = "text_info">CyMASTER_CLK</td>
<td class = "text_info">CyMASTER_CLK</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number"> N/A </td>
<td class = "text_info"> </td>
</tr>
<tr>
<td class = "text_info">CyBUS_CLK</td>
<td class = "text_info">CyMASTER_CLK</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number"> N/A </td>
<td class = "text_info"> </td>
</tr>
<tr>
<td class = "text_info">CyPLL_OUT</td>
<td class = "text_info">CyPLL_OUT</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number">64.000&nbsp;MHz</td>
<td class = "number"> N/A </td>
<td class = "text_info"> </td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>

View File

@ -18,7 +18,7 @@
<Tool Name="postbuild" Command="" Options="" />
</Toolchain>
</Toolchains>
<Project Name="SCSI2SD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" Version="4.0" Type="Bootloadable">
<Project Name="SCSI2SD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" Version="4.0" Type="Bootloadable">
<CMSIS_SVD_File>SCSI2SD.svd</CMSIS_SVD_File>
<Datasheet />
<LinkerFiles>
@ -27,8 +27,8 @@
<LinkerFile Toolchain="IAR EWARM">.\Generated_Source\PSoC5\Cm3Iar.icf</LinkerFile>
</LinkerFiles>
<Folders>
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\src">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\src">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">..\..\src\main.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\diagnostic.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\disk.c</File>
@ -41,6 +41,7 @@
<File BuildType="BUILD" Toolchain="">..\..\src\sd.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\config.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\led.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\time.c</File>
<File BuildType="BUILD" Toolchain="">..\..\src\diagnostic.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\disk.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\geometry.h</File>
@ -53,15 +54,16 @@
<File BuildType="BUILD" Toolchain="">..\..\src\bits.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\sd.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\config.h</File>
<File BuildType="BUILD" Toolchain="">..\..\src\time.h</File>
</Files>
</Folder>
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="BUILD" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">.\device.h</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.h</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cyfitter_cfg.c</File>
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\cybootloader.c</File>
@ -206,41 +208,41 @@
<File BuildType="BUILD" Toolchain="">.\Generated_Source\PSoC5\libelf.dll</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_GCC">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="ARM GCC">.\Generated_Source\PSoC5\ARM_GCC\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\ARM_Keil_MDK">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="ARM Keil MDK">.\Generated_Source\PSoC5\ARM_Keil_MDK\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<Folder BuildType="STRICT" Path="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn\Generated_Source\PSoC5\IAR">
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn">
<File BuildType="BUILD" Toolchain="IAR">.\Generated_Source\PSoC5\IAR\CyComponentLibrary.a</File>
</Files>
</Folder>
<Folder BuildType="EXCLUDE" Path=".\codegentemp">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_441">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\ARM_GCC_473">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051_Keil_951">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\DP8051">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM0">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
<Folder BuildType="EXCLUDE" Path=".\CortexM3">
<Files Root="Z:\projects\SCSI2SD\git-parity\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
<Files Root="Z:\projects\SCSI2SD\git-timeout\SCSI2SD\software\SCSI2SD\v4\SCSI2SD.cydsn" />
</Folder>
</Folders>
</Project>

View File

@ -102,6 +102,13 @@
<build_action v="C_FILE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="time.c" persistent="..\..\src\time.c">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="C_FILE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>
@ -210,6 +217,13 @@
<build_action v="NONE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
<CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtFile" version="3" xml_contents_version="1">
<CyGuid_31768f72-0253-412b-af77-e7dba74d1330 type_name="CyDesigner.Common.ProjMgmt.Model.CyPrjMgmtItem" version="2" name="time.h" persistent="..\..\src\time.h">
<Hidden v="False" />
</CyGuid_31768f72-0253-412b-af77-e7dba74d1330>
<build_action v="NONE" />
<PropertyDeltas />
</CyGuid_8b8ab257-35d3-4473-b57b-36315200b38b>
</dependencies>
</CyGuid_0820c2e7-528d-4137-9a08-97257b946089>
</CyGuid_2f73275c-45bf-46ba-b3b1-00a2fe0c8dd8>