基于视频采集卡驱动的错误修改CX26828
1、 设置root密码
command:sudo passwd root
2、查看系统状态
输入命令:lsmod
root@ubuntu:/home/yu# lsmod
iroot@yu-desktop:/home/yu# lsmod
Module Size Used by
cx26828 75734 0
videodev 86588 1 cx26828
videobuf_dma_sg 18786 1 cx26828
videobuf_core 25409 2 cx26828,videobuf_dma_sg
btcx_risc 13400 1 cx26828
nls_iso8859_1 12617 0
3、卸载cx26828
如有上述信息可以看到有cx26828,执行命令 rmmod cx26828
如运行这个命令不能卸载就关闭机器把采集卡拔掉先安装好驱动再插上
4、 安装驱动
进入驱动安装目录运行:make install
成功后运行 make load
注意这儿会出错:
使用make install时会成功:
但执行make load的时候出错误:
然后执行make也出错:
修改方法:
1、由于缺少btcx-risc.h头文件(该头文件为内核里面的找出来)
将下面代码复制到btcx-risc.h文件中
structbtcx_riscmem {
unsignedint size;
__le32 *cpu;
__le32 *jmp;
dma_addr_t dma;
};
structbtcx_skiplist {
int start;
int end;
};
int btcx_riscmem_alloc(struct pci_dev *pci,
struct btcx_riscmem *risc,
unsigned int size);
void btcx_riscmem_free(struct pci_dev *pci, structbtcx_riscmem *risc);
int btcx_screen_clips(int swidth, int sheight, structv4l2_rect *win,struct v4l2_clip *clips, unsigned int n);
int btcx_align(struct v4l2_rect *win, struct v4l2_clip*clips,unsigned int n, int mask);
voidbtcx_sort_clips(struct v4l2_clip *clips, unsigned int nclips);
void btcx_calc_skips(int line, int width, int*maxy,struct btcx_skiplist *skips, unsigned int *nskips,const struct v4l2_clip*clips, unsigned int nclips);
2、再执行make,cx26828-core.c程序出现错误
修改:
<1>去掉程序中711行的 _devinit
<2>驱动程序中793行的 _devinit
<3>注销掉878行 //.remove = __devexit_p(cx26828_finidev)
3、修改完后再make
成功编译出模块cx26828.ko文件
4、执行make install
5、执行make
6、查看是否插入到内核中lsmod
7、使用ls /dev/video+table出现