(can't believe it has been two months since the last posted project log)
Okay, so first up: Is this project dead? Short answer: no. Long answer:
One thing that had been bothering me (until now) was that: since the uC we were using (STM32F030F4P6) and the one we were investigating on (GD32F330F4P6) only has 16kB of flash, how would we support multiple hashing algorithms, especially since the SHA256 firmware already takes up all the flash space? One solution that I did some investigation on was that we'd produce multiple firmwares for different algorithms, and then the appropriate firmware would be flashed upon user's request. This means on each hashing board, the manager uC should be able to flash all worker uCs with the appropriate firmware. However there're multiple shortcomings with this approach:
- Programming has to be done sequentially, for each worker, and this would incur massive startup penalty (since you have to wait for all workers to be flashed)
- I've yet found a way to make it work. Each worker uC needs at least three wires to program them: DIO, CLK, RST. And since a hashing board can accommodate a lot of workers, we'll have to figure out a way to multiplex all those signal lines so that the manager uC can do it.
Because of all these problems, and the fact that I couldn't come up with something else, the project hit the wall basically. Until those problems are solved, there was no incentive to push this project forward.
Which brings us back to today. Remember in the past when I talked about the GD32F330F4P6? It's an ARM Cortex-M4 chip offered by GigaDrive, packaged in the same TSSOP-20 package as the STM32F030F4P6, yet is quite more powerful. When I found out about that chip, I also learned that Gigadrive is also making the GD32F330F8P6, which is basically the F4P6 but with a lot more of flash space, 64kB to be exact. With this lot of flash, I now can pack more algorithms into the firmware, which means I don't have to solve the problem of mass programming anymore. However, at the time when I talked about the GD32F330F4P6 (June 2018), I couldn't found any resellers offering the F8P6 variant. There're only resellers offering the F4P6 one, and I have to buy them via a proxy service. Another dead end, welp.
Not until now. This is September of 2018, and I finally found a dealer selling it internationally, with shipping. Ladies and gentleman, I'd like to introduce LCSC: https://lcsc.com/product-detail/GigaDevice_GD32F330F8P6_C179650.html. They're selling it at $1, which is still less expensive then the STM32F030F4P6. And they even offer cheap shipping to my country at $3. And I can also order PCBs from JCLPCB and have them ship together with my uC from LCSC. Win-win.
So a major issues have been solved, and now let's just cross our fingers and hope that I'd be able to finish the hashing board somewhere in October/November. Um no, I'm just joking. Since we'll be switching to the GD32F330F4P6 now, and no one produces development board for that chip, the first job is to spin a dev PCB for that chip, and then I can work on adding support for that chip in the firmware, and then after that I can work on the hashing board again.