novena

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.

Thank you to our supporters! Here's what we'll work on:

Thank you to each and every one of our supporters. I'm honoured by all of the positive talk about the project. Now that the campaign is over and funded, it's time to get started. Or rather, continue our work. If you've seen either bunnie or myself at conferences, you'll have seen us with our own Novenas. Late last year these were in suede clamshells, but lately we've been sporting the SLA-printed aluminium-bezeled prototypes that we'll eventually ship.

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.

Audio driver merged

The es8328 audio codec driver has been accepted by the ASoC maintainer. That means the driver will make its way upstream, and should land in Linus' tree in a few weeks. One more hurdle down on the road to mainstream. This week we'll be focusing on getting more of our patches upstream. We'll be refining both the PWM driver's low-speed mode (which allows us to dim the LCD), as well as the STMPE610, which is a touchscreen chip we use for various bits and bobs such as volume button detection and a resistive touchscreen if users want to add one after market.

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.

Factory test

We're doing the factory runs in batches, since there are multiple configurations of boards. Every board that leaves the factory will start out life as a "bare board", and will have features added to it later on. The factory test itself serves to do two things: Test the board, and load the board's firmware image. Since the firmware is so large and we have multiple cores, the task of writing the firmware is done in the background throughout the test as an "

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.

Desktop Factory Test

We've just shipped the desktop factory test off to the assembly line, and they'll soon begin the process of turning bare boards into desktop models. We ran the initial factory test -- the one I mentioned earlier -- on every board we produced. This first test ensures that the board is assembled correctly, has its own MAC address assigned, and has a root filesystem image. This test performed well, and actually caught an assembly error that prevented the Ethernet test from running.

Clustering Novena

Server clustering is a topic I’ve been cirous about for a rather long time, from back in the Slashdot days where one would constantly “imagine a beowulf cluster of” any given low-powered device. With modern clustering software, such thoughts become practical reality. And with some cardboard, everything goes together nicely. To start with, I cut up some shipping boxes, laid the mainboard on top, and made some marks with a pen.