FatFs - Generic FAT Filesystem Module (elm-chan.org)?
memcpy函数的作用:
void *memcpy(void *destin, void *source, unsigned n);
以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中。
函数有三个参数,第一个是目标地址,第二个是源地址,第三个是数据长度。
memcpy(0x3000000,0x2000000,1920*1080*4);
int savebmpimg(BITMAPFILEHEADER fileh,BITMAPINFOHEADER infoh,char * filename,u8 *imgsrc){
FATFS fatfs; //file system object
TCHAR *path="0:/";
FRESULT res;
FIL fil;
UINT numbytewrite;
res=f_mount(&fatfs,path,0);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_open(&fil,(TCHAR *)filename,FA_WRITE|FA_CREATE_ALWAYS);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_lseek(&fil,0);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_write(&fil,&fileh,sizeof(BITMAPFILEHEADER),&numbytewrite);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_write(&fil,&infoh,sizeof(BITMAPINFOHEADER),&numbytewrite);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_write(&fil,imgsrc,1920*1080*3+256,&numbytewrite);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_sync(&fil);
if(res==!FR_OK){
return XST_FAILURE;
}
res=f_close(&fil);
if(res==!FR_OK){
return XST_FAILURE;
}
}
一下代码的作用是:原本数据是{FF,R,G,B},最高位的ff是不需要的,BMP格式不需要最高位的ff,通过这个函数将高8位的ff舍弃掉。?
int ffrgbtorgb(u8* ffrgb ,u8 *rgb){
int i;
for(i=0;i<1920*1080*4;i++){
if(i%4!=3){
*rgb = *ffrgb;
rgb++;
ffrgb++;
}
else{
ffrgb++;
}
}
}
以下代码是将结构体赋值,主要是为了BMP数据head
BITMAPFILEHEADER filh;
BITMAPINFOHEADER infh;
filh.bfOffBits = 54;
filh.bfReserved1 =0;
filh.bfReserved2 =0;
filh.bfSize = 54 + 1920*1080*3;
filh.bfType = 0x4d42;
infh.biBitCount = 24;
infh.biClrImportant = 0;
infh.biClrUsed=0;
infh.biCompression =0;
infh.biHeight=1080;
infh.biPlanes=1;
infh.biSize=40;
infh.biSizeImage=1920*1080*3;
infh.biWidth=1920;
infh.biXPelsPerMeter=0;
infh.biYPelsPerMeter=0;