After the success of my previous post regarding my business card that runs Linux on a diminuitive Allwinner F1C100s processor, I have received a ton of good mail about it. I’ve had people tell me they bought some for 61 cents (!) in moderate quantity on Taobao. Some people have asked for samples1. And I’ve had a couple people inquire about freelance work based on this part.
Getting F1C200s samples
In addition to all that, Allwinner kindly reached out to me and provided some samples of the F1C200s, a close cousin of the F1C100s that doubles the in-package RAM to 64MB. They also provided a datasheet and updated reference manual—see the Resources section below to download a copy.
Booting the F1C200s
I decided to just use my business card as a testbed, since I had blank PCBs available. I’ve had some precious free time lately, so I assembled a card using one of these samples:
Based on the datasheets and reference manuals, I suspected that the image I built for my business card would boot with little to no modification; all their peripherals and docs are basically identical.
I flashed it with
which recognized it as an F1C100s; this output is identical to that of the actual F1C100s, so there’s no way to tell which you’re flashing based on FEL mode.
$ sunxi-fel version AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
The card booted all the way through U-Boot into Linux, both of which detected the increased RAM automatically:
U-Boot 2019.04 (Jan 23 2020 - 17:27:09 +0000) Allwinner Technology CPU: Allwinner F Series (SUNIV) Model: George Hilliard's business card DRAM: 64 MiB In: serial@1c25000 Out: serial@1c25000 Err: serial@1c25000 Hit any key to stop autoboot: 0
linuxcard login: root # free total used free shared buff/cache available Mem: 60472 5076 53328 12 2068 52892 Swap: 0 0 0
I now hold the dubious honor of having the only business card in the world with 64MB of RAM.
Because this part is literally a drop-in replacement for the F1C100s, the verdict is that there’s no reason not to use it in projects where you’d otherwise use the F1C100s.
I’m working on getting my work upstreamed, as well as implementing support for the remaining peripherals. Most are easy because they are pretty close copies of other, already supported, peripherals on other Allwinner parts.
F1C-series parts also have a 1080P-capable hardware accelerated H.264 video decoder! Although the reference manual doesn’t contain any info about the accelerator peripheral, I think it’s likely that the accelerator is based on Allwinner’s Cedar architecture. This is based on inspection of a board support package I have for Melis, Allwinner’s proprietary RTOS. Cedar has been reverse engineered by the awesome sunxi community, so you can use Cedar peripherals with a completely open-source stack called Cedrus.
The F1C100s needs some additional work to enable its Cedar peripheral. I’ve asked Allwinner for more info about the F1C100s’s video stack, and I plan to continue working on it in the meantime as well.
All this means that you could be playing 1080P HD video on Linux on a 61-cent chip. Absolutely crazy.
Here’s some F1C200s-specific resources; thanks again to Allwinner for providing these. See also the resources section for my business card, which has things like links to my kernel and U-Boot trees.
- Allwinner F1C200s Datasheet v1.1 gives pinouts and general info
- Allwinner F1C200s User Manual v1.1 gives register definitions and details of the internals
Feel free to reach out if you have a project in mind! ↩︎