标题:
读写SPI FLASH--应用程序部分(3)
[打印本页]
作者:
yuyang911220
时间:
2015-2-27 09:13
标题:
读写SPI FLASH--应用程序部分(3)
static int check_block(erase_block_t *block_old, erase_block_t *block_new)
{
int start_old, end_old, start_new, end_new;
if(block_old->start == -1 && block_old->end == -1) /* at the beginning */
{
start_old = -1;
end_old = -1;
}
else
{
start_old = block_old->start/SPI_SECTOR_SIZE;
end_old = block_old->end/SPI_SECTOR_SIZE;
}
start_new = block_new->start/SPI_SECTOR_SIZE;
end_new = block_new->end/SPI_SECTOR_SIZE;
if(end_new <= end_old)
{
return 0;
}
if(start_new <= end_old)
{
start_new = end_old+1;
}
block_new->start = start_new*SPI_SECTOR_SIZE;
block_new->end = (end_new+1)*SPI_SECTOR_SIZE - 1;
block_old->start = block_new->start;
block_old->end = block_new->end;
return (1);
}
ssize_t readn(int fd, void *buf, size_t n)
{
size_t nleft;
size_t nread;
char *ptr;
ptr = buf;
nleft = n;
while(nleft > 0)
{
if( (nread = read(fd, ptr, nleft)) < 0)
{
if(errno == EINTR)
{
nread = 0; /* and call read() again */
}
else
{
return (-1);
}
}
else if(nread == 0)
{
break; /* end of file */
}
nleft -= nread;
ptr += nread;
}
return(n - nleft);
}
ssize_t writen(int fd, const void *buf, size_t n)
{
size_t nleft;
ssize_t nwritten;
const char *ptr;
ptr = buf;
nleft = n;
while(nleft > 0)
{
if( (nwritten = write(fd, ptr, nleft)) < 0)
{
if(errno == EINTR)
{
nwritten = 0;
}
else
{
return (-1);
}
}
/* else if(nwritten == 0)
{
break;
} */
nleft -= nwritten;
ptr += nwritten;
}
return (n);
}
static void dbg_print(char *buf_s, char *buf_d, int cnt)
{
int i;
if(buf_s == NULL || buf_d == NULL)
{
return;
}
printf("************buf_s***********/n");
for(i = 0; i < cnt; i++)
{
printf("%c ", buf_s[i]);
if((i+1) % 16 == 0)
{
printf("/n");
}
}
printf("************buf_d***********/n");
for(i = 0; i < cnt; i++)
{
printf("%c ", buf_d[i]);
if((i+1) % 16 == 0)
{
printf("/n");
}
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0