在每次初始化VB前,都会去先初始化MPP系统,再去初始化VB
1 HI_MPI_SYS_Exit(); 2 HI_MPI_VB_Exit();
但是去初始化不会清楚先前对缓存池的设置,且若有VB被占用,去初始化就会失败
1 HI_MPI_VB_SetConf failed with 0xa0018012! //系统忙
查看/dev/logmpp, 确实有VB被占用,没有被释放。
1 <3>[ vb] [Func]:vb_set_config [Line]:1719 [Info]:VB is initialized! 2 <3>[ vb] [Func]:destroy_pool [Line]:465 [Info]:blk in this pool(6) occupied by someone, please release first! 3 <3>[ vb] [Func]:destroy_pool [Line]:465 [Info]:blk in this pool(6) occupied by someone, please release first!
方法有二:
1. 找到VB被占用,程序退出时VB没有释放的原因
2. 在程序退出时,由系统强制销毁VB(插入 hi35xx_base.ko 时加上模块参数 vb_force_exit=1)
在程序运行时,查看pool(6),cat proc/umap/vb ,发现pool(6)是AI模块使用的,所以定位到Ai,可能是由于用户手动获取Frame, 程序退出时,没能手动释放Frame,
导致AI占用的VB未能回收导致的。
写测试程序验证,的确是这个原因。