snipe3687 wrote on 2024-10-03, 12:23:I'm relieved to hear that the schematic looks correct.
The error message I'm getting is the dreaded "no PicoGus Detected!" whic […]
Show full quote
Caligula wrote on 2024-10-03, 09:29:I compared it to the current git schematics of the chipdown version I could not find anything obvious. Also the PC104 seems to b […]
Show full quote
snipe3687 wrote on 2024-10-03, 01:58:Hello everyone. I'm on kind of a PC104 kick lately. I built a backplane motherboard with a PC104 socket and since then I've been […]
Show full quote
Hello everyone. I'm on kind of a PC104 kick lately. I built a backplane motherboard with a PC104 socket and since then I've been building whatever I think could run on it into PC104 modules. this leads me to my actual question. I built a PC104 adaptation of the PicoGus. it looks great and I was able to drop the firmware on it however, it is not being detected by pgusinit. I had it assembled by JLC so I know the soldering is ok. Although I did opt to solder 3 of the chips myself since I already have them on-hand and they were a bit pricey through JLC but I went over them several times to make sure everything was solid and there are no bridges.
I also poked some of the address pins coming from the RP2040 with my oscilloscope and I see activity. so i'm wondering if I messed up when I copied over the schematic. I already found that I didn't attach IOW and IOR properly. this was due to the setting the label as active low on the bus side but not on the other end so KiCad didn't say anything about it not being connected. I bodged both of them and have continuity on both ends. I'm wondering if anyone would be willing to review my schematic and tell me if there's anything obvious (or not so obvious) that I messed up.
I've attached it here. I know it's a little messy, but I will clean it up once I'm sure everything is working properly!
And I will of course share the project files when it's done for the select few people who actually want something like this 😉
Thanks in advance!
I compared it to the current git schematics of the chipdown version I could not find anything obvious. Also the PC104 seems to be wired correctly. Best guess: some wireing/soldering/chip could be broken, another device is using the I/O ports 0x1D0..0x1D2.
Since you were able to flash the board, I would assume that the RP2040 is working kind of properly. What error message is pgusinit reporting exactly? If it is ERROR: no PicoGUS detected! then it already fails by writing out 0xCC and 0x00 to 0x1D0 or not reading properly 0xDD from 0x1D2. If you get a different error message it means that your board should work in principle, but something else is broken.
Maybe to narrow the issue a bit down (depending on what equipment you have to test):
- Do you have an logic analyzer that is fast enough for your bus? Even with a small number of pins you can still record some pins e.g. AD0..x, SA0..x, SD0..x, IOR, IOW and ADS(x should depend on the number of channels your LA has) to see if the adress and data toggling is working properly.
- Do you have ISA to PC104 adapters? Does your board work in a regular ISA slot or does a regular PicoGUS work in your PC104 machine?
- Do you have an Debug probe for the RP2040 (just use another RP2040 for that: https://mcuoneclipse.com/2022/09/17/picoprobe … as-debug-probe/ ) then you can compare what is RP2040 is sending/receiving compared to what pgusinit is doing.
I'm relieved to hear that the schematic looks correct.
The error message I'm getting is the dreaded "no PicoGus Detected!" which tells me something on the data or address bus is not working properly. I suppose it's possible that data on IOR and IOW is not flowing properly as those are the ones I had to bodge to the PC104 connector. I did verify that they are the correct pins a few times, but I've been known to make some pretty dumb mistakes in the past with these projects, so I'll verify that again later tonight as that's the only part of the bus I know for sure was not connected originally.
I do have ISA to PC104 adapters so I can test it out on one of those later. I did test one of my regular PicoGus in an ISA slot on the board, so I know that the system itself is working properly.
I have the debug probe for the RP2040 but when I connected it, it didn't show me anything in the terminal. Maybe I have some settings wrong for the serial connection.
I don't have a logic analyzer. is there any that are relatively inexpensive you would recommend? I do projects like this pretty regularly so it would probably be a good investment to have one.
I appreciate the quick response!
The PicoGUS does not write anything out by default. You have to uncomment some printf debug messages in handle_iow and handle_ior https://github.com/polpo/picogus/blob/main/sw … icogus.cpp#L437
It would also help to modify the pgusinit to print out the return value of inp(DATA_PORT_HIGH) https://github.com/polpo/picogus/blob/main/pg … pgusinit.c#L390 instead of just comparing it to 0xDD.
If the PicoGUS is reading something similar with just one or two bits flipped to what pgusinit is sending outp(0x1D0, 0xCC) outp(0x1D0, 0x00) or the return value on PC side is similar to 0xDD it might be possible that one of your pins is not soldered properly or a wire is somehow damaged.
Connecting a debugger to the PicoGUS https://www.circuitstate.com/tutorials/how-to … and-platformio/ is some additional effort at the beginning but saves a lot of time later when digging down software problems. That can help if the issue is on software side or at least visible within the software.
The general problem with "cheap" LAs is that they only move data via USB2.0 to the PC. So they are limited to 480MBit/s (minus some overhead). So there is a gap between cheap solutions for about 10Euros/Dollars like CY7C68013A or EZ-USB FX2 (together with sigrok https://sigrok.org/wiki/Downloads https://sigrok.org/wiki/Supported_hardware#Logic_analyzers) which offers 16 channels an up to 24MHz. That could be sufficient for ISA, if you can reduce your clock rate (for LA the sampling rate should be at least 4-6 times higher than the clock rate). But always with the risk, that you can't find the root cause due to the low sampling rate.
Better LAs with 16 or 32 channels and clock rates above 100MHz (which can be useful if you plan other projects anyway) start above 100Euro/Dollars. There are some other LAs out there that claim high sampling rates and high channel numbers, but you have to read the datasheets carefully. Some cheap logic analyzers can reach their high clock rates only with a low number channels (e.g. LA1010 from Kingst with 100MHz@3ch but only 16MHz@16ch).
It also makes sense to keep the logging as short as possible, so try to analyze the pigusinit start up messages (and expect some other stuff happening on the bus in the meantime, that has nothing to do with the picogus) and use IOR or IOW as a trigger signal.