Download tools/ulpw.mjs from HelloSun/esp32emu: direct link, hf CLI and curl.
- Browser
- Download file 1.07 kB
-
https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/tools/ulpw.mjs
- Command line
-
hf download hf://spaces/HelloSun/esp32emu/tools/ulpw.mjs
-
curl -L -o ulpw.mjs https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/tools/ulpw.mjs
1.07 kB
| import fs from 'fs'; | |
| import { createESP32 } from '../web/js/soc.js'; | |
| const romDir = new URL('../web/rom/', import.meta.url).pathname; | |
| const wasmBytes = fs.readFileSync(new URL('../wasm/xtensa.wasm', import.meta.url)); | |
| const soc = await createESP32({ wasmBytes }); | |
| soc.loadRoms(fs.readFileSync(romDir + 'esp32-v3-rom.bin'), fs.readFileSync(romDir + 'esp32-v3-rom-app.bin')); | |
| soc.setFlash(fs.readFileSync(process.argv[2])); soc.enablePsram(false); | |
| soc.reset('power'); | |
| const seen = new Map(); | |
| const pw = soc.ulp.periphWrite.bind(soc.ulp), pr = soc.ulp.periphRead.bind(soc.ulp); | |
| soc.ulp.periphWrite = (sel, addr, v) => { const k = `W sel=${sel} addr=0x${addr.toString(16)} (${[0x3ff48000,0x3ff48400,0x3ff48800,0x3ff48c00][sel] + addr*4 >>> 0}) v=${(v>>>0).toString(16)}`; seen.set(k, (seen.get(k)||0)+1); return pw(sel, addr, v); }; | |
| soc.ulp.periphRead = (sel, addr) => { const k = `R sel=${sel} addr=0x${addr.toString(16)}`; seen.set(k, (seen.get(k)||0)+1); return pr(sel, addr); }; | |
| while (soc.timeNs < 0.9e9) soc.run(20000); | |
| for (const [k, v] of seen) console.log(v, k); | |