Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1731)

Unified Diff: scripts/newbitmaps/README

Issue 6598046: Add stuff to support new bitmap format. (Closed) Base URL: http://git.chromium.org/git/vboot_reference.git@master
Patch Set: Agree to all changes. PTAL. Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | scripts/newbitmaps/bitmap_viewer » ('j') | scripts/newbitmaps/lib/bmpblock.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/newbitmaps/README
diff --git a/scripts/newbitmaps/README b/scripts/newbitmaps/README
new file mode 100644
index 0000000000000000000000000000000000000000..c5b7c2ba41122c2465869a4cb5cd1ce781434e91
--- /dev/null
+++ b/scripts/newbitmaps/README
@@ -0,0 +1,110 @@
+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.
+ We will need to pad our replacement bmpblock to match the size of the
+ original.
+
+ 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
+
+ Extract the current bmpblock from the BIOS, and see how big it is.
+
+ gbb_utility -g -b oldblob bios.bin
+ ls -l oldblob
+
+ Pad our bmpblock to the same size (for example, 253568 bytes)
+
+ dd if=bmpblock.bin bs=253568 count=1 of=newblob
+
+ Put our bmpblock in our copy of the BIOS
+
+ gbb_utility -s newblob 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
+
+ cd /SOME/SCRATCH/DIR
+ bmpblk_utility -x bmpblock.bin
« no previous file with comments | « no previous file | scripts/newbitmaps/bitmap_viewer » ('j') | scripts/newbitmaps/lib/bmpblock.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698