I'm attempting to use boundary scan with the i.Mx8ULP and have found that it does not appear to work correctly when code is not loaded and running in the (A35) processor. Specifically, the tools do not detect the correct boundary scan register length without an image downloaded and running.
If I start with a "new" PWB (boot mode 0b00, no ULP fuses blown, blank eMMC boot device), or if I force the ULP into serial download mode by setting boot mode to 0b01 and I try to run boundary scan testing I get the following error from the boundary scan tool:
Boundary-Scan Register Test: Failed
Boundary-Scan Register length detected for
device U1 is 126 bits shorter than the length
specified in BSDL file.
U1 (BGA485)
ACT: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0002B3C0000000000300000000000000000000EAA0000000000000000000000000000000000000000
EXP: 0FFFF0000ACF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
MSK: 0FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
If I download code to the ULP (I've been able to do this successfully using our customer image or by downloading the DDR calibration image via the NXP IMX DDR Tool) then this same test passes, and the behavior and results are very consistent. Note that other JTAG tests (e.g. reading the IDCODE register) still pass in the failing case so I do not believe it's an issue with the physical JTAG connection.
With the i.Mx8ULP are there specific things that need to be powered or enabled for boundary scan to work correctly?