Novena PVT / Senoko DVT

This post is coming to you from Novena PVT, running off of Senoko PVT on battery. In engineering, there are several different versions of pre-release hardware. Novena itself has gone through three: EVT (engineering verification test), DVT (design verification test), and PVT (production verification test). The first revision was very rough, and required several modifications to fix various problems. We weren't sure what we wanted to do with it, so it had a few unusual features.

Pre-Boot enviroment weirdness

The world of early board boot is a weird one. Hard-and-fast rules of programming don't necessarily apply here, and things have an annoying tendency to work only sometimes. I finally revisited the pre-boot environment this week, due in part to bringing up the dual-core version of Novena, which differs from the quad-core version in a few subtle ways. The most obvious difference is the reduced on-chip SRAM size. The quad offers 256 kB of on-chip RAM we can use for bootloader initialization, but the dual only offers 128 kB.

From Chips to a Laptop

There's a certain thrill to board bringup, to be the first person in existence to have code running on a brand-new board. To even get your first "Hello, world!" requires a lot of components to be running correctly. Computers are complicated beasts, but then again they have a great deal of functionality. The one I'm using has four cores that run at 1.2 GHz, high speed RAM that runs at 533 MHz, and a host of hardware peripherals that run at various other frequencies.

Progress report: Sleep, Audio, and Power

It's been a month since my last post, and things are moving along. We've been hard at work improving both the hardware and software. There's a backer update describing much of what we've been up to, and snce I'm working with the kernel I'll go into some detail on the developments of the past month as well as what we're working on now. I'll talk about the three major areas of improvement in the last month: suspend/resume, audio, and power.

Novena progress: RTC, Headphone, Suspend

When designing your own laptop, the most mundane of things become exceptional. When you get something working, life becomes that little bit sweeter. Like cracking your knuckles, or getting that bit of food from between your teeth, getting even the smallest part of the system working well is such a great relief. We got the audio codec upstreamed, as I mentioned before. In earlier versions, we hardcoded the two outputs to be named "

Novena First Run

Right now, I'm in the middle of packaging up various bits and bobs for the final Novena disk image. We have a kernel mostly decided, and we have a base set of packages. Furthermore, we have a script that creates a bootable disk and installs all of the support packages onto it. Creating something you can build has always been a challenge. I've decided to use git-buildpackage, which prepares a Debian package file from a git repo.

Senoko Battery Board as a Device

The Senoko battery board contains an STM32 chip, and runs its own separate operating system. The computer itself has 10 kilobytes of RAM and 64 kilobytes of storage space, where the operating system lives. This operating system is responsible for keeping the battery charged, monitoring the power button, acting as a secondary clock, and acting as a GPIO port expander. Many devices talk to one another using the Inter-Integrated Circuit bus, commonly called I2C.

Trace Together Token: Teardown and Design Overview

On 19 June, GovTech Singapore invited four members of the community to come and inspect their new TraceTogether Token. This token removes the need to carry a phone at all times, and is designed to help both those who do not have a smart device capable of running TraceTogether well, including those using older Android devices, non-smartphones, and iOS users. I was among the group, which also consisted of Roland Turner, Harish Pillay, and Andrew “bunnie” Huang, who were given the opportunity to see the first public revision of hardware.

Precursor + Renode

Precursor is an FPGA-based dev platform for secured applications. The reference design runs a VexRiscv CPU core plus a wide range of peripherals. Developing software for an embedded target can be a challenge in the best of circumstances, and when you’re starting out there is no display, no keyboard, not even a serial port – you might have a blinking LED and a few pads you can probe with an oscilloscope.