1
0
mirror of git://projects.qi-hardware.com/ben-blinkenlights.git synced 2024-11-27 17:05:20 +02:00
Commit Graph

271 Commits

Author SHA1 Message Date
Werner Almesberger
591bb6427b libubb/mmcclk.c (mmcclk_first): add flags to relax clock selection constraints 2013-01-28 20:49:17 -03:00
Werner Almesberger
14b7a9cdee ubb-la/ubb-la.c (xfers): instead of waiting for event, use hand-optimized delay loop
The gap is just as long as when waiting for an event but the "start bit"
on DAT0 has vanished completely:

1       3       gap     2       0       1       3
------- ------- ------- ------- ------- ------- -------
53              77                      16      146
66              79                      1       146
81              79                              132
96              79                              117
2013-01-28 16:43:29 -03:00
Werner Almesberger
18a822b845 ubb-la/ubb-la.c (xfers): wait for END_CMD_RES instead of DATA_FIFO_EMPTY
This seems to make no difference for the gap but the "start bit" (DAT0
pulled low) seem to get 1-2 samples shorter:

1       3       gap     2       0       1       3
------- ------- ------- ------- ------- ------- -------
146             77      9                       60
147     13      79      9                       45
145     28      79      10                      29
146     43      79      9                       15
2013-01-28 16:43:23 -03:00
Werner Almesberger
4ffd61093b ubb-la/ubb-la.c (do_bufs): don't skip 122 nibbled (for evaluation)
A series of measurements of

A# ./ubb-patgen  -f 41kHz 1
A# ./ubb-patgen  -f 41kHz -c
B# ./ubb-la -f 12 -n 10

yielded these results:

1       3       gap     2       0       1       3
------- ------- ------- ------- ------- ------- -------
106             77      11                      98
120             78      11                      83
134             79      11                      68
        3       79      11                      53
        18      78      11                      39
        33      78      11                      24
        47      79      11                      9
        62      79      5       6       140     147
        77      79              11      125     147

Where for example the last entry corresponds to

...1{146}3{77}
0{11}1{125}3{147}...

Since this looks as if DAT1 was 1 for 77 samples before the first capture
ended, was 0 throughout the pulling low of DAT0 (11 cycles), stayed low
for another 125 cycles, and then went high for the 146.29 nominal
half-period, we thus get a gap length of 2*146-77-11-125 = 79
2013-01-27 18:23:38 -03:00
Werner Almesberger
37a219b0b9 ubb-la/ubb-la.c: option -n N to enter experimental multi-buffer mode (WIP) 2013-01-26 23:25:17 -03:00
Werner Almesberger
96ae3319c5 libubb/physmem.c (physmem_xlat): don't close the (supposedly) cached fd 2013-01-26 21:09:19 -03:00
Werner Almesberger
13f34170de ubb-la/ubb-la.c (do_buf): physmem_xlat doesn't need a cast
We inherited the cast from ubb-patgen where the buffer was "const" and thus
had to be cast for the the non-const argument of physmem_xlat. We never
needed a cast in ubb-la, though.

