示例#1
0
void test_ONFI_ProgramPage_ShouldWork(void)
{
    TEST_ABORT();

    unsigned const int data_bytes = kKLEN_DATA << 1;
    unsigned const int data_pack  = kNLEN_DATA << 1;

    unsigned const int aux_bytes = kKLEN_AUX << 1;
    unsigned const int aux_pack  = kNLEN_AUX << 1;

    setup_page_buff();
    setup_NFC_FTL();

	//----------------------------------------------------------------
	// Set up DMAW
	NFC_REG[NFC_DMAW_ENDCNT] = (data_bytes / 8) - 1;        // (QWORD)
	NFC_REG[NFC_H2F_ENDCNT]  = (data_bytes / 8) - 1;        // (QWORD)
	NFC_REG[NFC_AUX_ENDCNT]  = ((aux_bytes + 7) / 8) - 1;   // (2 QWORD > 6 WORD)
	//----------------------------------------------------------------
	// Enable Paths
    NFC_REG[NFC_ENABLE] |= NFC_ENABLE_DMAW | NFC_ENABLE_AUX | NFC_ENABLE_BCHE | NFC_ENABLE_H2F;    

//  Generate patterns as followed:
//      0x03020100, 0x04030201, 0x05040302, 0x0605040302...
  	for (int i = 0; i< (data_bytes / 4); i++)
  	    page_buff[i] = ((i+3)<<24)+((i+2)<<16)+((i+1)<<8)+i;

    transmit(page_buff, data_bytes);

	//----------------------------------------------------------------
	// Write and Program Flash Memory
	//----------------------------------------------------------------
	//======= WRITE DATA TO NAND CACHE (Group 1) =======
    ONFI_ProgramPage(0x001004, 0x0000);
    ONFI_dma_write((data_pack / 2), 0);

	//======= CHANGE WRITE COLUMN ADDRESS (Group 1) =======
    ONFI_ChangeWriteColumn(0x10D);
    ONFI_dma_write((aux_pack / 2), ONFI_AUX_DATA);

	//======= WRITE DATA TO NAND CACHE (Group 1) =======
    ONFI_ProgramPage_end();

	//----------------------------------------------------------------
	// Check for MUX_DONE
    do {}  while ((NFC_REG[NFC_STATE] & 0x0000ff00) != 0x100);

    TEST_ASSERT_EQUAL_UINT32(0, get_count(NFC_REG[NFC_DMAWFF_SLOT]));

	//----------------------------------------------------------------
	// Disable Paths
    NFC_REG[NFC_ENABLE] &= ~(NFC_ENABLE_DMAW | NFC_ENABLE_AUX | NFC_ENABLE_BCHE | NFC_ENABLE_H2F);
}
示例#2
0
void testProtection(void)
{
    volatile int mask = 0;

    if (TEST_PROTECT())
    {
        mask |= 1;
        TEST_ABORT();
    }
    else
    {
        Unity.CurrentTestFailed = 0;
        mask |= 2;
    }

    TEST_ASSERT_EQUAL(3, mask);
}
示例#3
0
void test_ONFI_EraseBlock_ShouldWork(void)
{
    TEST_ABORT();
    ONFI_EraseBlock(0x010200);
}