in shakti/bsp/utils/uploader/micron/deploy.c [44:119]
void deploy()
{
int ar_read,dum_data,i;
int write_address = 0x0;
int size_byte=0;
int *config_string = (const int*)0x80000000;
int* read_data = (int*)(0x90000000);
qspi_init(27,0,3,1,15,1);
waitfor(400);
if(flashMemInit())
return -1;
status=flashReadStatusRegister();
printf("\t qspi status register %08x\n",status);
if(flashWriteVolatileConfigReg(0x40404040)){
printf("\t Volatile Configuration Register not Set -- Diagnose\n");
return -1;
}
status = wait_for_wip();
printf("\t qspi write status register %08x\n",status);
for(i=0;i<= write_data[0];i+=4)
{
if(i%ERASE==0)
{
eraseSector(0x21, write_address);
}
printf("%x %x %x %x %d\n", write_data[i], write_data[i+1],
write_data[i+2], write_data[i+3], write_address);
pageProgramQuadSPI(write_data[i], write_data[i+1],
write_data[i+2], write_data[i+3],
write_address);
write_address+=16;
}
#if DEBUG
waitfor(400);
flashEnable4ByteAddressingMode();
flashQuadSPIDDRXip(0x000000, config_string);
for(i=0;i<write_data[0];++i)
{
dum_data = get_qspi_shakti(read_data);
waitfor(100);
printf("\n dum_data %x \n",dum_data);
*config_string = dum_data;
config_string++;
read_data++;
waitfor(100);
reset_interrupt_flags();
waitfor(10);
}
config_string++;
micron_disable_xip_volatile(0,0);
waitfor(400);
flashMemInit();
#endif
asm volatile ("ebreak");
}