<
trabucayre>
cr1901: yes
<
trabucayre>
openFPGALoader --index-chain xx
<
trabucayre>
but there is an issue with spiOverJtag when multiple devices
<
cr1901>
how does openFPGALoader figure out IRlen of other devices?
<
trabucayre>
IRlen is provided by parts.hpp
<
cr1901>
Yes, but what if you have a board that has a JTAG for e.g. a microcontroller in the chain
<
cr1901>
Does every microcontroller have to be added to parts.hpp on a board-by-board basis?
<
trabucayre>
yep :(
<
trabucayre>
not board-by-board but simply has a know but not supported device
<
cr1901>
IIRC the process is something like- toggle TMS for at least 5 clocks, then input a
_large_ number of 1s. This sets up all bypass registers.
<
cr1901>
But Idk how to figure out what's in the JTAG chain from there
_given a known but not supported device is somewhere on the chain_
<
cr1901>
i.e. pretend an "ARM cortex A9" is first device, and a MachXO2 is second device. "--index-chain 02" is all I need?
<
cr1901>
Or do I have to specify the first device as well?
<
trabucayre>
at startup openFPGALoader scan JTAG
<
trabucayre>
if chain contains 2 FPGA user has to explicitly provides index
<
trabucayre>
when arm + fpga: fpga is automatically selected
<
trabucayre>
for socFPGA, zynq(7000/MP) no needs to use index
<
trabucayre>
for spartan3 + jtag flash -> index is required
cr1901_ has joined #openFPGALoader
<
cr1901_>
Very good, thanks Internet. Definitely very convenient time to disconnect
cr1901 has quit [Read error: Connection reset by peer]
<
trabucayre>
I haven't (dis)connect event in my irssi: don't see that
<
cr1901_>
ohh hmm, welll it DC'd on my end :D
<
trabucayre>
I have disabled events :)
<
trabucayre>
I think I have to spend one week to redo documentation :-/
<
cr1901_>
Apparently IDCODE is what TAP controllers default to when they reset
<
cr1901_>
not BYPASS
<
cr1901_>
So that's why I was confused
<
cr1901_>
(well, if IDCODE exists*, which is probably true)
<
trabucayre>
scanning return IDCODE to build chain list
cr1901_ is now known as cr1901
<
trabucayre>
when you have to sent something at a specific device you pass BYPASS to all others but targeted one.
<
cr1901>
Yes, that part I
_do_ remember :)
<
trabucayre>
in fact it's for ShiftIR
<
trabucayre>
for shiftDR you have to pass garbage bits before and after to align data
<
cr1901>
If you're targeting a single device on the chain, I assume it's implied that you know the DRlen for the register you want to target
<
cr1901>
and that you add "number of other devices" for the devices in BYPASS
<
trabucayre>
DRLen : 1b / device
<
cr1901>
for BYPASS, right?
<
trabucayre>
IR: IRLENdev1 + IRLENdev2 + target + IRLENdev4 + ...
<
trabucayre>
DR: 1 + 1 + target + 1 + ...
<
trabucayre>
for IR you sent BYPASS for all devices and register code for the target
<
cr1901>
Yep, I remember that part, thankfully. Just forget everything else :P
<
cr1901>
>I think I have to spend one week to redo documentation :-/ <-- Add a "how autodiscovery works" section :P
<
trabucayre>
I have many sections to add :-/
<
cr1901>
Anyways, now it makes sense. If I have a microcontroller to add for a hypothetical dev board, I will add the ID to openfpgaloader :P
<
trabucayre>
exactly :)
<
cr1901>
(Probably some MSP430 device, since that's what I'm most used to)
<
trabucayre>
I haven't played with MSP430 since maybe 10 years :)
enok has quit [Remote host closed the connection]
enok has joined #openFPGALoader