71 lines
2.3 KiB
Markdown
71 lines
2.3 KiB
Markdown
|
|
## Exercise 13: SD Card Diagnostics
|
||
|
|
|
||
|
|
Dedicated SD hardware + software diagnostics for T-Beam Supreme.
|
||
|
|
|
||
|
|
This exercise is meant to isolate SD failures like:
|
||
|
|
- card only works after reinsertion,
|
||
|
|
- intermittent mount loss,
|
||
|
|
- one unit never mounts while others do,
|
||
|
|
- possible interconnect / socket / power rail issues.
|
||
|
|
|
||
|
|
### What it does
|
||
|
|
|
||
|
|
1. Uses the `startup_sd` watcher library from Exercise 12 for continuous card presence monitoring.
|
||
|
|
2. Logs PMU telemetry repeatedly:
|
||
|
|
- BLDO1 (SD rail enable state)
|
||
|
|
- VBUS voltage
|
||
|
|
- battery voltage and battery-present flag
|
||
|
|
3. Samples SD SPI GPIO logic levels (`CS`, `SCK`, `MISO`, `MOSI`) at runtime.
|
||
|
|
4. Runs SPI idle-byte probes on both `HSPI` and `FSPI`.
|
||
|
|
5. Runs full mount matrix scans:
|
||
|
|
- buses: `HSPI`, then `FSPI`
|
||
|
|
- frequencies: `400k`, `1M`, `4M`, `10M`
|
||
|
|
6. Performs SD file I/O validation when mounted:
|
||
|
|
- append to `/diag/sd_diag_probe.log`
|
||
|
|
- flush
|
||
|
|
- reopen and read back verification token
|
||
|
|
7. Every few cycles, power-cycles SD rail (BLDO1) and re-tests mount.
|
||
|
|
8. Shows live status on OLED and detailed logs on Serial.
|
||
|
|
|
||
|
|
### Build
|
||
|
|
|
||
|
|
```bash
|
||
|
|
source /home/jlpoole/rnsenv/bin/activate
|
||
|
|
pio run -e amy
|
||
|
|
```
|
||
|
|
|
||
|
|
### Upload (using your udev aliases)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
source /home/jlpoole/rnsenv/bin/activate
|
||
|
|
pio run -e amy -t upload --upload-port /dev/ttytAMY
|
||
|
|
```
|
||
|
|
|
||
|
|
### Monitor
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pio device monitor --port /dev/ttytAMY --baud 115200
|
||
|
|
```
|
||
|
|
|
||
|
|
### Interpreting key log lines
|
||
|
|
|
||
|
|
- `Mount OK bus=... hz=...`
|
||
|
|
- SD stack works at that bus/speed.
|
||
|
|
- `Mount FAIL ...` on all combos
|
||
|
|
- usually hardware path, socket contact, power rail, interconnect, or card format issue.
|
||
|
|
- `SPI probe ... ff=8`
|
||
|
|
- typical idle/pull-up style response.
|
||
|
|
- `SPI probe ... zero=8`
|
||
|
|
- suspicious: line stuck low/short or bus contention.
|
||
|
|
- `BLDO1=0` while testing
|
||
|
|
- SD rail is off; card cannot function.
|
||
|
|
- `I/O FAIL` after mount success
|
||
|
|
- media/filesystem instability or write path issue.
|
||
|
|
|
||
|
|
### Practical A/B troubleshooting workflow
|
||
|
|
|
||
|
|
1. Use one known-good SD card and test it in a known-good unit and Amy.
|
||
|
|
2. Compare whether `Mount OK` appears in both units.
|
||
|
|
3. If Amy never gets `Mount OK` but good unit does, suspect Amy hardware path.
|
||
|
|
4. Gently flex/reseat board stack while monitoring logs for mount transitions.
|
||
|
|
5. If behavior changes with pressure/reseat, interconnect/socket contact is likely root cause.
|