Forums

Writing into Data Flash problem

Started by Rajarama Puranika September 16, 2003
Hello All,
I am using motorola DSP56F803
I am trying to data flash using SDK APIs as
follows:
UWord16 Digit = 0xFFFF;
FlashDevice = open(BSP_DEVICE_NAME_FLASH_X,0,NULL);
for(count=0;count < 1024 ; count++
write(FlashDevice,&Digit,1);

Even though I am disabling all the interrupts using
archDisableInt() ,The above code writing the 162 words
into flash and it is generating interrupt,which jumps
INTERRUPT_VECTOR_ADDR_1 and from there jumps to
startup: program.

Is default settings creating any problem like , I am
setting registers,
FLASH_DFIU_CKDIVISOR_VALUE 0x000F
FLASH_DFIU_TERASEL_VALUE 0x000F
FLASH_DFIU_TMEL_VALUE 0x000F
FLASH_DFIU_TNVSL_VALUE 0x00FF
FLASH_DFIU_TPGSL_VALUE 0x01FF
FLASH_DFIU_TPROGL_VALUE 0x03FF
FLASH_DFIU_TNVHL_VALUE 0x00FF
FLASH_DFIU_TNVH1L_VALUE 0x0FFF
FLASH_DFIU_TRCVL_VALUE 0x003F

Can anyone please help me in this issue.

__________________________________




Hello All,
I am using motorola DSP56F803
I am trying to data flash using SDK APIs as
follows:
UWord16 Digit = 0xFFFF;
FlashDevice = open(BSP_DEVICE_NAME_FLASH_X,0,NULL);
for(count=0;count < 1024 ; count++
write(FlashDevice,&Digit,1);

Even though I am disabling all the interrupts using
archDisableInt() ,The above code writing the 162 words
into flash and it is generating interrupt,which jumps
INTERRUPT_VECTOR_ADDR_1 and from there jumps to
startup: program.

Is default settings creating any problem like , I am
setting registers,
FLASH_DFIU_CKDIVISOR_VALUE 0x000F
FLASH_DFIU_TERASEL_VALUE 0x000F
FLASH_DFIU_TMEL_VALUE 0x000F
FLASH_DFIU_TNVSL_VALUE 0x00FF
FLASH_DFIU_TPGSL_VALUE 0x01FF
FLASH_DFIU_TPROGL_VALUE 0x03FF
FLASH_DFIU_TNVHL_VALUE 0x00FF
FLASH_DFIU_TNVH1L_VALUE 0x0FFF
FLASH_DFIU_TRCVL_VALUE 0x003F

Can anyone please help me in this issue.

Thanks ,
With Regards,
Rajaram

__________________________________



Hi Rajaram

One thing you need to do is to set the address to write to in flash.
I am not sure if this would cause your restart problem but try it.
Use this command.

uiAddress -= XFLASH_BASE; //set address to
offset from base of xFlash
ioctl(FlashDevice , FLASH_CMD_SEEK, &uiAddress); //set address for
write

Note that uiAddress is the offset from the start of Flash and not an
absolute address.

Another thing to note is that your for loop will be slow because the
driver has to erase a page of flash each time it writes one word.
(20ms + each erase and write). It would be better and faster to fill
an array and pass the pointer and size of the array.

Pete

--- In , Rajarama Puranika
<rpuranika@y...> wrote:
> Hello All,
> I am using motorola DSP56F803
> I am trying to data flash using SDK APIs as
> follows:
> UWord16 Digit = 0xFFFF;
> FlashDevice = open(BSP_DEVICE_NAME_FLASH_X,0,NULL);
> for(count=0;count < 1024 ; count++
> write(FlashDevice,&Digit,1);
>
> Even though I am disabling all the interrupts using
> archDisableInt() ,The above code writing the 162 words
> into flash and it is generating interrupt,which jumps
> INTERRUPT_VECTOR_ADDR_1 and from there jumps to
> startup: program.
>
> Is default settings creating any problem like , I am
> setting registers,
> FLASH_DFIU_CKDIVISOR_VALUE 0x000F
> FLASH_DFIU_TERASEL_VALUE 0x000F
> FLASH_DFIU_TMEL_VALUE 0x000F
> FLASH_DFIU_TNVSL_VALUE 0x00FF
> FLASH_DFIU_TPGSL_VALUE 0x01FF
> FLASH_DFIU_TPROGL_VALUE 0x03FF
> FLASH_DFIU_TNVHL_VALUE 0x00FF
> FLASH_DFIU_TNVH1L_VALUE 0x0FFF
> FLASH_DFIU_TRCVL_VALUE 0x003F
>
> Can anyone please help me in this issue.
>
> Thanks ,
> With Regards,
> Rajaram >
>
> __________________________________
>