Цитата(aaarrr @ Aug 30 2012, 10:21)
Порядок включения описан в разделе "DSP Wake Up" sprugm7. Но виснуть при обращении к PSC всяко не должен.
По мануалу:
Perform the following steps to wake up the DSP:
1. Write a 83E7 0B13h to the KICK0R register in the SYSCFG module.
2. Write a 95A4 F1E0h to the KICK1R register in the SYSCFG module.
3. Write the truncated DSP boot address vector to the DSP_ISTP_RST_VAL field in the host 1
configuration register (HOST1CFG) of the SYSCFG module. The least-significant bits of the boot
address are fixed at 0.
4. Write a 3h to the NEXT bit in the DSP local power sleep controller (LPSC) module control register
(PSC0.MDCTL15) to prepare the DSP module for an enable transition (to enable the clocks and all
transitioning from the SwRstDisable state to Enable state).
5. Write a 1 to the GO[1] bit (DSP subsystem is part of the PD_DSP domain) in the power domain
transition command register (PSC0.PTCMD) to start the state transition sequence for the DSP module.
6. Check (poll for 0) the GOSTAT[1] bit in the power domain transition status register (PSC0.PTSTAT) for
power transition sequence completion. The domain is only safely in the new state after the GOSTAT[1]
bit is cleared to 0.
7. Wait for the STATE bit field in the DSP LPSC module status register (PSC0.MDSTAT15) to change to
3h. The module is only safely in the new state after the STATE bit field changes to reflect the new
state.
8. Write a 1 to the LRST bit in PSC0.MDCTL15 to release the DSP local reset controlled by the PSC
module.
Выполняю следующее:
Код
HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK0R) = 0x83e70b13;
HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_KICK1R) = 0x95a4f1e0;
//Включение DSP
HWREG (SOC_SYSCFG_0_REGS + SYSCFG0_HOST1CFG) = 0x00E00000;
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_PTCMD_GO1);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_PTSTAT_GOSTAT1_SHIFT);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_STATE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_LRST);
И на строке
Код
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_DSP, PSC_POWERDOMAIN_PD_DSP, PSC_MDSTAT_STATE);
Выполнение программы подвисает. Что делаю не так?