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); }
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); }
void test_ONFI_EraseBlock_ShouldWork(void) { TEST_ABORT(); ONFI_EraseBlock(0x010200); }