Download tools/cnt.mjs from HelloSun/esp32emu: direct link, hf CLI and curl.
- Browser
- Download file 1 kB
-
https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/tools/cnt.mjs
- Command line
-
hf download hf://spaces/HelloSun/esp32emu/tools/cnt.mjs
-
curl -L -o cnt.mjs https://huggingface.co/spaces/HelloSun/esp32emu/resolve/main/tools/cnt.mjs
1 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(true); | |
| soc.reset('power'); | |
| const rdc = new Map(); let nr = 0, nw = 0; | |
| const br = soc.busRead.bind(soc), bw = soc.busWrite.bind(soc); | |
| soc.busRead = (c, a, s) => { nr++; const k = (a>>>12).toString(16); rdc.set(k, (rdc.get(k)||0)+1); return br(c, a, s); }; | |
| soc.busWrite = (c, a, s, v) => { nw++; return bw(c, a, s, v); }; | |
| const t0 = Date.now(); let instr = 0; | |
| while (soc.timeNs < 6e9) instr += soc.run(200000); | |
| console.log('reads', nr, 'writes', nw, 'instr', instr, 'wall', (Date.now()-t0)/1000); | |
| console.log([...rdc.entries()].sort((a,b)=>b[1]-a[1]).slice(0,8)); | |