Since physmem_xlat now uses "const" as well, the cast is even doubly
superfluous.
2013-01-26 20:49:09 -03:00
Werner Almesberger
b0d89b25eb ubb-patgen/ubb-patgen.c (send_buffer): physmem_xlat no longer needs a cast 2013-01-26 20:48:21 -03:00
Werner Almesberger
c796ab1c54 libubb/physmem.c (physmem_xlat): make "v" "const"
Since we may use the buffer as well for reading only, there is no point in
pretending physmem_xlat itself would try to write to it.
2013-01-26 20:42:33 -03:00
Werner Almesberger
8316bc0070 ubb-la/ubb-la.c (do_buf): move pretty-printing to new function print_samples 2013-01-26 20:01:32 -03:00
Werner Almesberger
4ceee66c79 ubb-la/ubb-la.c (INITIAL_SKIP): describe how the value was obtained 2013-01-26 19:55:44 -03:00
Werner Almesberger
a947b5ef85 ubb-patgen/Makefile (CFLAGS): use more specific -O9 -fno-tree-cselim
... instead of -O0. See previous commit for details.
2013-01-25 19:55:49 -03:00
Werner Almesberger
09de2454ef ubb-la/Makefile (CFLAGS): use more specific -O9 -fno-tree-cselim
Third time lucky, I hope. -fno-tree-cselim is much more specific than
disabling all optimization and results in a considerably less severe
performance reduction (about 30-40% of -O0).
2013-01-25 19:49:20 -03:00
Werner Almesberger
07026753de ubb-la/README: brief description of ubb-la 2013-01-24 20:04:40 -03:00
Werner Almesberger
4ce6866767 ubb-la/ubb-la.c (do_buf): skip over the first 122 samples
They are from the setup process and therefore invalid (DAT0) and/or out
of sync (DAT0-3) with the rest of the samples.
2013-01-24 20:00:59 -03:00
Werner Almesberger
fc4b8e720a ubb-patgen/Makefile (CFLAGS): even -O1 isn't safe; use -O0 instead
In ubb-la, -O1 still exhibited problems. Didn't verify for ubb-patgen,
but let's play this safe for now.
2013-01-24 18:33:08 -03:00
Werner Almesberger
62284fb78e ubb-la/ubb-la.c: add command-line options, keyboard abort 2013-01-24 18:26:34 -03:00
Werner Almesberger
bac21bf8cb ubb-la/Makefile (CFLAGS): even -O1 isn't safe; use -O0 instead
While -O1 gets rid of the unexpected read in the simple code of a synthetic
test, it's still there in the more complex environment we have in ubb-la.c
Turning off optimization completely seems to do the trick.
2013-01-24 17:35:52 -03:00
Werner Almesberger
00ef01ada8 ubb-patgen/Makefile (CFLAGS): -O9 is currently unsafe; use -O1
Higher optimizations can cause the generation of code that unexpectedly
does the equivalent of  PDFUNS = PDFUNS;

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56098
2013-01-24 15:34:04 -03:00
Werner Almesberger
e1eea4fa86 ubb-la/Makefile (CFLAGS): -O9 is currently unsafe; use -O1
Higher optimizations can cause the generation of code that unexpectedly
does the equivalent of  PDFUNS = PDFUNS;

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56098
2013-01-24 15:31:59 -03:00
Werner Almesberger
2c5b3625a7 ubb-la/: data capture via UBB and MSC+DMA (WIP) 2013-01-23 11:54:23 -03:00
Werner Almesberger
d4c1f5666c ubb-la/hw/: proof-of-concept passive LA adapter board
Note that the pull-ups on DAT1 through DAT3 and the pull-whichever-way on
DAT0 are likely to get in the way of any real-life use. But it's good enough
for exploring the system's characteristics and limitations.
2013-01-23 11:52:11 -03:00
Werner Almesberger
5025f360cc ubb-patgen/ubb-patgen.c: use symbolic bit/field definitions for DMA 2013-01-20 19:16:36 -03:00
Werner Almesberger
5efafd6fcc libubb/include/ubb/regs4740.h: add symbolic bit/field definitions for DMA 2013-01-20 19:16:17 -03:00
Werner Almesberger
486471e8fc ubb-patgen/ubb-patgen.c: use symbolic bit/field definitions for MSC_* 2013-01-20 17:34:39 -03:00
Werner Almesberger
4cb68b7ece libubb/mmcclk.c: use symbolic bit/field definitions for MSC_* 2013-01-20 17:34:17 -03:00
Werner Almesberger
8509c1f7b9 libubb/include/ubb/regs4740.h: add symbolic bit/field definitions for MSC_* 2013-01-20 17:34:01 -03:00
Werner Almesberger
a31351545c ubb-patgen/timeline.fig: timeline of pattern generation (description in README) 2013-01-18 14:18:44 -03:00
Werner Almesberger
8dda1200c1 ubb/solder-cable.fig: drawing to illustrate soldering a cable to UBB 2013-01-16 22:53:14 -03:00
Werner Almesberger
f920c6695b ubb-patgen/README: add "!\r" to UART example 2013-01-16 12:08:10 -03:00
Werner Almesberger
5be0b56aa1 swuart-chat/chat.c: options -r and -t to select pins; bit rate argument 2013-01-16 12:07:27 -03:00
Werner Almesberger
b8f2a8b764 ubb-patgen/ubb-patgen.c (send_buffer): track physmem_xlat_vec renaming 2013-01-16 10:30:41 -03:00
Werner Almesberger
e669a1b2d1 libubb/physmem.c (physmem_xlat_vec): rename to physmem_xlat 2013-01-16 10:29:46 -03:00
Werner Almesberger
35d4b9f381 libubb/physmem.c: remove physmem_xlat; cache open pagemap fd
To avoid contamination, we open the pagemap file with O_CLOEXEC.
2013-01-16 10:26:51 -03:00
Werner Almesberger
2de15b9aec ubb-patgen/ubb-patgen.c (send_buffer): use physmem_xlat_vec 2013-01-16 10:16:09 -03:00
Werner Almesberger
3161d5555b libubb/physmem.c (physmem_xlat_vec): more general version of physmem_xlat 2013-01-16 10:15:24 -03:00
Werner Almesberger
66080fe72e ubb-patgen/ubb-patgen.c: support trigger sequences, e.g., 01 for a rising edge 2013-01-16 04:45:49 -03:00
Werner Almesberger
4729d00b30 ubb-patgen/ubb-patgen.c: run at realtime priority while waiting for trigger 2013-01-16 03:56:17 -03:00
Werner Almesberger
6d749fafb8 ubb-patgen/ubb-patgen.c (main): sort options alphabetically in "switch" statement 2013-01-16 03:45:22 -03:00
Werner Almesberger
2161341267 ubb-patgen/ubb-patgen.c: new option -w to add delay before sending the pattern 2013-01-16 03:44:30 -03:00
Werner Almesberger
0129a59f86 ubb-patgen/ubb-patgen.c: new option -d to debounce the trigger 2013-01-16 03:30:04 -03:00
Werner Almesberger
39f4e48f8d ubb-patgen/ubb-patgen.c: new option -i to select frequency by cycle time 2013-01-16 01:58:16 -03:00
Werner Almesberger
c124e1a819 ubb-patgen/ubb-patgen.c: accept SI suffixes and a unit for durations as well 2013-01-16 01:11:57 -03:00
Werner Almesberger
9930ae6576 ubb-patgen/ubb-patgen.c: move frequency difference warning into select_freq
This way, all frequency selections print a warning when there's a difference.
2013-01-15 23:48:57 -03:00
Werner Almesberger
ff38f1c249 ubb-patgen/ubb-patgen.c (send_buffer): use physmem_flush instead of cacheflush 2013-01-15 23:31:30 -03:00
Werner Almesberger
a8f905a85f libubb/physmem.c: new function physmem_flush to flush cached writes to memory
This is mainly a wrapper for the "cacheflush" system call.
2013-01-15 23:30:02 -03:00
Werner Almesberger
752a77f015 ubb-patgen/ubb-patgen.c (show_frequencies): show duplicate entries only one
This only affects "quiet" operation since entries with the same frequency
differ in the why it's calculated in non-quiet operation.
2013-01-15 23:14:25 -03:00
Werner Almesberger
d5ea5d9ae9 ubb-patgen/README: brief description how ubb-patgen works 2013-01-15 19:34:58 -03:00
Werner Almesberger
0bb711e625 ubb-patgen/ubb-patgen.c: new option -t 0|1 to start pattern on TRIGGER/CLK
The trigger delay is typically in the order of 2 us but, since we're not
disabling interrupts or such, could also be much larger.
2013-01-15 18:40:16 -03:00
Werner Almesberger
10b0dea29c libubb/mmcclk.c (BUS_LIMIT_MHZ): explain the 56 MHz limit 2013-01-15 18:01:27 -03:00