The V2FStatusCheckAsync() function back status is 0x1FF01

Post Reply
shengwenLiang
Posts: 36
Joined: Thu Jul 06, 2017 12:57 pm

The V2FStatusCheckAsync() function back status is 0x1FF01

Post by shengwenLiang » Fri Jun 01, 2018 2:09 am

Hi,
Recently, i test fimeware in linux system, and modify the fmc_driver.c using mmap to map Tiger4NSC IP register to dram. then write register content to control then IP. example:
void __attribute__((optimize("O0"))) V2FStatusCheckAsync(V2FMCRegisters* dev, int way, unsigned int* statusReport)
{
*((volatile unsigned long*)(ChCtlReg_0+0x0000001C)) = way;
*((volatile unsigned int*)(ChCtlReg_0+0x00000018)) = (unsigned int)statusReport;
*((volatile unsigned long*)(ChCtlReg_0+0x00000000)) = V2FCommand_StatusCheck;
}


when I run my project in Linux system. the reset and set features already successfully. then I go to block erase operation. after erase command send to it, I send V2FCommand_StatusCheck command and get the 0x1ff01 status value. However, In the bare-metal project, the value is 0x1ffc1, so when I run Linux system. the IP operate fail;
I don't know why the status values differently. could you give me some advice?

code:
init_map();
LRUBufInit();
InitChCtlReg();
InitDieReqQueue();
InitDieStatusTable();
int chNo,wayNo;
for(chNo=0; chNo<CHANNEL_NUM; ++chNo)
for(wayNo=0; wayNo<WAY_NUM; ++wayNo)
{
V2FResetSync(chCtlReg[chNo], wayNo);
}
for(chNo=0; chNo<CHANNEL_NUM; ++chNo)
for(wayNo=0; wayNo<WAY_NUM; ++wayNo)
{
V2FEnterToggleMode(chCtlReg[chNo], wayNo);
}
V2FEraseBlockAsync(chCtlReg[0], 0, 0);
unsigned int error;
unsigned int statusReport;
unsigned int* statusReportPtr;
statusReportPtr = &completeTable->completeEntry[0][7];
printf("statusReportPtr address=%02x\n",statusReportPtr);
unsigned int physic_address = ((statusReportPtr - &completeTable->completeEntry[0][0])*4 + 0x32300000);
printf("physic_address=%02x\n",physic_address);
V2FStatusCheckAsync(chCtlReg[0], 0, physic_address);

KibinPark
Posts: 39
Joined: Thu Mar 30, 2017 9:25 am

Re: The V2FStatusCheckAsync() function back status is 0x1FF01

Post by KibinPark » Fri Jun 01, 2018 10:34 am

You might need to check V2FIsControllerBusy before you issue a command.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest