zedboard文件系统
制作利用ramdisk,可参考参考文档
学习了把生成的uramdisk.image.gz解压出来:
由于有64K头,所以先删除头
dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1
生成ramdisk的压缩包,然后对其进行解压缩
gunzip ramdisk.iamage.gz
得到文件系统,然后挂载
mkdir tmp_mnt/
sudo mount -o loop ramdisk.image tmp_mnt/
使用完后
sudo umount tmp_mnt/
然后压缩
gzip arm_ramdisk.image
mkimage -A arm -T ramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz
Ioctl函数的使用:
https://blog.csdn.net/zifehng/article/details/59576539
中较为详细清楚
我所理解的关键:
1静态结构
file_operations
对其的定义,涉及到了相关的初始释放,读写控制
混杂设备结构
miscdevice
暂不清楚作用,帖子中没有介绍
2,mmap对物理地址到虚拟地址的映射
考虑到linux操作系统对内存的管理
mmap(VIDEO_BASEADDR0,pix_size*3,PROT_READ,MAP_SHARED,my_vdma_fd,0)
u8 pix[pix_size*3];
u8 *p_pix =NULL;
p_pix = (u8 *)calloc(1,pix_size*3);
int my_vdma_fd;
my_vdma_fd = open("/dev/mem", 0);
if(my_vdma_fd < 0)
{
printf("vdma:[ERROR] Can't open device.");
return;
}
u8 *p;
p = (u8 *)mmap(0,pix_size,PROT_READ,MAP_SHARED,my_vdma_fd,VIDEO_BASEADDR0);
if(p == (void *)-1)
{
printf("zhizhenshibai/n");
return 0;
}