查看: 1208|回复: 3

[原创] VIZNAS实战开发2-elock_oobe工程介绍

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20033
最后登录
2024-4-26
发表于 2021-9-23 17:54:26 | 显示全部楼层 |阅读模式

《VIZNAS实战开发(1)—背景知识和准备工作介绍》中,小编介绍了SLN-VIZNAS-IOT[1]的开发环境搭建过程,需要我们到NXP官网下载SLN-VIZNAS-IOT对应的SDK 软件包,SLN-VIZNAS-IOT板上的HyperFlash默认已烧录软件包中的sln_viznas_iot_elock_oobe工程,如果小伙伴手上有板子的话,请参考Get Started with the SLN-VIZNAS-IOT[2]实际体验一把基于i.MX RT的人脸识别方案的各个功能特性,在这小编就不做过多介绍了。

sln_viznas_iot_elock_oobe工程

sln_viznas_iot_elock_oobe工程为SLN-VIZNAS-IOT上的Application(如下图所示,至于软件流程图中的Bootstrap和Bootloader,留在以后的文章中介绍)。 我们的实战开发工作就是在sln_viznas_iot_elock_oobe工程基础上做的,不过在此之前,我们需要了解此工程的软件流程。

Boot Security Flow Chart.png

图1 SLN-VIZNAS-IOT软件流程框图

软件流程

由于sln_viznas_iot_elock_oobe工程代码甚是复杂,很难用文字或图形完整的描述出其完整的工作流程,所以小编先简略的描述其整体工作流程,细节部分在碰到时再详细介绍。

1)在Camera_Start()函数里,任务(Camera_Init_Task)完成RGB和IR摄像的头初始化工作后,随后创建任务(Camera_Task);

2)在Display_Start()函数里,任务(Display_Init_Task)完成显示媒介(USB或者LCD)初始化工作后,紧跟着创建任务(Display_Task),并发送消息队列s_DisplayReqMsg.id = QMSG_DISPLAY_FRAME_REQ给任务(Camera_Task),使得pDispData 指向s_BufferLcd[0]数组用于存储要显示的图像数据;

3)在Oasis_Start()函数里,首先,OASISLT_init()完成OAISIT库初始化工作,随后创建任务(Oasis_Task),发送消息队列gFaceDetReqMsg.id = QMSG_FACEREC_FRAME_REQ和列gFaceInfoMsg.id = QMSG_FACEREC_INFO_UPDATE到任务(Camera_Task),使得指针pDetIR和pDetRGB指向RGB和IR摄像头捕捉到的人脸框图图像,并将更新infoMsgIn指向的内容。

4)摄像头在初始化后,RGB摄像头首先工作,在图像数据采样完成后,触发中断并在回调函数Camera_Callback()发送消息队列DQMsg.id = QMSG_CAMERA_DQ给任务(Camera_Task),同时DQIndex++;

5)CAMERA_RECEIVER_GetFullBuffer()提取RGB摄像头采集的图像数据,发送消息队列DPxpMsg.id = QMSG_PXP_DISPLAY给APP_PXP_Start()函数里创建的任务(PXP_Task)并将EQIndex++,同时切换IR摄像头工作。 任务(PXP_Task)内的APP_PXPStartCamera2Display()函数处理完后,发送消息队列s_DResMsg.id = QMSG_PXP_DISPLAY给任务(Camera_Task),而任务(Camera_Task)在收到上述消息队列后,发送消息队列DResMsg.id = QMSG_DISPLAY_FRAME_RES给任务(Display_Task)进行显示,同时任务(Display_Task)发送消息队列s_DisplayReqMsg.id = QMSG_DISPLAY_FRAME_REQ使得pDispData指向s_BufferLcd[1]数组;

6)IR摄像头工作后,CAMERA_RECEIVER_GetFullBuffer()提取IR摄像头采集的图像数据,发送消息队列DPxpMsg.id = QMSG_PXP_DISPLAY给APP_PXP_Start()函数里创建的任务(PXP_Task)并将EQIndex++和切换RGB摄像头工作,随后重复步骤5,最后发送消息队列FPxpMsg.id = QMSG_PXP_FACEREC给任务(PXP_Task)和设置irReady = true,任务(PXP_Task)收到上述消息队列后,调用APP_PXPStartCamera2DetBuf()并在处理完成后,发送消息队列s_FResMsg.id = QMSG_PXP_FACEREC给任务(Camera_Task);

7)CAMERA_RECEIVER_GetFullBuffer()再次提取RGB摄像头采集的图像数据,重复步骤5外,(pDetRGB && irReady)条件满足,发送消息队列FPxpMsg.id = QMSG_PXP_FACEREC给任务(PXP_Task)和设置irReady = false,pDetRGB = NULL,pDetIR = NULL。任务(PXP_Task)收到上述消息队列后,调用APP_PXPStartCamera2DetBuf()并在处理完成后,发送消息队列s_FResMsg.id = QMSG_PXP_FACEREC给任务(Camera_Task),此时,(!pDetIR && !pDetRGB)条件满足,发送消息队列FResMsg.id = QMSG_FACEREC_FRAME_RES到任务(Oasis_Task),运行OASISLT_run_extend进行人脸识别运算,运算完成后发送消息队列gFaceDetReqMsg.id = QMSG_FACEREC_FRAME_REQ到任务(Camera_Task),使得指针pDetIR和pDetRGB重新指向RGB和IR摄像头捕捉人脸框图图像。

8)不断重复步骤6和7;

流程图太大了,无法直接上传,所以以附件的形式上传。

sln_viznas_iot_elock_oobe flow.zip (979.8 KB, 下载次数: 5)

回复

使用道具 举报

  • TA的每日心情
    开心
    昨天 16:21
  • 签到天数: 146 天

    [LV.7]常住居民III

    10

    主题

    385

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1264
    最后登录
    2024-4-26
    发表于 2021-9-24 09:01:17 | 显示全部楼层
    太赞了。。。。。
    加油加油
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:53
  • 签到天数: 1479 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92702
    最后登录
    2024-4-26
    发表于 2021-9-25 14:35:01 | 显示全部楼层
    厉害,不过要看到最后的效果还得慢慢等待了 3.png 2.png 1.png 6.png 9.png 7.png 4.png 5.png 8.png 10.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20033
    最后登录
    2024-4-26
     楼主| 发表于 2021-9-26 10:29:28 | 显示全部楼层
    stm1024 发表于 2021-9-25 14:35
    厉害,不过要看到最后的效果还得慢慢等待了

    正在码字,代码是跑通了的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 05:42 , Processed in 0.123365 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表