FST-01 is a tiny USB 32-bit computer. In fact, FST-01 is an abbreviation and its full name is "Flying Stone Tiny ZERO-ONE".
It is designed by Flying Stone Technology, a company in Maebashi, Gunma, Japan.
The concept is "Minimalist Design". It is by free (as in freedom) hardware design. The intended applications are Gnuk (The Cryptographic Token for GnuPG) and NeuG (True Random Number Generator based on ADC noise). Those applications are Free Software.
Flying Stone Technology is a second source manufacturer of "Gnuk", which is copyrighted by the Non-Profit organization, Free Software Initiative of Japan.
For those who want rich features, please consider Leaf Maple or Maple Mini, instead.
SWD port (GND, SWD-CLK, SWD-IO) Power port +---------------------+ Vdd |[] []()() -------+ GND |[] | | |()() I/O port | USB | | (PA2, PA3) | | | -------+ +---------------------+
Please use FST-01 Q&A site for your questions.
As explained in the section above, we intend to run Gnuk on FST-01. It is copyrighted software distributed under GPLv3 license.
Gnuk is an implementation of Cryptographic Token for GnuPG, and it runs on STM32F103. Source code is available at gniibe.org or gitorious.org. FOr source code, please visit: https://gitorious.org/gnuk/gnuk/trees/release/1.0.1
For more information about Gnuk, please visit: Gnuk WiKi and Official Gnuk Documentation.
Also, we intend to run NeuG on FST-01.
NeuG is an implementation of True Random Number Generator based on quantization error of ADC.
Note that only an application can be installed on FST-01 (either Gnuk or NeuG).
For Gnuk 1.0.1, we use GCC ARM Embedded 4.6-2012-q2.
In this product, it contains copyrighted software, Gnuk version 1.0.1, that is licensed under the GPLv3. A copy of that license is included in this WiKi, see GPLv3. You may obtain the complete Corresponding Source code for a period of three years after the last shipment of this product, which will be no earlier than 2016-01-01, on the manufacturer website at http://git.gniibe.org/gitweb/?p=gnuk/gnuk.git and we put the tag "release/1.0.1" for the version of the product.
Note that Gnuk binary in the first lot of FST-01 was compiled with "-O3 -Os" option by GCC ARM Embedded 4.6-2012-q2.
We have a mailing list for Gnuk/NeuG: https://lists.alioth.debian.org/mailman/listinfo/gnuk-users
As well as git.gniibe.org, the source code repositories are available at : https://anonscm.debian.org/cgit/gnuk/
We use SWD port to write flash ROM of MCU. Since SWD is a kind of new, there is not yet good hardware and software experiences.
We select ST-Link/V2 for cheap SWD debugger and wrote our own tool stlinkv2.py in Python. The tool stlinkv2.py is distributed within Gnuk. See this article for the connection of ST-Link/V2 and FST-01.
Forthcoming OpenOCD 0.6.0 will support ST-Link/V2 and SWD. You will be able to use that, too.
Prices will be 35, 36, and 37 USD, respectively.
It is also available at Flying Stone Technology (飛石技術), person to person. See Buy FST-01! page at gniibe.org (in Japanese).
FST-01 is minimum STM32F103 board, which is suitable to run computation-oriented applications like Gnuk.Please visit this page for detail.
- Dimensions: 1.62 x 0.52 inch (including USB plug)
- USB Bus Powered
- MCU: 32-bit ARM Cortex M3 at 72MHz (STM32F103TBU6), flash ROM: 128KB, RAM: 20KB
- SPI Flash Memory: 4MB
- SWD port, Two I/O pins
- Content of Flash ROM of MCU: As a side effect of test plan, FST-01 comes with Gnuk version 1.0.1 installed on the flash ROM of MCU and it is protected. You need to disable the protection before writing the flash ROM.
FST-01 without enclosure
This is a bare board for evaluation, development or those who want their own enclosures.
You can access SWD port and change the content of flash ROM.
FST-01 with heat shrink tube
The board is covered by transparent heat shrink tube. Thus, it is not possible to access SWD port.
This can be daily use as Gnuk Token.
FST-01 with case (P1A-120704U)
The board comes with the case. Note that it is users who put the board to the case.
This would be better if transparent tube doesn't match your taste or you want to change the content of flash ROM of MCU.
Although FST-01 PCB is designed following the recommendation of P1A-120704U specification, the case might be a bit larger and you will need a bit of glue to fit the board and the case. Otherwise, the board will be able to move a bit (< 1mm or so).
The board design is available as KiCAD format. Please visit FST-01 Git repository.
The schematic design is distributed under Creative Commons Attribution 3.0 Unported License (CC BY 3.0).
The PCB design is distributed under Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0).
Part # | Name | Detail | Package | Manufacturer | Distributor | distributor reference |
---|---|---|---|---|---|---|
C1 | Capacitor | 27pF | C0402 | |||
C2 | Capacitor | 27pF | C0402 | |||
C3 | Capacitor | 0.1uF | C0402 | |||
C4 | Capacitor | 0.1uF | C0402 | |||
C5 | Capacitor | 0.1uF | C0402 | |||
C6 | Capacitor | 0.1uF | C0402 | |||
C7 | Capacitor | 0.1uF | C0402 | |||
C8 | Capacitor | 4.7uF | C0603 | |||
C9 | Capacitor | 0.01uF | C0402 | |||
C10 | Capacitor | 4.7uF | C0603 | |||
C11 | Capacitor | 0.1uF | C0402 | |||
R1 | Resister | 510R | R0402 | |||
D1 | LED | Blue | LED0603 | |||
J1 | Connector | USB 2.0, 1002-015-01001 | USB Plug A Male | CNC Tech | Digikey | 1175-1020-ND |
U1 | MCU | STM32F103TBU6 | QFN36 | ST Microelectronics | AVNET | STM32F103TBU6 |
U2 | LDO V-Regulator | CAT6217-330TDGT3 +3.3V | TSOT23-5 | ON Semiconductor | Mouser | 698-CAT6217330TD-G |
U3 | USB Terminator | NUF2221W1 | SOT363 | ON Semiconductor | Digikey | NUF2221W1T2GOSTR-ND |
U4 | SPI Flash Memory | SST25VF032B-80-4I-QAE-T | WSON8 | Silicon Storage Technology | Digikey | SST25VF032B-80-4I-QAE-T-ND |
X1 | Crystal | ABM8G-12.000MHZ-18-D2Y-T | 3.2mmx2.5mm | Abracon Corporation | Digikey | 535-10261-2-ND |
Enclosure | P1A-120704U White | 1.2 x .71 x .40 inch | New Age Enclosures |
MCU is Cortex-M3 based ARM by STMicroelectronics. It runs at 72MHz, it has 128KB flash ROM and 20KB RAM.
Secret data should be on MCU's flash, but non confidential data (such as backup of public keyring) can be on SPI flash memory.
We use SST25VF032B (32Mbit = 4MB).
We use NUF2221W1 USB Upstream Terminator.
This is because it has the feature of electrostatic discharge protection. It is also better for smaller footprint than two capacitors and two resistors.
We use CAT6217-330 for 3.3V Regulator (from 5V). Currency of 150mA is enough.
We use 12MHz XTAL CL=18pF.
This is because we can find smaller footprint XTAL for 12MHz (than 8MHz).
We use a LED to show status.
SWD port is to install firmware to MCU's flash ROM.
We decided to have two I/O pins. (One I/O pin is not enough even for minimalist.)
With two I/O pins, it can be:
FST-01 usage is just connect it to USB port, like USB thumb drive.
MCP1700T-330 would be alternative (electrical characteristic seems worse, but for the case of more current). In this case, we need to change circuit a bit.
It is possible to just replace XTAL with 12MHz XTAL CL=20pF. This change is within the margin of the design.
It would be better to also replace C1 and C2 to 33pF together in that case, if you will do that from the beginning.
See explanation about load capacitance in Wikipedia.
FST-01 is intended to be inserted to USB port directly. If the usage is not direct but connected by extension cable, it is better to connect Shield GND and Signal GND by resister (and capacitor if you like).
Reference: http://electronics.stackexchange.com/questions/4515/how-to-connect-usb-connector-shield
USB_EN is not needed, but pin 5 of NUF2221W1 can be connected to 3.3V (Vdd) directly.
In many designs of boards with STM32F103, we see something like that, but because it is possible to control USB D+ to be 0V by software, USB_EN is not needed.
The size is somewhat too small to be useful, so, it could be a special users' option and no chip would be OK by default.
PCB images are generated by prettygerbv.
Thanks to Fusion PCB service, we made PCB of FST-01 Engineering Prototype.
PCB Assembly was done by User:Gniibe by hand. See my article for detail.