new chibios
[gnuk/neug.git] / README
diff --git a/README b/README
index 762076d..b0535df 100644 (file)
--- a/README
+++ b/README
@@ -52,7 +52,7 @@ A2: Yes, we should.  It's not implemented yet, and I don't have an
 Targets
 =======
 
-STBee Mini and Olimex STM32-H103 is supported.
+STBee Mini, Olimex STM32-H103, CQ-STARM, and STBee are supported.
 
 
 Souce code
@@ -105,8 +105,8 @@ Then, we will have "neug.elf".
 How to install
 ==============
 
-STBee Mini
-----------
+STBee Mini and STBee
+--------------------
 
 Reset the board with "USER" switch pushed.  Type following to write
 to flash:
@@ -151,24 +151,36 @@ Structure of the NeuG
 =====================
 
 NeuG consists of two RNG, one is the RNG based on physical noise, and
-another is "Mostly Pseudo" RNG.  Outputs of RNGs are exclusive or-ed
+another is Pseudo RNG.  Outputs of RNGs are exclusive or-ed
 to generate final output.  Here is a figure of the circuit.
 
 
                         Entropy Pool (16-byte)
                        +----------------+
-                   8   | 8 parallel     |   8  ||<-- [ Vref ]
-                 +-/-- |  CRC-16        |<--/--||
+                       |                |
+                       | 8 parallel     |   8  ||<-- [ Vref ]
+                 +---- |  CRC-16        |<--/--||
                  |     | shift registers|      ||<-- [ Temperature Sensor ]
-                 |     +----------------+
-               =====    Physical-based RNG
+                 |     |                |
+                 |     |                |<----/------ SysTick
+                 |     +----------------+     1
+                 |     Physical-based RNG
+                 / 8
+                 |
+                 v
+               ===== Output function
                  |
                  / 32
                  |
-  Random     32  v      32 +--------+        1
-  Number  <--/--[XOR]<--/--| TinyMT |<-------/------ SysTick
+                 +-------------+
+                 |             |
+                 / 32          / 32  Seed
+                 |             |
+                 |             v
+  Random     32  v      32 +--------+
+  Number  <--/--[XOR]<--/--| TinyMT |
   Output                   +--------+
-                         Mostly Pseudo RNG
+                           Pseudo RNG
 
 
 STM32F103 has built-in Vref (voltage reference) and Temperature Sensor
@@ -187,9 +199,8 @@ output.
 
 I don't know how stable the noise source is.
 
-So, NeuG comes with second RNG.  It is pseudo RNG, shaken by interrupt
-timings.  It is not pure pseudo RNG, where sequence is deterministic.
-We use TinyMT for pseudo RNG.  Please see following page for TinyMT:
+So, NeuG comes with second RNG.  It is pseudo RNG timings.  We use
+TinyMT for pseudo RNG.  Please see following page for TinyMT:
 
    "Tiny Mersenne Twister (TinyMT): A small-sized variant of Mersenne Twister"
    by Mutsuo Saito and Makoto Matsumoto
@@ -232,6 +243,33 @@ Information on the Web
 Not yet.
 
 
+Known Problem(s)
+================
+
+On STBee (high-density device of STM32), I observed stall of
+generation of random number, after two hours, two hours and half, etc.
+Not yet identified the bug.
+
+Identified somehow:
+       adcp->state = ADC_ACTIVE
+       main thread: wait on condition variable at neug_get
+       rng thread: holding rb->m, event wait at rng_gen for ADC_DATA_AVAILABLE
+       idle thread: running
+       LED thread: event wait
+
+Kicking DMA controller again (ADC is continuous mode).
+
+(gdb) set ADCD1.dmastp->channel->CCR = 0
+(gdb) set ADCD1.dmastp->channel->CNDTR = 8
+(gdb) set ADCD1.dmastp->channel->CCR = 0x258f
+(gdb) x/x 0x40020000           # DMA interrupt status register (DMA_ISR)
+0x40020000:    0x00000007
+
+Then, it goes again.
+
+Lost DMA finish interrupt?
+
+
 Your Contributions
 ==================