M-HT
Very Active Member
Well, it must be filled if you want to execute meaningful code.No, as far as the 'must be filled' part of your statement is concerned.No it doesn't. According to spruf98x.pdf section 14.4.2, after reset it starts executing instructions in the ICTM sequencer memory (which must be filled before the reset by DSP or GPP)
The boot sequence is (can be) like this:First IVA2.2 is released from reset (bit 1 of PRCM.RM_RSTCTRL_IVA2), then you can upload code/data to DSP memories, then DSP is release from reset (bit 0 of PRCM.RM_RSTCTRL_IVA2), then you can upload code/data to sequencer, then sequencer is released from reset (bit 2 of PRCM.RM_RSTCTRL_IVA2).The section you mentioned states that
If releasing the DSP from reset causes the video sequencer to immediately execute (arbitrary?) code, how is this all going to work when the DSP is supposed to be the one programming that 'sequencer' in the first place ?1. The DSP initializes the ITCM sequencer memory with sequencer code.
2. The DSP initializes the DTCM sequencer memory with sequencer data.
3. The DSP sets the clock divider for the sequencer module in the IVA.VIDEOSYSC_CLKDIV register.
4. The DSP releases the sequencer from reset by clearing the PRCM.RM_RSTCTRL_IVA2[2] RST3_IVA2 bit.
[..]
The DSP and the sequencer processor communicate through a message box; two interrupts are provided for this purpose.
At least according to section 14.2.1.2.1 which states (among other information):
After chip power on, the IVA2.2 subsystem is kept under reset and only the RET_RST is released from
reset. Then, only the WUGEN is released from reset as part of the core domain. The IVA2.2 remains
under reset until the microprocessor unit (MPU) clears the PRCM.RM_RSTCTRL_IVA2[1] RST2_IVA2 bit.
On this action, the PRCM switches on the IVA2.2 power domain, sets the clocks back, and releases the
power-on reset. When the IVA2.2 power-on sequence completes (hardware handshake), the PRCM
releases the IVA2_RST2 reset. At this stage, the DSP megamodule is kept under reset (unless the MPU
also cleared the PRCM.RM_RSTCTRL_IVA2[0] RST1_IVA2 bit); the MPU can upload some code and
data in the C64x+ memory. When the MPU has uploaded the code in the C64x+ memory, the MPU clears
the RST1_IVA2 bit, releasing the DSP megamodule from reset. At this point, the sequencer is kept under
reset (unless the PRCM.RM_RSTCTRL_IVA2[2] RST3_IVA2 bit was cleared); the DSP can upload some
code and data in the sequencer memory. When the DSP has uploaded the coded in the sequencer
memory, the DSP clears the RST3_IVA2 bit, releasing the sequencer from reset.
I wasn't calling 'fairly good documentation' just this one section. Information about the sequencer are also in other sections.Besides, you don't want to seriously call this 'fairly good documentation' ? It's just a few lines of text.
It works through two interrupts mentioned in sections 14.3.4.2 and 14.3.4.3.Data and instructions can be copied from the DSP using EDMA or using EFI (Extended Function Interface). From the CPU the sequencer memories are accessible directly.There's no info how that 'message box' communication between DSP and video sequencer actually works (one can only guess that the instruction/data memories are copied that way).
Sequencer memory mapping is described in sections 14.3.4.8 and 14.3.8.EDMA view of sequencer is described in section 14.3.2.2.There's also no memory map of the sequencer / no info what kind of registers it can access. Just having an ARM9 w/o any I/O would be pretty pointless but the docs only point to a generic ARM968E-S technical reference for further reference.
Other views are described elsewhere (for instance in sections 2.4.5 and 2.4.6).
The sequencer is kept in reset until you release it (already mentioned section 14.2.1.2.1).Last but not least, I also wonder how that video sequencer is supposed to be disabled, since it's not / can't be used (because of missing docs). Do we have to assume that it's just sitting there in an infinite loop, draining the battery? The docs don't say anything about that.
____
I suggest reading the whole section 14 (or at least skim through it) to see what information is available there.
It seems like you didn't read it, or you already forgot what's written in there.
(Reading ARM968E-S technical reference doesn't hurt either.)
That's why I asked what information is missing, because to me it seems there is enough information about the sequencer to use it if you wanted to.