Compare commits
13 commits
csa_mirror
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a4817a40d | ||
|
|
8041397901 | ||
|
|
8c191c44ed | ||
|
|
ff1472006b | ||
|
|
de6dc14852 | ||
|
|
e210e50a19 | ||
|
|
a75c0ebe02 | ||
|
|
ea8695b324 | ||
|
|
f8dece31cf | ||
|
|
1fadd495c7 | ||
|
|
81bb017ef5 | ||
|
|
1c4a980d86 | ||
|
|
9328d87c63 |
26 changed files with 346 additions and 25 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -14,9 +14,6 @@ thhor_crs.xy
|
||||||
*.gbr
|
*.gbr
|
||||||
*.cnc
|
*.cnc
|
||||||
*.zip
|
*.zip
|
||||||
gerber/*.pdf
|
|
||||||
gerber/*.odt
|
|
||||||
gerber/thhor_crs-*.png
|
|
||||||
*.o
|
*.o
|
||||||
*.d
|
*.d
|
||||||
*.eeprom
|
*.eeprom
|
||||||
|
|
@ -28,6 +25,6 @@ sensor/*.pdf
|
||||||
vcd
|
vcd
|
||||||
*.log
|
*.log
|
||||||
sallen-key-pulse.hex
|
sallen-key-pulse.hex
|
||||||
|
|
||||||
*~.pcb
|
*~.pcb
|
||||||
*.backup
|
*.backup
|
||||||
|
*.xy
|
||||||
|
|
|
||||||
9
gerber/.gitignore
vendored
Normal file
9
gerber/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
*.xy
|
||||||
|
*.gbr
|
||||||
|
*.cnc
|
||||||
|
*.zip
|
||||||
|
*.pdf
|
||||||
|
*.odt
|
||||||
|
*-bot.png
|
||||||
|
*-top.png
|
||||||
|
*.bom
|
||||||
|
|
@ -2,8 +2,10 @@
|
||||||
# PROJ = …
|
# PROJ = …
|
||||||
# VERSION = v01
|
# VERSION = v01
|
||||||
|
|
||||||
|
HERE = ..
|
||||||
|
PCBDIR = $(HERE)/..
|
||||||
GERBERS = $(PROJ).plated-drill.cnc
|
GERBERS = $(PROJ).plated-drill.cnc
|
||||||
GVP2MAKE = ./gvp2make.py
|
GVP2MAKE = $(HERE)/gvp2make.py
|
||||||
GV_OPT = -D600
|
GV_OPT = -D600
|
||||||
|
|
||||||
default: zip bom png
|
default: zip bom png
|
||||||
|
|
@ -21,18 +23,21 @@ GERBER_AWK = '/- +[-a-z_]+\.[-a-z]+\.[-a-z]+ +[a-z]/{print $$2}'
|
||||||
rm -fv $@
|
rm -fv $@
|
||||||
zip $@ $< $$(awk $(GERBER_AWK) $<)
|
zip $@ $< $$(awk $(GERBER_AWK) $<)
|
||||||
|
|
||||||
%.plated-drill.cnc: ../%.pcb
|
%.plated-drill.cnc: $(PCBDIR)/%.pcb
|
||||||
pcb -x gerber --gerberfile $* --name-style single $<
|
pcb -x gerber --gerberfile $* --name-style single $<
|
||||||
|
|
||||||
bom: $(PROJ)_bom.pdf
|
bom: $(PROJ)_bom.pdf
|
||||||
|
|
||||||
%.bom: ../%.pcb
|
%.bom: $(PCBDIR)/%.pcb
|
||||||
pcb -x bom --bomfile $@ $<
|
pcb -x bom --bomfile $@ $<
|
||||||
|
|
||||||
%_bom.txt: %.bom
|
%_bom.txt: %.bom
|
||||||
bom.py -h $< > $@
|
bom.py -h $< > $@
|
||||||
|
|
||||||
%_bom.pdf: %.bom bom.py
|
%_bom.pdf: %.bom $(HERE)/bom.py
|
||||||
bom.py -h $< | utf82pdf > $@
|
$(word 2,$^) -h $< | utf82pdf > $@
|
||||||
|
|
||||||
.PRECIOUS: %.plated-drill.cnc %.png
|
.PRECIOUS: %.plated-drill.cnc %.png
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.png *.pdf *.bom *.gbr *.cnc
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 172 KiB |
|
|
@ -1,3 +1,3 @@
|
||||||
PROJ = thhor_crs
|
PROJ = thhor_crs
|
||||||
VERSION = v01
|
VERSION = v01
|
||||||
include gerber.makefile
|
include ../gerber.makefile
|
||||||
BIN
gerber/thhor_crs/thhor_crs.png
Normal file
BIN
gerber/thhor_crs/thhor_crs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 172 KiB |
3
gerber/thhor_csa/Makefile
Normal file
3
gerber/thhor_csa/Makefile
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
PROJ = thhor_csa
|
||||||
|
VERSION = v01
|
||||||
|
include ../gerber.makefile
|
||||||
28
gerber/thhor_csa/README.md
Normal file
28
gerber/thhor_csa/README.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Project thhor_csa version v01
|
||||||
|
|
||||||
|
Six layer rigid PCB, 6mil/8mil rules, 0.3mm vias, 8mil annular
|
||||||
|
|
||||||
|
- Size: 60x80 mm²
|
||||||
|
- Thickness: 1.6 mm.
|
||||||
|
- With soldermask, no silk.
|
||||||
|
- Surface finish HAL.
|
||||||
|
|
||||||
|
## Copper layer order:
|
||||||
|
|
||||||
|
- thhor_csa.top.gbr top side copper
|
||||||
|
- thhor_csa.ground.gbr chassis/analog ground
|
||||||
|
- thhor_csa.vcc.gbr power Vcc plane
|
||||||
|
- thhor_csa.vss.gbr power Vss plane
|
||||||
|
- thhor_csa.vfet.gbr power Vfet plane
|
||||||
|
- thhor_csa.bottom.gbr back side copper
|
||||||
|
|
||||||
|
## Mechanical layers
|
||||||
|
|
||||||
|
- thhor_csa.plated-drill.cnc drill file
|
||||||
|
- thhor_csa.outline.gbr board outline
|
||||||
|
- thhor_csa.topmask.gbr soldermask top
|
||||||
|
- thhor_csa.bottommask.gbr soldermask bottom
|
||||||
|
|
||||||
|
## Pretty picture
|
||||||
|
|
||||||
|

|
||||||
82
gerber/thhor_csa/thhor_csa-bot.gvp
Normal file
82
gerber/thhor_csa/thhor_csa-bot.gvp
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
(gerbv-file-version! "2.0A")
|
||||||
|
(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(27113 27113 27113))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 50491 34053))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 34990 63468))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 24400 24400))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(60294 24022 3320))
|
||||||
|
)
|
||||||
|
(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(63479 30069 17733))
|
||||||
|
)
|
||||||
|
(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(29344 65535 28765))
|
||||||
|
)
|
||||||
|
(define-layer! 7 (cons 'filename "thhor_csa.top.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(63383 4945 17070))
|
||||||
|
(cons 'alpha #(27242))
|
||||||
|
)
|
||||||
|
(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 2469 0))
|
||||||
|
(cons 'alpha #(23644))
|
||||||
|
)
|
||||||
|
(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr")
|
||||||
|
(cons 'inverted #t)
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(25200 65535 30627))
|
||||||
|
)
|
||||||
|
(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(61307 61307 61307))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
(cons 'attribs (list
|
||||||
|
(list 'autodetect 'Boolean 1)
|
||||||
|
(list 'zero_suppression 'Enum 0)
|
||||||
|
(list 'units 'Enum 0)
|
||||||
|
(list 'digits 'Integer 4)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 47429 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
)
|
||||||
|
(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa")
|
||||||
|
(cons 'color #(65535 65535 65535))
|
||||||
|
)
|
||||||
|
(set-render-type! 3)
|
||||||
82
gerber/thhor_csa/thhor_csa-top.gvp
Normal file
82
gerber/thhor_csa/thhor_csa-top.gvp
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
(gerbv-file-version! "2.0A")
|
||||||
|
(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(27113 27113 27113))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 50491 34053))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 34990 63468))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 24400 24400))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(60294 24022 3320))
|
||||||
|
)
|
||||||
|
(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(63479 30069 17733))
|
||||||
|
)
|
||||||
|
(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(29344 65535 28765))
|
||||||
|
)
|
||||||
|
(define-layer! 7 (cons 'filename "thhor_csa.top.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(63383 4945 17070))
|
||||||
|
(cons 'alpha #(27242))
|
||||||
|
)
|
||||||
|
(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 2469 0))
|
||||||
|
(cons 'alpha #(23644))
|
||||||
|
)
|
||||||
|
(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr")
|
||||||
|
(cons 'inverted #t)
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(25200 65535 30627))
|
||||||
|
)
|
||||||
|
(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(61307 61307 61307))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
(cons 'attribs (list
|
||||||
|
(list 'autodetect 'Boolean 1)
|
||||||
|
(list 'zero_suppression 'Enum 0)
|
||||||
|
(list 'units 'Enum 0)
|
||||||
|
(list 'digits 'Integer 4)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 47429 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
)
|
||||||
|
(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa")
|
||||||
|
(cons 'color #(65535 65535 65535))
|
||||||
|
)
|
||||||
|
(set-render-type! 3)
|
||||||
82
gerber/thhor_csa/thhor_csa.gvp
Normal file
82
gerber/thhor_csa/thhor_csa.gvp
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
(gerbv-file-version! "2.0A")
|
||||||
|
(define-layer! 14 (cons 'filename "thhor_csa.ground.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(27113 27113 27113))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 13 (cons 'filename "thhor_csa.vfet.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 50491 34053))
|
||||||
|
(cons 'alpha #(12079))
|
||||||
|
)
|
||||||
|
(define-layer! 12 (cons 'filename "thhor_csa.vss.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 34990 63468))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 11 (cons 'filename "thhor_csa.vcc.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(0 24400 24400))
|
||||||
|
(cons 'alpha #(15163))
|
||||||
|
)
|
||||||
|
(define-layer! 10 (cons 'filename "thhor_csa.bottom.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(60294 24022 3320))
|
||||||
|
)
|
||||||
|
(define-layer! 9 (cons 'filename "thhor_csa.bottompaste.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(63479 30069 17733))
|
||||||
|
)
|
||||||
|
(define-layer! 8 (cons 'filename "thhor_csa.bottommask.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(29344 65535 28765))
|
||||||
|
)
|
||||||
|
(define-layer! 7 (cons 'filename "thhor_csa.top.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(63383 4945 17070))
|
||||||
|
(cons 'alpha #(27242))
|
||||||
|
)
|
||||||
|
(define-layer! 6 (cons 'filename "thhor_csa.toppaste.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(65535 2469 0))
|
||||||
|
(cons 'alpha #(23644))
|
||||||
|
)
|
||||||
|
(define-layer! 5 (cons 'filename "thhor_csa.topmask.gbr")
|
||||||
|
(cons 'inverted #t)
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(25200 65535 30627))
|
||||||
|
)
|
||||||
|
(define-layer! 4 (cons 'filename "thhor_csa.plated-drill.cnc")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(61307 61307 61307))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
(cons 'attribs (list
|
||||||
|
(list 'autodetect 'Boolean 1)
|
||||||
|
(list 'zero_suppression 'Enum 0)
|
||||||
|
(list 'units 'Enum 0)
|
||||||
|
(list 'digits 'Integer 4)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
(define-layer! 3 (cons 'filename "thhor_csa.bottomsilk.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 2 (cons 'filename "thhor_csa.topsilk.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 1 (cons 'filename "thhor_csa.outline.gbr")
|
||||||
|
(cons 'visible #t)
|
||||||
|
(cons 'color #(65535 47429 0))
|
||||||
|
(cons 'alpha #(65535))
|
||||||
|
)
|
||||||
|
(define-layer! 0 (cons 'filename "thhor_csa.fab.gbr")
|
||||||
|
(cons 'visible #f)
|
||||||
|
(cons 'color #(0 0 0))
|
||||||
|
)
|
||||||
|
(define-layer! -1 (cons 'filename "/home/falbala/stephan/eda/thhor_crs/gerber/thhor_csa")
|
||||||
|
(cons 'color #(65535 65535 65535))
|
||||||
|
)
|
||||||
|
(set-render-type! 3)
|
||||||
BIN
gerber/thhor_csa/thhor_csa.png
Normal file
BIN
gerber/thhor_csa/thhor_csa.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
|
|
@ -21,15 +21,17 @@ const struct config config = {
|
||||||
[0] = 0xd1 | FM_READ, // Buffer 1 Read (Low-Frequency)
|
[0] = 0xd1 | FM_READ, // Buffer 1 Read (Low-Frequency)
|
||||||
[1] = 0xd3 | FM_READ, // Buffer 2 Read (Low-Frequency)
|
[1] = 0xd3 | FM_READ, // Buffer 2 Read (Low-Frequency)
|
||||||
},
|
},
|
||||||
.page_start = 0x0800,
|
.page_start = 0x0400,
|
||||||
.page_end = 0x1000,
|
.page_end = 0x1000,
|
||||||
#ifdef HAVE_nFETs
|
#ifdef HAVE_nFETs
|
||||||
.pwm_min = 0x0000,
|
.pwm_min = 0x0000,
|
||||||
.pwm_max = 0xffff,
|
.pwm_max = 0xffff,
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FPGA
|
#ifdef HAVE_FPGA
|
||||||
.fpga_config_page = 8,
|
.fpga_config_page = 0x100,
|
||||||
.fpga_config_count = 504,
|
.fpga_config_count = 3955,
|
||||||
|
.dorn_config_page = 8,
|
||||||
|
.dorn_config_count = 1,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ struct config {
|
||||||
#ifdef HAVE_FPGA
|
#ifdef HAVE_FPGA
|
||||||
uint16_t fpga_config_page;
|
uint16_t fpga_config_page;
|
||||||
uint16_t fpga_config_count;
|
uint16_t fpga_config_count;
|
||||||
|
uint16_t dorn_config_page;
|
||||||
|
uint16_t dorn_config_count;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
13
src/dose.py
13
src/dose.py
|
|
@ -645,7 +645,7 @@ class dose_cmd(uart.uart):
|
||||||
status |= 0x10 # PS_528
|
status |= 0x10 # PS_528
|
||||||
dest &=~ self.PIPE["FLASH"]
|
dest &=~ self.PIPE["FLASH"]
|
||||||
if dest & self.PIPE["FPGA"] and not n:
|
if dest & self.PIPE["FPGA"] and not n:
|
||||||
n = 512/64 * npages
|
n = 512//64 * npages
|
||||||
if dest & self.PIPE["FLASH"]:
|
if dest & self.PIPE["FLASH"]:
|
||||||
flash = flags2int(self.FSS, ["Write", "Ready", "P528"])
|
flash = flags2int(self.FSS, ["Write", "Ready", "P528"])
|
||||||
status |= 0x10 # PS_528
|
status |= 0x10 # PS_528
|
||||||
|
|
@ -661,6 +661,8 @@ class dose_cmd(uart.uart):
|
||||||
source, dest, status, valid, 0,
|
source, dest, status, valid, 0,
|
||||||
astatus, n, psize//2, 0, 0,
|
astatus, n, psize//2, 0, 0,
|
||||||
page, npages-1, flash)
|
page, npages-1, flash)
|
||||||
|
if self._verbose >= 2:
|
||||||
|
print(f"PIPE {n=} {b2hex(d)}", file=sys.stderr)
|
||||||
return self.cmd(c, d)
|
return self.cmd(c, d)
|
||||||
|
|
||||||
def erase_flash(self, page, npages=1):
|
def erase_flash(self, page, npages=1):
|
||||||
|
|
@ -742,7 +744,7 @@ class dose_cmd(uart.uart):
|
||||||
f.close()
|
f.close()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def write_pipe(self, data=[], timeout=2, n=None, parity="pipe", bfill=b'\0', pfill=b'\xff'):
|
def write_pipe(self, data=[], timeout=2, n=None, parity=None, bfill=b'\0', pfill=b'\xff'):
|
||||||
if isinstance(data, str):
|
if isinstance(data, str):
|
||||||
f = open(data, "rb")
|
f = open(data, "rb")
|
||||||
data = []
|
data = []
|
||||||
|
|
@ -804,7 +806,7 @@ class dose_cmd(uart.uart):
|
||||||
s = 1
|
s = 1
|
||||||
if nn:
|
if nn:
|
||||||
break
|
break
|
||||||
if bb != b:
|
if parity and bb != b:
|
||||||
raise ValueError(f"block number mismatch {b=} != {bb=}")
|
raise ValueError(f"block number mismatch {b=} != {bb=}")
|
||||||
if b >= len(page):
|
if b >= len(page):
|
||||||
break
|
break
|
||||||
|
|
@ -840,6 +842,11 @@ class dose_cmd(uart.uart):
|
||||||
self.pipe("CMD", "CONFIG", n=n*64)
|
self.pipe("CMD", "CONFIG", n=n*64)
|
||||||
self.write_pipe(filename, n=n)
|
self.write_pipe(filename, n=n)
|
||||||
|
|
||||||
|
def fpga_config_f(self, filename="../fpga/quartus/thhor_crs.rbf"):
|
||||||
|
self.fpga_reset()
|
||||||
|
n = os.stat(filename).st_size
|
||||||
|
self.pipe("FLASH", "CONFIG", page=0x100, n=n)
|
||||||
|
|
||||||
def fix_page(self, page):
|
def fix_page(self, page):
|
||||||
if self.load_galois():
|
if self.load_galois():
|
||||||
page = bch.fix_page(page)
|
page = bch.fix_page(page)
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ uint8_t fpga_pipe_ready()
|
||||||
const struct pipe pipe_config_fpga_config = {
|
const struct pipe pipe_config_fpga_config = {
|
||||||
.source = pipe_flash,
|
.source = pipe_flash,
|
||||||
.dest = pipe_fpga,
|
.dest = pipe_fpga,
|
||||||
.status = PS_BCH | PS_528,
|
.status = PS_BCH | PS_528 | PS_OUT,
|
||||||
.fpga = {
|
.fpga = {
|
||||||
.status = AS_CONFIG,
|
.status = AS_CONFIG,
|
||||||
},
|
},
|
||||||
|
|
@ -179,5 +179,5 @@ void fpga_config(uint16_t page, uint16_t count)
|
||||||
fpga_reset();
|
fpga_reset();
|
||||||
pipe = pipe_config_fpga_config;
|
pipe = pipe_config_fpga_config;
|
||||||
pipe.fpga.count = count;
|
pipe.fpga.count = count;
|
||||||
flash_start_stream(page, count >> 3, FS_Read|FS_528);
|
flash_start_stream(page, count >> 3, FS_Read|FS_528|FS_Ready);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
src/pipe.c
10
src/pipe.c
|
|
@ -22,6 +22,8 @@ uint8_t pipe_busy()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t pipe_sleep;
|
||||||
|
|
||||||
uint8_t pipe_poll()
|
uint8_t pipe_poll()
|
||||||
{
|
{
|
||||||
/************************************************************
|
/************************************************************
|
||||||
|
|
@ -47,6 +49,7 @@ uint8_t pipe_poll()
|
||||||
// the data goes nowhere.
|
// the data goes nowhere.
|
||||||
uint8_t r = pipe.status;
|
uint8_t r = pipe.status;
|
||||||
uint8_t dest = pipe.dest;
|
uint8_t dest = pipe.dest;
|
||||||
|
pipe_sleep = 1;
|
||||||
|
|
||||||
if (pipe_busy() || !dest)
|
if (pipe_busy() || !dest)
|
||||||
return r;
|
return r;
|
||||||
|
|
@ -65,10 +68,11 @@ uint8_t pipe_poll()
|
||||||
if (dest & pipe_cmd && valid & 0x1f)
|
if (dest & pipe_cmd && valid & 0x1f)
|
||||||
// cmd did not drain the buffer, yet
|
// cmd did not drain the buffer, yet
|
||||||
goto done;
|
goto done;
|
||||||
if (dest & pipe_flash && ~fs.status & FS_Ready)
|
if (dest & pipe_flash && ~fs.status & FS_Ready) {
|
||||||
// flash did not finish yet, successfully
|
// flash did not finish yet, successfully
|
||||||
|
pipe_sleep = ~fs.status & FS_Busy;
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
// Return if next ADC reading is not yet due.
|
// Return if next ADC reading is not yet due.
|
||||||
// Come back here, until is is.
|
// Come back here, until is is.
|
||||||
|
|
||||||
|
|
@ -79,6 +83,7 @@ uint8_t pipe_poll()
|
||||||
// We are done with this buffer
|
// We are done with this buffer
|
||||||
|
|
||||||
r &=~ PS_OUT;
|
r &=~ PS_OUT;
|
||||||
|
pipe_sleep = 0;
|
||||||
|
|
||||||
// Continue the flash stream.
|
// Continue the flash stream.
|
||||||
|
|
||||||
|
|
@ -200,6 +205,7 @@ adc_done:
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
// The buffer is full, send it.
|
// The buffer is full, send it.
|
||||||
|
pipe_sleep = 0;
|
||||||
r |= PS_OUT;
|
r |= PS_OUT;
|
||||||
|
|
||||||
#ifdef HAVE_FPGA
|
#ifdef HAVE_FPGA
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@ struct pipe {
|
||||||
#endif
|
#endif
|
||||||
} pipe;
|
} pipe;
|
||||||
|
|
||||||
|
extern uint8_t pipe_sleep;
|
||||||
|
|
||||||
struct pipe_config {
|
struct pipe_config {
|
||||||
struct pipe pipe;
|
struct pipe pipe;
|
||||||
uint16_t page;
|
uint16_t page;
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ int main()
|
||||||
// The sleep command will execute even when an irq becomes
|
// The sleep command will execute even when an irq becomes
|
||||||
// pending after cli(). It will wake us immediately.
|
// pending after cli(). It will wake us immediately.
|
||||||
cli();
|
cli();
|
||||||
if (!command_pending() || adc_busy() || spi_busy_p()) {
|
if (!command_pending() && pipe_sleep) {
|
||||||
sei();
|
sei();
|
||||||
sleep_cpu();
|
sleep_cpu();
|
||||||
}
|
}
|
||||||
|
|
@ -56,5 +56,7 @@ int main()
|
||||||
command();
|
command();
|
||||||
if (~magic.flags & hold_pipe)
|
if (~magic.flags & hold_pipe)
|
||||||
pipe_poll();
|
pipe_poll();
|
||||||
|
else
|
||||||
|
pipe_sleep = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 934 KiB After Width: | Height: | Size: 1.8 MiB |
|
|
@ -9,8 +9,8 @@ Grid[0.5000mm 0.0000 0.0000 1]
|
||||||
PolyArea[200000000.000000]
|
PolyArea[200000000.000000]
|
||||||
Thermal[0.500000]
|
Thermal[0.500000]
|
||||||
DRC[0.1999mm 0.0100mm 0.1500mm 0.0025mm 0.3000mm 0.2000mm]
|
DRC[0.1999mm 0.0100mm 0.1500mm 0.0025mm 0.3000mm 0.2000mm]
|
||||||
Flags("nameonpcb,alldirection,clearnew,thindrawpoly,locknames")
|
Flags("nameonpcb,alldirection,clearnew,thindrawpoly")
|
||||||
Groups("1,c:2:3:4:5:6,s:7:8")
|
Groups("1,c:2:5:4:3:6,s:7:8")
|
||||||
Styles["Signal,0.2000mm,0.7000mm,0.3000mm,0.2000mm,0.5000mm:Power,0.6000mm,1.0000mm,0.5000mm,0.2000mm,0.8000mm:Fat,1.0000mm,4.0000mm,2.2000mm,0.2000mm,4.1000mm:Skinny,0.1524mm,0.6101mm,0.3000mm,0.1524mm"]
|
Styles["Signal,0.2000mm,0.7000mm,0.3000mm,0.2000mm,0.5000mm:Power,0.6000mm,1.0000mm,0.5000mm,0.2000mm,0.8000mm:Fat,1.0000mm,4.0000mm,2.2000mm,0.2000mm,4.1000mm:Skinny,0.1524mm,0.6101mm,0.3000mm,0.1524mm"]
|
||||||
Symbol[' ' 0.4572mm]
|
Symbol[' ' 0.4572mm]
|
||||||
(
|
(
|
||||||
|
|
@ -7581,6 +7581,7 @@ Layer(1 "top" "copper")
|
||||||
Text[21.5000mm 43.0000mm 0 261 "THHOR CSA V01M" "clearline"]
|
Text[21.5000mm 43.0000mm 0 261 "THHOR CSA V01M" "clearline"]
|
||||||
Text[20.9000mm 39.1000mm 1 168 "2026-05-04 SiB" "clearline"]
|
Text[20.9000mm 39.1000mm 1 168 "2026-05-04 SiB" "clearline"]
|
||||||
Text[23.3000mm 39.1000mm 1 152 "FORGE.BEXUS.ORG" "clearline"]
|
Text[23.3000mm 39.1000mm 1 152 "FORGE.BEXUS.ORG" "clearline"]
|
||||||
|
Text[55.5000mm 27.5000mm 1 300 "1" "clearline"]
|
||||||
Polygon("via")
|
Polygon("via")
|
||||||
(
|
(
|
||||||
[22.2000mm 15.2000mm] [22.1933mm 15.2368mm] [22.1862mm 15.2714mm] [22.1246mm 15.6076mm] [22.1035mm 15.6311mm]
|
[22.2000mm 15.2000mm] [22.1933mm 15.2368mm] [22.1862mm 15.2714mm] [22.1246mm 15.6076mm] [22.1035mm 15.6311mm]
|
||||||
|
|
@ -7630,17 +7631,25 @@ Layer(1 "top" "copper")
|
||||||
)
|
)
|
||||||
Layer(2 "ground" "copper")
|
Layer(2 "ground" "copper")
|
||||||
(
|
(
|
||||||
|
Text[55.5000mm 25.5000mm 1 300 "2" "clearline"]
|
||||||
Polygon("clearpoly")
|
Polygon("clearpoly")
|
||||||
(
|
(
|
||||||
[65.0000mm 83.5000mm] [65.0000mm 7.5000mm] [63.5000mm 6.0000mm] [7.5000mm 6.0000mm] [6.0000mm 7.5000mm]
|
[65.0000mm 83.5000mm] [63.5000mm 85.0000mm] [7.5000mm 85.0000mm] [6.0000mm 83.5000mm] [6.0000mm 7.5000mm]
|
||||||
[6.0000mm 83.5000mm] [7.5000mm 85.0000mm] [63.5000mm 85.0000mm]
|
[7.5000mm 6.0000mm] [63.5000mm 6.0000mm] [65.0000mm 7.5000mm]
|
||||||
|
Hole (
|
||||||
|
[55.5000mm 12.0000mm] [55.5000mm 28.5000mm] [60.0000mm 28.5000mm] [60.0000mm 12.0000mm]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
Layer(3 "vfet" "copper")
|
Layer(3 "vfet" "copper")
|
||||||
(
|
(
|
||||||
|
Text[55.5000mm 17.0000mm 1 300 "5" "clearline"]
|
||||||
Polygon("clearpoly")
|
Polygon("clearpoly")
|
||||||
(
|
(
|
||||||
[6.0000mm 6.0000mm] [65.0000mm 6.0000mm] [65.0000mm 85.0000mm] [6.0000mm 85.0000mm]
|
[6.0000mm 6.0000mm] [65.0000mm 6.0000mm] [65.0000mm 85.0000mm] [6.0000mm 85.0000mm]
|
||||||
|
Hole (
|
||||||
|
[55.5000mm 12.0000mm] [55.5000mm 28.5000mm] [60.0000mm 28.5000mm] [60.0000mm 12.0000mm]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
Layer(4 "vss" "copper")
|
Layer(4 "vss" "copper")
|
||||||
|
|
@ -7681,6 +7690,7 @@ Layer(4 "vss" "copper")
|
||||||
Line[58.3000mm 71.6000mm 58.8000mm 71.6000mm 0.2000mm 0.4000mm "clearline"]
|
Line[58.3000mm 71.6000mm 58.8000mm 71.6000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[58.8000mm 71.6000mm 61.1000mm 69.3000mm 0.2000mm 0.4000mm "clearline"]
|
Line[58.8000mm 71.6000mm 61.1000mm 69.3000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[61.1000mm 69.3000mm 61.1000mm 57.2000mm 0.2000mm 0.4000mm "clearline"]
|
Line[61.1000mm 69.3000mm 61.1000mm 57.2000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
|
Text[55.5000mm 20.0000mm 1 300 "4" "clearline"]
|
||||||
Polygon("clearpoly")
|
Polygon("clearpoly")
|
||||||
(
|
(
|
||||||
[65.0000mm 39.0000mm] [40.0000mm 39.0000mm] [34.5000mm 33.5000mm] [34.5000mm 6.0000mm] [6.0000mm 6.0000mm]
|
[65.0000mm 39.0000mm] [40.0000mm 39.0000mm] [34.5000mm 33.5000mm] [34.5000mm 6.0000mm] [6.0000mm 6.0000mm]
|
||||||
|
|
@ -7699,6 +7709,7 @@ Layer(5 "vcc" "copper")
|
||||||
Line[16.1000mm 66.3000mm 16.3000mm 70.4000mm 0.2000mm 0.4000mm "clearline"]
|
Line[16.1000mm 66.3000mm 16.3000mm 70.4000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[10.2000mm 57.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"]
|
Line[10.2000mm 57.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[11.7000mm 66.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"]
|
Line[11.7000mm 66.3000mm 10.2000mm 64.8000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
|
Text[55.5000mm 22.5000mm 1 300 "3" "clearline"]
|
||||||
Polygon("clearpoly")
|
Polygon("clearpoly")
|
||||||
(
|
(
|
||||||
[34.5000mm 6.0000mm] [6.0000mm 6.0000mm] [6.0000mm 56.5000mm] [65.0000mm 56.5000mm] [65.0000mm 39.0000mm]
|
[34.5000mm 6.0000mm] [6.0000mm 6.0000mm] [6.0000mm 56.5000mm] [65.0000mm 56.5000mm] [65.0000mm 39.0000mm]
|
||||||
|
|
@ -8340,6 +8351,7 @@ Layer(6 "bottom" "copper")
|
||||||
Line[54.8000mm 72.1000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
Line[54.8000mm 72.1000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[55.6000mm 70.4000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
Line[55.6000mm 70.4000mm 55.6000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
Line[54.1000mm 70.4000mm 53.1000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
Line[54.1000mm 70.4000mm 53.1000mm 72.1000mm 0.2000mm 0.4000mm "clearline"]
|
||||||
|
Text[55.5000mm 13.0000mm 1 300 "6" "clearline,onsolder"]
|
||||||
)
|
)
|
||||||
Layer(7 "outline" "outline")
|
Layer(7 "outline" "outline")
|
||||||
(
|
(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue