Пример #1
0
static void defaultOnRead(struct BufferEvent* bevent, void* arg)
{
	assert(bevent != NULL);

	bufferSwap(bevent->input, bevent->output);
	enableWrite(bevent);
}
Пример #2
0
void flash25spi::clearMem() {
    enableWrite();
    _enable->write(0);
    wait_us(1);
    _spi->write(0xc7);
    wait_us(1);
    _enable->write(1);
    waitForWrite();
}
Пример #3
0
void main(){
  int i;
  uint16 data0 = 0x0000;
  uint16 data1 = 0x1000;
  uint16 data2 = 0x2000;
  uint16 data3 = 0x3000;
  uint16 data4 = 0x1000;
  uint16 data5 = 0x5000;
  uint32 address = 0x000000;
  uint16 blockRead[32];
  uint16 blockWrite0[16];
  uint16 blockWrite1[16];
  uint16 blockWrite2[16];
  uint16 blockWrite3[16];
  uint16 blockWrite5[64];
  uint16 incomingData[4];

  for(i = 0 ; i < 16 ; i++){
      blockWrite0[i] = data0;
      data0++;
  }
  for(i = 0 ; i < 16 ; i++){
      blockWrite1[i] = data1;
      data1++;
  }

  for(i = 0 ; i < 16 ; i++){
      blockWrite2[i] = data2;
      data2++;
  }
  for(i = 0 ; i < 16 ; i++){
      blockWrite3[i] = data3;
      data3++;
  }
  for(i = 0 ; i < 64 ; i++){
      blockWrite5[i] = data5;
      data5++;
  }

  trisInit();
  enter_HVP();
  
  bulkErase();
  enableWrite();
 
  flashWriteBlock(blockWrite0, blockWrite1, 1);
  flashWriteBlock(blockWrite2, blockWrite3, 2);
  flashReadBlock(blockRead, 64, 1);
  flashReadBlock(blockRead, 64, 2);
  flashWriteData(blockWrite5, 64, 0);
  flashReadBlock(blockRead, 64, 1);
  flashReadBlock(blockRead, 64, 2);
  exit_HVP();

  while(1){}
}
Пример #4
0
void MiniProgrammerUI::setFileAndTime(const QString &file, const QDateTime &time)
{
    enableWrite(true);

    ui->loadBtn->setToolTip(file);

    QString str = time.toString(tr("h:mm:ss M.d.yyyy"));
    ui->filedate->setText(str);
    ui->filedate->setToolTip("Changed on " + str);
}
Пример #5
0
void flash25spi::clearBlock(unsigned int addr) {
    addr &= ~(_blockSize-1);
 
    enableWrite();
    _enable->write(0);
    wait_us(1);
    _spi->write(0xd8);
    _spi->write(HIGH(addr));
    _spi->write(MID(addr));
    _spi->write(LOW(addr));
    wait_us(1);
    _enable->write(1);
    waitForWrite();
}
Пример #6
0
void flash25spi::clearSector(unsigned int addr) {
    if (_sectorSize == 0) {
        clearBlock(addr);
        return;
    }
        
    addr &= ~(_sectorSize-1);
 
    enableWrite();
    _enable->write(0);
    wait_us(1);
    _spi->write(0x20);
    _spi->write(HIGH(addr));
    _spi->write(MID(addr));
    _spi->write(LOW(addr));
    wait_us(1);
    _enable->write(1);
    waitForWrite();
}
Пример #7
0
/*
 * �������ݿ�д��ʱ��Transport����
 *
 * @return �Ƿ��ɹ�, true - �ɹ�, false - ʧ�ܡ�
 */
bool TCPComponent::handleWriteEvent() {
    _lastUseTime = tbsys::CTimeUtil::getTime();
    bool rc = true;
    if (_state == TBNET_CONNECTED) {
        rc = _connection->writeData();
    } else if (_state == TBNET_CONNECTING) {
        int error = _socket->getSoError();
        if (error == 0) {
            enableWrite(true);
            _connection->clearOutputBuffer();
            _state = TBNET_CONNECTED;
        } else {
            TBSYS_LOG(ERROR, "���ӵ� %s ʧ��: %s(%d)", _socket->getAddr().c_str(), strerror(error), error);
            if (_socketEvent) {
                _socketEvent->removeEvent(_socket);
            }
            _socket->close();
            _state = TBNET_CLOSED;
        }
    }
    return rc;
}
Пример #8
0
usbMsgLen_t erasePage(uint8_t page) {
    if (page > 31) {
        return 0;
    }

    if (!waitForReady()) {
        return 0;
    }

    if (!enableWrite()) {
        return 0;
    }

    spiEnable();
    spiReadWriteByte(SPICMD_ERASEPAGE);
    spiReadWriteByte(page);
    spiDisable();

    waitWenIsCleared();

    return 0;
}
Пример #9
0
bool flash25spi::writePage(unsigned int startAdr, unsigned int len, const char* data) {
    enableWrite();
 
    _enable->write(0);
    wait_us(1);
 
    _spi->write(0x02);
    _spi->write(HIGH(startAdr));
    _spi->write(MID(startAdr));
    _spi->write(LOW(startAdr));
 
    // do real write
    for (unsigned int i=0;i<len;i++) {
        _spi->write(data[i]);
    }
    wait_us(1);
    // disable to start physical write
    _enable->write(1);
    
    waitForWrite();
 
    return true;
}
Пример #10
0
uint8_t usbFunctionWrite(uint8_t *data, uint8_t len) {
    uint8_t i;
    uint16_t startAddr;

    if (reading) {
        return 1;
    }

    if (len > writeBytesRemaining) {
        len = writeBytesRemaining;
    }

    if (wrote == 0) {
        if (!enableWrite()) {
            return 0;
        }

        spiEnable();
        spiReadWriteByte(SPICMD_ERASEPAGE);
        spiReadWriteByte(currentPage);
        spiDisable();

        // wait WEN flag is cleared and flash is ready
        if (!waitWenIsCleared()) {
            return 0;
        }

        // enable WEN flag
        if (!enableWrite()) {
            return 0;
        }

        startAddr = currentPage * 512;

        // start writing
        spiEnable();
        spiReadWriteByte(SPICMD_PROGRAM);
        spiReadWriteByte(startAddr >> 8);
        spiReadWriteByte(startAddr);
    }

    for (i = 0; i < len; i++) {
        spiReadWriteByte(data[i]);
        wrote++;
    }

    writeBytesRemaining -= len;

    if (wrote == 512 || writeBytesRemaining == 0) {
        wrote = 0;
        spiDisable();
        waitWenIsCleared();

        ++currentPage;
    }

    if (writeBytesRemaining == 0) {
        return 1;
    }

    return 0;
}