| @@ -111,6 +111,7 @@ int writePage(int page) | |||||
| uint32_t offset = ((page&0xf)<<11) + Pages[page].minoffset; | uint32_t offset = ((page&0xf)<<11) + Pages[page].minoffset; | ||||
| uint32_t len = Pages[page].maxoffset-Pages[page].minoffset+1; | uint32_t len = Pages[page].maxoffset-Pages[page].minoffset+1; | ||||
| if(len&0xf) len= (len&0x7f0)+16; | |||||
| // configure DMA-0 pour DEBUG --> RAM | // configure DMA-0 pour DEBUG --> RAM | ||||
| uint8_t dma_desc0[8]; | uint8_t dma_desc0[8]; | ||||
| dma_desc0[0] = 0x62;// src[15:8] | dma_desc0[0] = 0x62;// src[15:8] | ||||
| @@ -279,12 +280,12 @@ int main(int argc,char **argv) | |||||
| int page= (sla+addr)>>11; | int page= (sla+addr)>>11; | ||||
| if (page>maxpage) maxpage=page; | if (page>maxpage) maxpage=page; | ||||
| uint16_t start=(sla+addr)&0x7ff; | uint16_t start=(sla+addr)&0x7ff; | ||||
| if(start+len> 2048) | |||||
| { | |||||
| if(start+len> 2048) // some datas are for next page | |||||
| { //copy end of datas to next page | |||||
| if (page+1>maxpage) maxpage=page+1; | if (page+1>maxpage) maxpage=page+1; | ||||
| memcpy(&Pages[page+1].datas[0] | memcpy(&Pages[page+1].datas[0] | ||||
| ,data,(start+len-2048)); | |||||
| if(0 < Pages[page].minoffset) Pages[page].minoffset=0; | |||||
| ,data+2048-start,(start+len-2048)); | |||||
| if(0 < Pages[page+1].minoffset) Pages[page+1].minoffset=0; | |||||
| if( (start+len-2048-1) > Pages[page].maxoffset) Pages[page].maxoffset=start+len-2048-1; | if( (start+len-2048-1) > Pages[page].maxoffset) Pages[page].maxoffset=start+len-2048-1; | ||||
| len=2048-start; | len=2048-start; | ||||
| } | } | ||||