前些时间开发海思SS928V100的视频解码功能时遇到一个问题。就是当视频解码的程序由于某些原因,包括但不限于程序异常 ,手动杀进程等等 ,异常退出了。程序重新启动无法获取到视频解码器资源,只能断电并重新通电启动主板才能重新运行程序。
经过分析,应该是程序异常退出导致占用的资料无法释放了。后来,从供应商哪里获取到新的SDK库和一个配置方法后解决。但这样毕竟感觉绕了一手,感觉有点不太踏实。
这几天有些时间,深入研究芯片的开发文档,发现其中有个应对这种情况的解决方案原文 :
2.3.3 强制销毁 VB 功能
VB在占用状态时无法被销毁,插入ssxx_base.ko时加上模块参数g_vb_force_exit=1,
即使VB正在被使用也可强制销毁,因此请谨慎使用此功能,需保证业务正常运行时不
可主动销毁VB,必须待所有业务完全退出之后才能主动销毁VB。
须知
强制销毁VB功能是为了应用程序异常崩溃之后方便业务重启而设计的:用户态应用程
序异常崩溃之后,应用程序已经无法按正常的业务退出流程操作,此时重启业务前须
先进行ss_mpi_sys_exit和ss_mpi_vb_exit把上次应用程序异常崩溃之后无法销毁的VB
资源先销毁,然后再进行正常的业务重启流程。
其中在供应商提供的解决方法的配置在 /ko/load_ss928v100 的insmod ot_base.ko配置里增加 g_vb_force_exit=1 即是出自这里。