页次: 1
楼主好,看了下https://github.com/jemk/cedrus.git是基于linux系统的,也即在linux加载了cedar驱动节点后,使用mmap得到VE的寄存器基址,再去操作寄存器的。也就是在cedar驱动已经预先初始化好VE,请问裸机上应该如何初始化VE和注册解码完成中断呢?因为我看到好几处地方用到了ioctl,譬如
ioctl(ve.fd, IOCTL_ENGINE_REQ, 0);
ioctl(ve.fd, IOCTL_ENABLE_VE, 0);
ioctl(ve.fd, IOCTL_SET_VE_FREQ, 320);
ioctl(ve.fd, IOCTL_RESET_VE, 0);
ve_wait(1);等等
结合论坛其他大神的cedar驱动https://github.com/aodzip/cedar/来看,这些ioctl就是初始化和中断处理相关的,我有点感兴趣如何在裸机上实现。只要知道如何初始化了VE控制器(如VE IP核的时钟使能、中断注册、初始化配置等),再按照第一个github的linux app工程应该就可以移植到裸机上实现jpeg和h.264硬解码了。
厉害。不知能否移植到裸机程序上,linux启动速度慢,裸机跑jpeg和h.264解码就爽了。
貌似有大神逆向工程制作出“Video Engine Registers”
https://linux-sunxi.org/VE_Register_guide
页次: 1