mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 10:14:57 +00:00
Change-Id: I743060a27ab9d3caeeadde295883a18bdd864a1f BUG=chrome-os-partner:2558 TEST=none Documentation change only. No tests needed. Review URL: http://codereview.chromium.org/6588127
99 lines
3.7 KiB
Plaintext
99 lines
3.7 KiB
Plaintext
This directory contains examples of the new-style BIOS bitmaps, and a simple
|
|
(and ugly) tool to view the configuration file that describes how each
|
|
screen is displayed.
|
|
|
|
Old-style bitmaps:
|
|
|
|
In the Cr-48 BIOS there are four BIOS screens that may be presented to the
|
|
user. Each contains a graphic, a URL, and some informative text. The screens
|
|
are single bitmap images, hardcoded in read-only BIOS (because they have to
|
|
display even when the R/W BIOS and SSD are both completely erased). They can
|
|
be replaced at manufacturing time, but creating the screens is difficult.
|
|
The format is a compressed EFI firmware volume that is generated when the
|
|
BIOS is compiled. The result is an opaque blob that cannot be viewed or
|
|
edited with linux-based tools.
|
|
|
|
|
|
New-style bitmaps:
|
|
|
|
Future BIOSes will continue to display the same basic screens, but using a
|
|
different format. Each screen will have separate bitmaps for the basic
|
|
graphic, the URL, and the informative text, and will be displayed by
|
|
rendering each component in order. This will allow us to modify and replace
|
|
any bitmap (most frequently the HWID), using standard command-line tools
|
|
such as imagemagick. Compositing each screen in this way also means that we
|
|
can easily provide localized BIOS screens or custom messages.
|
|
|
|
|
|
Note:
|
|
|
|
Because the bitmap images and display code is part of the Read-Only BIOS,
|
|
back-porting the new-style bitmaps to older devices is not possible.
|
|
|
|
|
|
Instructions:
|
|
|
|
The bmpblk_utility reads a config file and produces a binary bmpblock. The
|
|
config file lists the individual bitmaps and describes where to place each
|
|
one when displaying each screen. The bmpblock is then written into the BIOS
|
|
image with the gbb_utility. The bitmap_viewer program lets you view the
|
|
composited screens as described by the config file.
|
|
|
|
* First, get the bitmap_viewer working. This is best used OUTSIDE of the
|
|
chroot. Test it by changing to the scripts/newbitmaps/images/1280x800
|
|
directory and running "../../bitmap_viewer unknown.yaml". You may need to
|
|
install some additional packages. For example, on Ubuntu you'll probably
|
|
need to install the "python-yaml" and "python-wxgtk2.8" packages.
|
|
|
|
* Now make changes to the unknown.yaml config file, and use the
|
|
bitmap_viewer to see how the layout looks. Hit Ctrl-R in the small window
|
|
to reload the config file without restarting.
|
|
|
|
* The bitmap_viewer can display images in several different formats, but the
|
|
BIOS is very limited (and may differ between x86 and ARM). For x86, ensure
|
|
that you're using the proper format by converting any new bitmaps with a
|
|
command like this:
|
|
|
|
convert IN.bmp -colors 256 -compress none -alpha off OUT.bmp
|
|
|
|
* When you have the screens tweaked to your satisfaction, generate the
|
|
binary bmpblock to embed into the BIOS.
|
|
|
|
bmpblk_utility -c unknown.yaml bmpblock.bin
|
|
|
|
* Use the gbb_utility to modify the BIOS to contain our new set of bitmaps.
|
|
|
|
NOTE: These commands are run (as root) on the device under test!
|
|
|
|
NOTE: This will only work if the BIOS write-protection is disabled!
|
|
|
|
Copy our new bmpblock over.
|
|
|
|
cd /mnt/stateful_partition
|
|
scp USER@SOMEHOST:/SOMEPATH/bmpblock.bin .
|
|
|
|
Get a copy of the current BIOS.
|
|
|
|
flashrom -r bios.bin
|
|
|
|
Put our bmpblock in our copy of the BIOS
|
|
|
|
gbb_utility -s -b bmpblock.bin bios.bin
|
|
|
|
Reflash the BIOS with the new content
|
|
|
|
flashrom -w bios.bin
|
|
|
|
* Reboot. You should see your new bitmaps appear whenever the BIOS screens
|
|
are displayed. If you have more than one localization, you should be able
|
|
to cycle among them with the arrow keys.
|
|
|
|
* If you want to examine a binary bmpblock that you've pulled from a BIOS
|
|
image, the bmpblk_utility has options to display or unpack the binary.
|
|
|
|
bmpblk_utility bmpblock.bin
|
|
|
|
bmpblk_utility -y bmpblock.bin
|
|
|
|
bmpblk_utility -x -d /SOME/SCRATCH/DIR bmpblock.bin
|