OpenCores
URL https://opencores.org/ocsvn/qspiflash/qspiflash/trunk

Subversion Repositories qspiflash

[/] [qspiflash/] [trunk/] [bench/] [cpp/] [qspiflashsim.cpp] - Diff between revs 8 and 9

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 8 Rev 9
Line 79... Line 79...
        m_mode_byte = 0;
        m_mode_byte = 0;
 
 
        memset(m_mem, 0x0ff, MEMBYTES);
        memset(m_mem, 0x0ff, MEMBYTES);
}
}
 
 
void    QSPIFLASHSIM::load(const char *fname) {
void    QSPIFLASHSIM::load(const unsigned addr, const char *fname) {
        FILE    *fp;
        FILE    *fp;
        int     nr = 0;
        size_t  len;
 
 
 
        if (addr >= MEMBYTES)
 
                return;
 
        len = MEMBYTES-addr*4;
 
 
        if (NULL != (fp = fopen(fname, "r"))) {
        if (NULL != (fp = fopen(fname, "r"))) {
                nr = fread(m_mem, sizeof(char), MEMBYTES, fp);
                int     nr = 0;
 
                nr = fread(&m_mem[addr], sizeof(char), len, fp);
                fclose(fp);
                fclose(fp);
 
                if (nr == 0) {
 
                        fprintf(stderr, "SPI-FLASH: Could not read %s\n", fname);
 
                        perror("O/S Err:");
 
                }
        } else {
        } else {
                fprintf(stderr, "SPI-FLASH: Could not open %s\n", fname);
                fprintf(stderr, "SPI-FLASH: Could not open %s\n", fname);
                perror("O/S Err:");
                perror("O/S Err:");
        }
        }
 
 
        for(int i=nr; i<MEMBYTES; i++)
 
                m_mem[i] = 0x0ff;
 
}
}
 
 
#define QOREG(A)        m_oreg = ((m_oreg & (~0x0ff))|(A&0x0ff))
#define QOREG(A)        m_oreg = ((m_oreg & (~0x0ff))|(A&0x0ff))
 
 
int     QSPIFLASHSIM::operator()(const int csn, const int sck, const int dat) {
int     QSPIFLASHSIM::operator()(const int csn, const int sck, const int dat) {
Line 383... Line 389...
                                m_addr = m_ireg & 0x0ffffff;
                                m_addr = m_ireg & 0x0ffffff;
                                if (m_debug) printf("FAST READ, ADDR = %08x\n", m_addr);
                                if (m_debug) printf("FAST READ, ADDR = %08x\n", m_addr);
                                QOREG(0x0c3);
                                QOREG(0x0c3);
                                assert((m_addr & 0xfc00000)==0);
                                assert((m_addr & 0xfc00000)==0);
                        } else if ((m_count >= 40)&&(0 == (m_sreg&0x01))) {
                        } else if ((m_count >= 40)&&(0 == (m_sreg&0x01))) {
                                if (m_count == 40)
                                //if (m_count == 40)
                                        printf("DUMMY BYTE COMPLETE ...\n");
                                        //printf("DUMMY BYTE COMPLETE ...\n");
                                QOREG(m_mem[m_addr++]);
                                QOREG(m_mem[m_addr++]);
                                // if (m_debug) printf("SPIF[%08x] = %02x\n", m_addr-1, m_oreg);
                                // if (m_debug) printf("SPIF[%08x] = %02x\n", m_addr-1, m_oreg);
                        } else m_oreg = 0;
                        } else m_oreg = 0;
                        break;
                        break;
                case QSPIF_QUAD_READ_CMD:
                case QSPIF_QUAD_READ_CMD:

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.