Can you get 32 level greyscale on an E-ink screen

A quick research shows that all current commercial E-ink devices have a maximum grayscale level of 16. Is it a hardware limitation? Or can we get more grayscales just like we have done on CGA, Commodore 64, GameBoy Color and many other vintage hardwares that have a color limitation?

Well, the answer is yes. See my results :p

Just as said on the screen, happy new year 2018! (The upper right is one in 4bpp mode for reference)

Continue reading

Lichee Pi Zero Getting Started Tutorial

What is Lichee Pi Zero?

Lichee Pi zero is a SD-card size ARM Cortex-A7 development board. It’s designed to be simple and affordable yet expandable and flexible. One can use it as a general compute module to make other things like handheld game consoles, calculators, IoT devices, or even (under powered) laptops. Or one can simply use it to learn ARM/Linux development.

What is on my Lichee Pi Zero?

There is nothing much on the Lichee Pi Zero core board. An Allwinner V3s SoC, a SD card slot, a USB-OTG port, a DPI TFT connector, a breadboard compatible connector, some power related chips, and that is it. Optionally, one can solder a SPI NOR (like W25X64) or a SPI NAND (like GD5F1G, but not yet supported.) on to it.

Continue reading

Allwinner V3s u-boot Compilation & SPI NOR boot

V3s Boot Process:

The first step of booting is an internal 32KB boot ROM(BROM). This is a common practice among ARM processors in order to eliminate external parallel NOR Flash. The BROM would try to load program from external storage (SD/MMC, then SPI NOR, last SPI NAND). This program is called boot0 by Allwinner, but specifically SPL here. If the BROM failed to load this program, it would enter USB boot operation.
The second step is the SPL. The SPL is actually a minimal u-boot with few specific tasks. The SPL would be loaded into V3s’ internal SRAM, and the SPL would do the following things:

  • Initialize Clock/UART/DRAM and boot device (SD/MMC/SPI Flash)
  • Copy the full u-boot from boot device to DRAM
  • Jump to the full u-boot.

The third step is the u-boot, which would load the kernel.

Environment:

OS: Ubuntu MATE 17.04

Board: Lichee Pi Zero (Allwinner V3s, with W25X64 SPI NOR)

Continue reading