Unable to wake up A core after wake word detection - iMX8ULP-EVK9

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Unable to wake up A core after wake word detection - iMX8ULP-EVK9

602件の閲覧回数
dhruvinrajpura
Contributor III

Hi,

I am using iMX8ULP and flashed voice_spot_demo code and after that when I speak "Hey NXP" it is detecting successfully and giving below result

Trigger event found: Event = 0, Frame = 644, class_string = HeyNXP, Score = 48, trigger_sample = 129000, estimation_sample = 129000, start_offset_sa

 

My purpose is when A core is in deep sleep with
echo mem > /sys/power/state,
and when I say hey nxp it should detect and wake up A core, but in this code it is not available, how can I add that mechanism?

ラベル(1)
0 件の賞賛
返信
3 返答(返信)

574件の閲覧回数
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hello,

You can port the wakup A35 function in power_mode_switch demo.

Best Regards,
Zhiming

0 件の賞賛
返信

543件の閲覧回数
dhruvinrajpura
Contributor III

@Zhiming_Liu 

I am attaching voice spot zip here where I ported wakeup function, but when I bootup A core and put into sleep and than when I speak Hey NXP it is not waking up and getting stuck in that func

Can you check if I missed any initialization?

0 件の賞賛
返信

559件の閲覧回数
dhruvinrajpura
Contributor III

Thanks @Zhiming_Liu 

power_mode_demo contain so many things in itself, what exactly I need to port to run wake up func in my code?
In hardware init of power mode demo it is using almost every module so to wake up A core can you tell me which things should I pick up?

BOARD_InitLpuartPins();
    BOARD_InitI2cPins();
    BOARD_InitPmicI2cPins();
    BOARD_InitI2sPins();
    BOARD_InitTpmPins();
    BOARD_InitHdmiIntPins();
    BOARD_InitTouchIntPins();
    BOARD_InitButtonPins();
    BOARD_InitPmicModePins();
    BOARD_InitLsm6dsoPins();
    BOARD_InitPdmPins();

 UPOWER_PowerOnMemPart(0U, (uint32_t)kUPOWER_MP1_DMA0);

    CLOCK_SetIpSrcDiv(kCLOCK_Tpm0, kCLOCK_Pcc1BusIpSrcCm33Bus, 1U, 0U);
    CLOCK_SetIpSrcDiv(kCLOCK_Lpi2c0, kCLOCK_Pcc1BusIpSrcCm33Bus, 0U, 0U);
    CLOCK_SetIpSrcDiv(kCLOCK_Lpi2c1, kCLOCK_Pcc1BusIpSrcCm33Bus, 0U, 0U);
    /* Use Pll1Pfd2Div clock source 12.288MHz. */
    CLOCK_SetIpSrc(kCLOCK_Sai0, kCLOCK_Cm33SaiClkSrcPll1Pfd2Div);

    CLOCK_EnableClock(kCLOCK_Dma0Ch0);
    CLOCK_EnableClock(kCLOCK_Dma0Ch16);
    CLOCK_EnableClock(kCLOCK_Dma0Ch17);
    CLOCK_EnableClock(kCLOCK_RgpioA);
    CLOCK_EnableClock(kCLOCK_RgpioB);
    CLOCK_EnableClock(kCLOCK_Wuu0);
    CLOCK_EnableClock(kCLOCK_Bbnsm);

    RESET_PeripheralReset(kRESET_Sai0);
    RESET_PeripheralReset(kRESET_Lpi2c0);
    RESET_PeripheralReset(kRESET_Lpi2c1);
    RESET_PeripheralReset(kRESET_Tpm0);

    /* In order to enable the PDM record service located in FUSION_AO, FUSION needs to be initial. */
    Fusion_Init();

    APP_SRTM_Init();

    /* If RTD reset is due to DPD exit, should go different flow here */
    if (CMC_RTD->SSRS & CMC_SSRS_WAKEUP_MASK)
    {
        CMC_RTD->SSRS = CMC_SSRS_WAKEUP_MASK;
        /* Assume that Application Domain is entered Deep Power Down Mode */
        AD_CurrentMode = AD_DPD;
        /*
         * AD is also in Deep Power Down mode when RTD is in Deep Power Down Mode.
         * AD/RTD exiting from Deep Power Down Mode is same with cold boot flow.
         * So don't need setup TRDC when RTD exit from Deep Power Down mode.
         *
         */
        // BOARD_SetTrdcAfterApdReset();
        MU_Init(MU0_MUA);
        MU_BootOtherCore(MU0_MUA, (mu_core_boot_mode_t)0);
    }
    else
    {
        APP_SRTM_StartCommunication();
    }
0 件の賞賛
返信