It’s been awhile! The last release was almost two years ago. In the intervening time, the Xous ecosystem has sprouted a custom chip, fabricated in TSMC 22 nm and made explicitly for the purpose of running Xous. The chip is called the Baochip-1x, and you are invited to participate in the "Dabao" campaign for evaluation board pre-orders.
Going to custom silicon removes the supply chain hardening benefit of compiling your own FPGA code from scratch, but it greatly reduces the barrier to entry: while Precursor costs about $600, the Dabao sells for about $9. To compensate for the lack of transparency into the physical construction of the chip, the Baochip-1x is packaged in a WLCSP with a polished back-side, facilitating IRIS-style inspection. You can’t check every wire and connection using IRIS, but it’s better than simply trusting that whatever is in a black plastic square contains exactly the chip you were promised, no more, no less.
This release marks the finalization of the boot0/boot1 artifacts for this chip. From the perspective of Precursor users, my goal is for you to notice absolutely no change. Thus, since there are no CVEs or new features relevant to you in this release, it’s safe to skip applying it.
Release Details For Developers
I’m the type of person who likes to run with a stable release on a piece of hardware forever - especially things that are integral to my workflow - so extra effort was put into ensuring that the behavior is identical despite substantial internal upgrades to the kernel.
That being said, here’s a few of the major things that happened in this release, which would be mostly of interest if you’re developing programs for the Precursor platform.
rkyvis upgraded to0.8. This makes serialization of moststdobjects very ergonomic, with the caveat that objects are strictly limited to one page of memory (going over that limit will cause a panic).xous-ipcwas revised to 0.10; this is a breaking change for developers. In particular, thechat-testapplication needs to have its keys deleted and re-generated because the serialization format has changed. Also,xous_ipc::String<N>is fully deprecated.- A number of libraries were refactored and re-organized to allow for a more slimmed down version of the OS. In particular, Baochip targets have fully on-chip RAM and ROM, so it's a step-up in difficulty to flip bits of memory as a physical attacker. This allows us to strip out some of the intermediate servers that are used to hide sensitive services.
blitstr2is now inlibsgam,modals, andgraphics-serverhave been refactored to allow a configuration that does't have the intermediategamlayer. It is also now a little easier to add new screen sizes and frame buffer targets- Swap memory is now a thing. This is not relevant for Precursor users, although it has been tested on the Precursor platform, so if you really need more RAM, you could hack up an external SPI RAM and get more memory.
pddbandroot-keyshave been refactored to support leaner targets. In particular, the key API has been pushed into akeystore-apicrate that allows an entirely new implementation of key stores for the Baochip platform while not breaking backward compatibility for Precursor.- Various small kernel performance issues were fixed, mostly improving performance such as eliminating an extra MMU trip in sharing pages.
- The bootloader was refactored, in particular the argument generation now uses
allocwhich allows for a more auditable, understandable piece of code in that critical section.
These are some of the most significant changes off the top of my head; but in the end, the most significant change of all is the addition of the Bao-1x target. The Bao-1x features a 350MHz Vexriscv, with 2 MiB of RAM and 4 MiB of FLASH, so it’s quite a bit faster than the Precursor. A slimmed-down Xous build and a vscode plugin (search for "baochip" in the extension store!) was also made to help with new developer on-boarding for Xous.
New Ways to Keep in Touch
Finally, for timely updates, we recommend users to join the Baochip discord, or join "the-commit-log" channel on Matrix. We have been posting weekly updates here on progress on Xous.
Going forward, our plan is to keep maintaining compatibility and feature stability for Precursor. I’ll only drop a note to existing Precursor users if there’s a significant update that you should pay attention to or there’s a significant new product announcement.
As for future product plans with Baochip - yes, I have many ideas of what to build! But I only have 24 hours in a day. Progress has been slow but steady, so stay tuned and subscribed if you want to get a note when new products drop.
Happy Hacking,
-bunnie