The ARM firmware and host software for IRENA
  • C 45.3%
  • Python 38.8%
  • Awk 7.3%
  • TeX 5.3%
  • Makefile 2%
  • Other 1.3%
Find a file
2026-03-30 09:56:01 +02:00
adam irenafile: twothr has 6 L2 triggers 2025-10-27 17:12:02 +01:00
ahepam ahepam doEPOCH() 2025-11-17 23:51:58 +01:00
avr@a7e45f235d avr/leia: add 'n' → ports 2025-12-01 20:45:50 +01:00
bgot bgot_quicklook.py: added handler for broken HK and data lines 2018-02-20 09:09:37 +00:00
ccdata ccdstream: use inotityx for -f follow mode 2016-08-01 07:35:40 +00:00
ce4det irena ce4: pulse analysis 2016-11-16 14:13:05 +00:00
darena darena: sample fit 2020-08-27 19:49:13 +00:00
direna direna/irena reorg, FRED update to SOIRENA 2018-04-30 12:57:52 +00:00
doc xrena fpga address map 2019-10-11 22:52:28 +00:00
erena erene flash debugged 2020-07-12 11:31:26 +00:00
etc/udev/rules.d udev: add avrdude.rules 2023-12-23 12:04:06 +00:00
flash_aarena new altera images with proper fifo modes 2012-03-27 09:30:06 +00:00
flash_adam adam: switch to external sdcard before initializing 2015-09-14 09:21:50 +00:00
flash_alke Gd4 (flash_alke) 9ch TWOTHR bitfile 2025-10-30 10:01:25 +01:00
flash_BGOT arm BGOT: new project 2018-01-31 16:23:53 +00:00
flash_ccdrena ccdrena: make projections work 2013-09-30 18:17:55 +00:00
flash_CE4ARENA CE4ARENA: fixes for sample mode and inverted TxSCLK 2017-04-25 19:36:30 +00:00
flash_CHAOS CHAOS CRON.RC: HK schedule as in FLY 2025-01-06 22:57:37 +00:00
flash_darena erene flash debugged 2020-07-12 11:31:26 +00:00
flash_ept flash_ept copied from heti 2011-09-22 09:54:10 +00:00
flash_erena updated flash_erena to FANS flight configuration and removed unnecessary code from erena.py 2021-08-06 12:25:26 +00:00
flash_esther direna: configured for the Zugspitze 2013-11-20 10:14:17 +00:00
flash_esther32 PRESSURE.RC fix spy on 2011-09-07 11:04:56 +00:00
flash_flyrena flyrena: new Altera bitfiles 2015-03-13 11:16:42 +00:00
flash_fred2 flash_fred2: new altera image with more samples resolution 2016-11-11 14:42:55 +00:00
flash_gps arm: spi_submit(rate, ...) 2016-08-03 18:10:35 +00:00
flash_HARENA STISANA3 bitfile 2024-03-28 10:37:14 +00:00
flash_heti flash_heti: add channel list comment 2011-09-12 09:13:24 +00:00
flash_i128 Fred2 uses 1µs shapers 2013-02-06 15:42:32 +00:00
flash_iarena IARENA: arena SN1, Saclay config 2021-04-15 07:29:25 +00:00
flash_icucore stein altera: EM smoke test 2014-01-08 21:13:22 +00:00
flash_irena irena for MD3 2019-02-11 17:22:48 +00:00
flash_IRENA flash_IRENA: CRONGD4 2025-10-06 16:42:55 +02:00
flash_lauri in scope readout mode, only read nsums samples 2011-12-09 09:49:27 +00:00
flash_LEIA leia: lost+found 2026-02-05 10:31:07 +01:00
flash_MD3 flash_MD3: D3D fix read masks 2023-07-16 11:50:51 +00:00
flash_MUSTANG nmmustang: fix nmch fifo schedule 2023-01-15 23:54:58 +00:00
flash_NM_MCS MCS: bitfile 2022-10-07 12:00:32 +00:00
flash_NMAHEPAM SETH raise BGO thres to 15 2025-08-08 11:58:31 +02:00
flash_NMHERTZ nmhertz: scandac() 2019-08-18 08:35:16 +00:00
flash_NMirena nm64: 6 green tubes up and counting 2017-07-20 19:45:42 +00:00
flash_NMRENA NMRENA: new bitfiles with unrelated bate changes 2024-07-23 08:43:47 +00:00
flash_pirena pirena: new flash image, bitfile 2022-05-06 10:48:48 +00:00
flash_sarena ccddriver in secondary FPGA operational 2012-02-21 15:33:24 +00:00
flash_sirena arm echo new syntax: e/lcd[] 2019-03-06 21:50:56 +00:00
flash_sirena_ce4 arm echo new syntax: e/lcd[] 2019-03-06 21:50:56 +00:00
flash_sirenaspw arm echo new syntax: e/lcd[] 2019-03-06 21:50:56 +00:00
flash_SpW fixes fro the new syntax of things 2019-01-30 15:23:12 +00:00
flash_TANOS TANOS: R=packets/sec over UDP 2019-09-22 14:19:35 +00:00
flash_tarena tarena: Bitfile from 2025 2025-11-10 11:39:00 +01:00
flash_thomas direna/irena reorg, FRED update to SOIRENA 2018-04-30 12:57:52 +00:00
flash_torsten nmcounter: fix counters numbered > 32 2018-02-16 11:56:55 +00:00
flash_varena testpulser frequency 2012-02-23 10:50:22 +00:00
flash_zugspitze direna: configured for the Zugspitze 2013-11-20 10:14:17 +00:00
flash_µM µMustang analysis 2021-07-04 14:07:48 +00:00
gps nmea2gpx: make loadable as module 2018-11-15 10:26:12 +00:00
hertz nmhertz: late commit 2019-11-22 13:18:50 +00:00
i128 shaper2u2: dnl 2022-10-06 22:37:48 +00:00
idata udef-x ghost: Read Delay Scan 2021-04-23 21:58:36 +00:00
include spi_rate work 2018-12-06 11:08:18 +00:00
irena irenarc-jfett for Svea 2026-02-05 10:31:38 +01:00
mcs mcs: Makefile 2020-02-27 15:01:04 +00:00
mustang musrang cron: pull from etmus1 2023-09-12 13:12:55 +00:00
nm64 nmdbstream: fix str-bytes error 2026-03-30 09:54:52 +02:00
pidata pirena pidata: fix gpt scripts 2015-02-28 11:36:20 +00:00
pirena arm lost+found commit 2022-02-04 15:33:05 +00:00
sixs remove AD inversion workaround 2012-02-17 09:59:09 +00:00
spwgse spwgse: parser for hss 2023-03-20 13:04:10 +00:00
stis STIS: new dorn data format analysis 2024-03-24 18:28:32 +00:00
vdata follow mode 2012-03-13 19:37:37 +00:00
.gitignore leia: lost+found 2026-02-05 10:31:07 +01:00
.gitmodules add submodule avr 2025-10-30 10:17:36 +01:00
ad9251.py arm/ad9251.py: do not mess with ADC_OUTPUT in ADCid(), save _adc_spi_base 2020-04-14 08:39:52 +00:00
adc.c DAC initialized to 0 2011-04-08 10:27:07 +00:00
adc.h sirena power control 2011-04-15 15:31:16 +00:00
adctest.py sirena_ana python driver with solo heteptana object 2016-12-06 21:15:33 +00:00
agilent3322A.py agilent3322A: verbosity 2025-05-08 13:28:18 +02:00
altera.c arm ssp_isr: disable interrupt when no buffer 2025-07-29 16:30:38 +02:00
altera.h parse_alt_cmd_flags: add alt_cmd_dflag 2025-03-04 21:39:34 +01:00
altera2.c arm: major churn around struct keywords, altera2, set_register 2018-12-09 23:15:06 +00:00
altera2.h arm: major churn around struct keywords, altera2, set_register 2018-12-09 23:15:06 +00:00
arena.py arena.py: Icc shunt 1Ω instead of 0.1Ω (iarena) 2021-03-18 20:07:21 +00:00
armlib.py armlib.ifc.Sync(on=True) 2025-10-06 17:15:12 +02:00
armlib.sh armlib.sh: automatic python selection 2020-10-20 22:32:19 +00:00
base85.c base85: fix _encode, +33 on last byte, s-- on EOS 2023-11-17 12:01:25 +00:00
base85.py python implementation of base85 codec 2023-11-17 11:55:49 +00:00
bin2ihex.c bin2ihex, from the web 2014-06-06 20:25:53 +00:00
ccdrc.py ccdrc: dodarks default 2016-02-11 22:29:41 +00:00
chaos.c arm: parse_expression_square(…, optional) enhancements 2025-02-23 23:18:16 +00:00
chaos.h arm/chaos: major rewrite 2024-05-24 12:41:11 +00:00
chaos.py chaos.py: eth_retry, fix EEY, new adc format 2024-07-14 08:54:18 +00:00
commands.txt return code fixes 2010-08-31 21:13:45 +00:00
controlpipe.c linefeed at the end of all direct messages 2011-07-04 14:55:37 +00:00
controlpipe.h add variable for usb status 2010-07-19 01:45:54 +00:00
crc.c arm: major churn around struct keywords, altera2, set_register 2018-12-09 23:15:06 +00:00
crc.h add uart message port to flyrena/message 2013-06-18 14:59:01 +00:00
crt.s arm: irq and stack diagnostics, fixes 2018-12-09 01:57:57 +00:00
cvphase.py cvphase: reset numavg to restart averaging 2025-10-20 09:33:51 +02:00
darena.py darena: late commit 2020-07-10 09:33:19 +00:00
direna.c altera/inject: remove unused flags parameter 2024-03-24 00:27:46 +00:00
direna.h arm: irena/* for SolO trigger/ADAM 2014-04-04 08:07:50 +00:00
direnarc-zugspitze.py direna: configured for the Zugspitze 2013-11-20 10:14:17 +00:00
display.c arm: spi_submit(rate, ...) 2016-08-03 18:10:35 +00:00
display.h Added function lcd_display 2014-04-10 15:07:40 +00:00
dma.c arm/dma: typo in comment 2018-10-05 15:57:58 +00:00
dma.h usb dev stat irq to monitor disconnects 2010-07-29 13:22:48 +00:00
dorn.c dorn: user ALT_CMD_DF for dorn/fifo/strobes and /enable 2025-03-04 21:41:22 +01:00
dorn.h arm: add command dorn/ 2025-02-23 00:11:56 +00:00
dorn.py leia_stepper: VbiasD calibration 2025-12-01 20:28:04 +01:00
dorn_hk.py dorn_hk: return slice with the data 2025-08-01 13:31:40 +02:00
dosfs.c arm: main loop work 2010-06-03 05:09:39 +00:00
dosfs.h arm: compile with debian arm gcc 2018-04-26 22:04:40 +00:00
dosfs_test.c expressions and variables 2010-07-04 18:06:11 +00:00
enc28j60.c arm: eth/init/force 2024-05-30 19:07:46 +00:00
enc28j60.h arm: eth/init/force 2024-05-30 19:07:46 +00:00
erena.c arm: parse_expression_square(…, optional) enhancements 2025-02-23 23:18:16 +00:00
erena.h erena.c added 2012-11-05 08:27:26 +00:00
erena.py updated flash_erena to FANS flight configuration and removed unnecessary code from erena.py 2021-08-06 12:25:26 +00:00
erenarc.py erena initial working config 2013-01-14 08:33:04 +00:00
expression.c arm expression: fix and or operators 2019-03-12 13:19:45 +00:00
expression.h arm parser: export parse_atom, for /n=(expr) named parameters 2017-09-01 15:50:10 +00:00
fca.py pirena fixed for armlib, split out fca.py 2019-11-01 15:47:44 +00:00
file.c arm: 2018-10-09 12:52:18 +00:00
file.h add file_buffer cache 2011-06-27 16:53:25 +00:00
find_code_location.py arm: find_code_location.py to find code address in assembly 2018-12-10 19:39:24 +00:00
flash.c arm spi: try to make sure the SPI is idle after errors 2019-07-17 21:07:20 +00:00
flash.h arm flash: prepare for 16Mbit flash chips 2016-01-05 16:43:12 +00:00
flashdongle.py stein altera: EM smoke test 2014-01-08 21:13:22 +00:00
flow.py usbterm.py and solopath.py: set_prompt() for ipython 3 and 5 2016-11-11 10:47:59 +00:00
flyrena.c arm ssp improved error reporting 2019-03-04 11:12:56 +00:00
flyrena.h arm: stream from_file, altera_cmd improvements 2018-12-18 11:55:29 +00:00
flyrena.py armlib: convert the remaining skripts to the new way of things 2018-03-03 20:00:44 +00:00
gps.c arm: all new streaming 2018-12-14 17:39:28 +00:00
gps.h arm gps: debugged /read /parse 2015-11-21 07:33:31 +00:00
gps.py usbterm.py and solopath.py: set_prompt() for ipython 3 and 5 2016-11-11 10:47:59 +00:00
harena.py harena: pulser tests 2023-03-20 13:20:51 +00:00
hello.c arm: flash works, now debugging file 2010-06-26 12:35:50 +00:00
hetept_dps.py icucore python: v03 dps format 2014-02-27 15:46:53 +00:00
hetept_ppss.py hetep config: add log2 version of the nominal science data, for comparisson 2013-11-22 18:27:02 +00:00
heteptdump.py uicu: dump hetept config 2014-01-20 20:59:01 +00:00
hk.awk hk.awk: print messages 2024-01-24 14:23:56 +00:00
hk.c arm/hk: minor code rearrangement 2024-05-30 11:38:35 +00:00
hk.h arm/hk: expose avr_hk in hk.h 2024-05-22 13:54:21 +00:00
i2c.c fix i2c/wait, put the ms into the correct bitfield 2025-06-03 12:32:28 +02:00
i2c.h arm: i2c command 2025-02-23 21:03:51 +00:00
i128.py armlib: convert the remaining skripts to the new way of things 2018-03-03 20:00:44 +00:00
icurc.py icurc: fix opheater min/max 2014-05-16 12:21:32 +00:00
idef-x-rc.py u-idef-x: python3, new ifc, fixes 2021-03-18 20:08:25 +00:00
ipython_config.py sirena_ana: add opheater 2017-02-28 21:35:17 +00:00
irena.c arm spi: try to make sure the SPI is idle after errors 2019-07-17 21:07:20 +00:00
irena.py irena: fix irenarc exception 2025-10-06 17:14:21 +02:00
irenarc-ahbgo.py irenarc for AHEPAM BGO test 2022-10-10 14:30:28 +00:00
irenarc-ce4det.py irena: TANOS_JR scripts 2018-06-03 09:56:13 +00:00
irenarc-chaos.py armlib: add class Keep_Alive_Schedule 2025-07-30 12:16:17 +02:00
irenarc-default.py Gd4_2thr config 2025-10-30 10:03:13 +01:00
irenarc-jfett.py irenarc-jfett for Svea 2026-02-05 10:31:38 +01:00
irenarc-µM.py muM+Mustang invert Mustang pulse shape 2023-03-28 13:07:15 +00:00
isr.c isr: stop_stack() calls in stop() 2024-11-15 20:08:16 +00:00
isr.h isr: add "memory" to CPSR asm 2024-11-08 11:51:20 +00:00
lasc.py iarena: unified, larger la and scope 2021-03-22 15:36:20 +00:00
led.c altera/inject: remove unused flags parameter 2024-03-24 00:27:46 +00:00
led.h arm: led 2018-11-16 15:59:06 +00:00
leia_stepper.py leia: lost+found 2026-02-05 10:31:07 +01:00
lpc2148-openocd.cfg openocd.cfg: blind fixes to make it load, still broken 2018-02-16 10:37:19 +00:00
lpc2148-rom.ld arm ld script: do not load section persists 2019-04-17 22:48:31 +00:00
mainloop.c arm: parse_expression_square(…, optional) enhancements 2025-02-23 23:18:16 +00:00
mainloop.h arm mainloop: proper memory barrier (does not seem to make much difference) 2021-03-23 11:49:51 +00:00
Makefile irenarc-jfett for Svea 2026-02-05 10:31:38 +01:00
message.c arm: remove flash/message, uart messages prio>1 go via ring 2018-12-17 11:52:22 +00:00
message.h arm microsd: retry failed commands, issue debug message 2019-07-19 19:50:18 +00:00
microsd.c arm microsd: reset timeout and error flags more often 2019-08-30 14:35:07 +00:00
microsd.h arm: spi_submit(rate, ...) 2016-08-03 18:10:35 +00:00
miniterm.py miniterm.py added, late ... 2012-08-17 21:00:06 +00:00
narena.py dorn.py: fixes and CONFIG rename 2025-01-07 00:16:59 +00:00
net.c UDP streaming implemented, not tested 2010-08-30 20:31:26 +00:00
net.h arm net htonl: optimize for arm isa 2023-11-13 23:15:15 +00:00
nm64-auto-run.sh nm64: --auto-run=interactive, remove --capture 2020-09-28 12:13:07 +00:00
nm64.c arm: parse_expression_square(…, optional) enhancements 2025-02-23 23:18:16 +00:00
nm64.h nm64: nm64_thr, nm64_scan, uart_conf become alias for Z[64…] 2020-01-06 20:33:34 +00:00
nm64.py nm64 Reboot: always do a hard reset 2024-11-08 18:20:54 +00:00
nm_mcs.py nm_mcs: v2 prod, (do not load (wrong) bitfile), dac value fixes 2022-05-05 13:42:06 +00:00
nmahepam.py dorn: LEIA hk() 2025-11-17 23:57:40 +01:00
nmhertz.py darena driver 2020-04-01 21:32:57 +00:00
nmmustang.py nmmustang: fix Scan2D.func() default hv, and thr 2023-05-23 10:54:18 +00:00
nmrena.py nmrena: add proc 0xee0c to init_irena() 2024-07-22 10:58:00 +00:00
nomalloc.c arm: flash works, now debugging file 2010-06-26 12:35:50 +00:00
OLF.awk split OLF() from NM64.awk into ../OLF.awk 2023-02-27 21:03:18 +00:00
oops.py oops.py: python3 2024-11-15 17:06:41 +00:00
parser.c parse_expression_square: fix optional_brackets 2025-03-03 20:22:11 +00:00
parser.h arm: parse_expression_square(…, optional) enhancements 2025-02-23 23:18:16 +00:00
pirena.py arm: SerialNo-CHAOS=13 2024-05-22 13:07:57 +00:00
plltest.py arm: add module plltest 2025-03-02 21:40:28 +00:00
plugin.c arm/spi: clear spicmd 2024-05-31 17:01:33 +00:00
plugin.h arm/plugin: ->par is now default flags, buf=flash_buffer 2024-05-24 12:21:53 +00:00
pressure.awk chmod a+x pressure.awk 2025-08-01 13:30:13 +02:00
pressure.c arm pres/fiforeset: reset spi_fifo too 2024-05-24 12:23:34 +00:00
pressure.h arm/pressure: add flags for a second sensor 2024-04-18 13:18:06 +00:00
pressure.py pressure.py: support readout without cal words 2023-11-29 13:21:07 +00:00
rc.local nm64-auto: independence from unit and host 2020-10-07 11:25:01 +00:00
README.txt better use GPL2, I must not grant CAU patent licenses 2011-05-17 08:19:27 +00:00
rtc.c rtc: fix clock/short to actually set the variables 2024-01-24 14:25:24 +00:00
rtc.h clock/fudge: use time integer, refactor clock_command 2023-12-04 19:26:50 +00:00
sarena.py sarena first spectra settings 2012-02-17 09:58:33 +00:00
scangen.py module scangen, late addition 2020-07-13 10:10:21 +00:00
script.c script: properly save old_locals 2025-07-17 22:56:34 +02:00
script.h arm: stream from_file, altera_cmd improvements 2018-12-18 11:55:29 +00:00
sdcard-howto.txt sdcard-howto: erase the embedded sd-card 2014-09-21 19:25:57 +00:00
sirena.c arm ssp improved error reporting 2019-03-04 11:12:56 +00:00
sirena.h struct command, local variable name tables 2011-05-02 21:47:01 +00:00
sirena_ana.py heteptana.py: renamed to l1l2.py to make more consistent 2018-10-17 10:24:56 +00:00
solo_msgdump.py hetept: config dump utility 2014-03-06 16:54:47 +00:00
solorc-hetept-em1-emi-treo.py sologse: STREAMTEST as run at TREO for hetept EM1 EMI test 2014-04-01 13:25:39 +00:00
solousb.py solomsg: use new solomsgclass 2015-01-09 12:05:57 +00:00
spi.c arm: spi/chaos spi/ssel[] 2024-01-06 11:48:23 +00:00
spi.h arm: spi/chaos spi/ssel[] 2024-01-06 11:48:23 +00:00
spw.c nm/counter, alt_cmd_aflag 2019-12-03 19:50:14 +00:00
spw.h arm: SpW support 2018-11-16 15:59:57 +00:00
SpW.py SpW: python3 2023-01-15 19:46:11 +00:00
ssp.c arm ssp_isr: disable interrupt when no buffer 2025-07-29 16:30:38 +02:00
ssp.h arm ssp_isr: disable interrupt when no buffer 2025-07-29 16:30:38 +02:00
stream.c poll_dma_submit(0,0) 2024-10-29 15:11:54 +00:00
stream.h arm dma/stream: rate limit, batch limit 2019-07-16 13:04:23 +00:00
strtol.c arm: flash works, now debugging file 2010-06-26 12:35:50 +00:00
tarena.py tarena: fix lasc 2025-10-20 09:34:32 +02:00
TARENA_readme.txt TARENA_readme.txt: old readme file how to operate the TARENA 2018-08-31 14:00:55 +00:00
tarenarc.py tarena: use ix_filter(2) 2015-03-30 16:15:01 +00:00
tds3034c.py cvphase.py: script to measure C-V curves 2025-05-08 13:29:01 +02:00
tsirena.py tsirena.py: new shell for Torsten's sirena 2018-02-16 10:46:14 +00:00
u-idef-x.py IARENA: arena SN1, Saclay config 2021-04-15 07:29:25 +00:00
uart.c uart base85: fix dma_sent 2023-11-17 20:03:53 +00:00
uart.h arm base85: use for uart data =B85, parse_data :{, flash/dump/base 2023-11-15 23:45:42 +00:00
uartterm.py uartterm.flush_infos() 2025-05-25 22:27:10 +02:00
uccd.py usbterm.py and solopath.py: set_prompt() for ipython 3 and 5 2016-11-11 10:47:59 +00:00
udirena.py arm py: fixes 2018-03-13 11:53:41 +00:00
udp.c arm: udp: do not reset eth when udp_poll_message sent a packet 2025-07-29 16:29:50 +02:00
udp.h arm: fix udp_send_message() 2019-03-24 01:24:34 +00:00
udpterm.py udpterm s/jobs/Jobs/ 2025-08-08 17:39:55 +02:00
uicu.py icucore python: v03 dps format 2014-02-27 15:46:53 +00:00
uirena.py uirena: generic µirena script 2019-10-08 20:38:51 +00:00
update_revision.sh revision = commit id 2024-09-03 13:10:59 +00:00
usb.c arm/usb: usb_reset() 2024-05-30 16:19:51 +00:00
usb.h arm/usb: usb_reset() 2024-05-30 16:19:51 +00:00
usbconfig.c fixes fro the new syntax of things 2019-01-30 15:23:12 +00:00
usbconfig.h arm: more usb code 2010-06-06 00:19:02 +00:00
usbterm.py usbterm.Reset(): fix .wait_for_usb() 2025-05-25 22:28:17 +02:00
usirena.py use python3 2021-07-04 14:07:26 +00:00
uvirena.py fix default timing parameters 2012-01-31 17:18:53 +00:00
variables.c parse_expression_square: fix optional_expression 2025-02-24 15:11:39 +00:00
variables.h nm64: nm64_thr, nm64_scan, uart_conf become alias for Z[64…] 2020-01-06 20:29:25 +00:00
virena.c arm: major churn around struct keywords, altera2, set_register 2018-12-09 23:15:06 +00:00
virena.h arm/virena added 2011-08-18 06:45:19 +00:00

This program implements ARM7 firmware for the IRENA family of data
acquisition instruments that are develeoped and used at the Institute
for Experimantal and Applied Physics at the Christian-Albrechts-
University in Kiel, Germany.

Copyright (c) 2010-2011 Christian-Albrechts-Universität zu Kiel
Copyright (c) 2010-2011 Stephan Böttcher

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

######################################################################

From here on you can read early concepts, which may have been
implemented as outlined, or differently, please refer to the code.

Fosc: 12 MHz
CCLK: 60 MHz
PCLK: 60 MHz
USBCLK: 48 MHz

Peripherals:
  
   USB
      control pipe for commands, 
         handled by ISR, feeding command queue.
         returns command status

      bulk OUT for command payloads.
         handled by DMA and ISR
         consumed by command queue, FPGA config. 

      bulk IN for fifo streaming or command returns. 
         handled by DMA and ISR
         fed by FPGA or SD card

    SPI
       7.5 Mbps steaming in tight busy-wait loop
       sd-card without filesystem, sequential block reads.
       flash with R/O FAT16 filesystem.

    SSP
       25 Mbps in tight busy-wait loop
       streaming FPGA output into DMA RAM

    UART0
       handled by ISR
       feeding command queue

    ADCs
       houskeeping reads

    TIMER1 supplies a clock to the FPGA
    TIMER0 captures attn from the FPGA

    RTC 
       provides time since power on.


    GPIO0
       SSel for SPI (3 outputs)

    GPIO1
       FPGA configuration.  Software serial (with SSP polling?)


Nothing ever blocks except in a tight loop serving the SPI and SSP
streams.  SPI synchronous IO with SSP polling in the innermost poll
loop.  FPGA config with SSP polling.

No jiffies.

SSP stream modes:
   idle:   no SPI activity.
   write:  send a buffer, capture without 0EFF_0EFF filter.
   read:   read response, capture without 0EFF_0EFF filter, send NOPs
   fifo:   send FIFO_read, capture with 0EFF_0EFF compression filter
All data goes into DMA RAM.

Commands:

  Read flash to USB
  Write flash from USB
  Erase flash block?

  Read SD to USB
  Write SD from USB
  Erase SD-card?
  
  Write FPGA register (SSP)
  Read FPGA response (last n words from DMA RAM ring buffer)

  Set FPGA fifo streaming mode (SD and/or USB)
  
  Boot FPGA from flash file
  Boot FPGA from USB

  Write RAM from flash file
  Write RAM from USB
  Read memory to USB.
  Execute command script.
  Goto address.
  

DMA RAM:  
   4kByte Ring Buffer for FPGA output
   Command payload IN OUT buffers.
   DDs.

Main RAM: 
   code, 
   command scripts.
   status

Boot: 
   Initialize Hardware, SD-card.
   If USB present, or UART activity:
      enter main command loop, wait for USB/UART commands
   Else
      read file INIT and execute script
   Else
      read file IMAGE and goto RAM reset vector