Flying Stone Mini 55 and its purpose

The purpose of FSM-55 is to encourage more people to join development of free software and free hardware design.

Its features are intentionally (quite) limited, so that people can design their own boards by themselves.

The experience around FST-01

We developed FST-01 in 2011 and we have been selling since 2012. As specified, FST-01's major usage is crypto device.

In the experience of FST-01, we realized that people don't have (enough) consciousness about users' computing freedom (or specifically, how users can control their crypto computations).

Although it's getting improved, hardware access has some barriers for its users, still.

Major difficulties

Especially, it seems that following three topics are major difficulties.

  • 32-bit MCU

While price of MCU by Cortex-M0 is comparable to ATmega, people seem still prefer ATmega.

  • SWD debugging

SWD port is very convenient interface, but it's not well supported by Free Software tools. While OpenOCD 0.8 included some improvements, we still have problems.

  • SMD soldering

Designing PCB with Free Software has been getting improved, and it's getting cheaper to manufacture. Still, people tend to avoid soldering at all, or avoid SMD soldering.

More barriers

Sample code

While it's getting popular to use GNU Toolchain for embedded system and people encourage the practice of sharing hardware designs too, old practices around industry are still there.

Typical example is sample code distributed by semiconductor manufacturers. Let's see the case of ST's License Agreement V2. It says:

Product: means Your and Your's end-users' product or system, and all
the related documentation, that includes or incorporates the Licensed
Software and provided further that such Licensed Software or
derivative works of the Licensed Software execute solely and
exclusively on microcontroller devices manufactured by or for ST.

Among industry, it's common a license (permission) bounds to the devices. It would be no problem for DIY hobbyists in the short term, but when you write your own code which depend on such a code, your code would be difficult to port to other devices. I think that free software developers should say no to such a practice.

Tool and interface information

For flashing ROM of MCU, we use the SWD debugger (hardware). The implementation, ST-Link/V2, is cheap and availability is good (even clones exist). However, it's programming interface from host PC is not available publicly. There are some supports to ST-Link/V2 in OpenOCD (or my own tool stlinkv2.py) and it works somehow, it's basically reverse-engineered work, thus, it doesn't work well sometimes on some occasions.

Free hardware design of SWD debugger with full interface information will be good. Even though hardware design would not be free, full interface information should be required.

Besides, ST-Link/V2 has a feature of firmware upgrade (of itself). Unfortunately, we need to run the executable on Windows to upgrade the firmware, now.

Intentions from designer

  • Let's use 32-bit MCU!

It's cheap and powerfull. Cortex-M0 is good enough. For crypto computations, Cortex-M3 would be required, though.

  • Use SWD debugging!

Let's improve free software tools for SWD debugging.

  • Design your own PCB by KiCAD!

PCB design is not that difficult. Once you have an experience, you don't need always avoid soldering.